Old revision
Revision as of 2022-05-24 22:24
---
parent: ControllerRoot
title: コントローラー製作
date: 2016-12-8
tags: 製作, ラダー回路, 回路, DA変換
---
コントローラ製作に関することについて説明します.
説明の項目は以下のとおりです.
* 部品入手
* 製作
* 説明
* 参考文献
===
# 部品入手
|[部品一覧]
| 部品名 | 個数 |
|-----------|--------------|
| ボタン | ボタンの個数 |
| 10KΩ抵抗 | ボタンの個数 |
| 2KΩ抵抗 | ボタンの個数 + 1 |
| 1KΩ抵抗 | ボタンの個数 - 1 |
| ロジックIC(NOT) | ボタンの個数とICピンに応じて変更 *1 |
*1: 例えば、ボタンの個数が6つでICの入力ピンが6つならば必要なICは1つです。
# 製作
ここではボタンの個数を6つとします.
# スイッチ部分の回路
![スイッチ部分の回路](CURRENT_DIR/Images/Controller/Img1.PNG)
# x0 ~ x5
"複数のスイッチ情報を一つにまとめる回路"にあるy0~y5へそれぞれつなぎます。
詳しく説明すると、合計6個あるボタンにそれぞれ番号―No.0 ~ No.5―をつけるとします.
No.0~No.5のボタンにあるxピンをそれぞれx0,x1,x2,x3,x4,x5と名付けます.
そしてx0ピンをy0ピンに、x1ピンをy1ピンに、x2ピンをy2ピンに、x3ピンをy3ピンに、x4ピンをy4ピンに、x5ピンをy5ピンに接続します.
# 複数のスイッチ情報を一つにまとめる回路(D/A変換)
![DA変換回路](CURRENT_DIR/Images/Controller/Img2.PNG)
# input
Arduinoに接続するピンです.
# 説明
# 概要
複数のスイッチ情報を一つにまとめることができるのはD/A変換のおかげです。
各スイッチのon,off情報をD/A変換でアナログ値に変えます。
このアナログ値―0~5V内の電圧値―をArduinoのanalogRead関数で読み込むことで複数のスイッチ情報を1ピンで読み込むことができます。
# D/A変換
このコントローラーが使っているD/A変換回路はラダー回路^[url1]というものです.
# Arduinoに送られるアナログ値
Arduinoに送られるアナログ値は次の通りです.
$n$: ボタン数 $(n \leq 8)$; デジタル値: $\leq 2^n - 1$
$$アナログ値 = (5V/2^n) \times デジタル値$$
例: ボタンが3つのとき
![ラダー回路](CURRENT_DIR/Images/Controller/Img3.PNG)
|[ビット値と出力電圧の関係]
| RB2 | RB1 | RB0 | デジタル値 | output(アナログ値) |
|-----|-----|-----|-----------|-------------------|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0.625 |
| 0 | 1 | 0 | 2 | 1.250 |
| 0 | 1 | 1 | 3 | 1.875 |
| 1 | 0 | 0 | 4 | 2.500 |
| 1 | 0 | 1 | 5 | 3.125 |
| 1 | 1 | 0 | 6 | 3.750 |
| 1 | 1 | 1 | 7 | 4.375 |
--------------------------------------------------------------------------------
[url1]: [ラダー抵抗回路によるD/A変換の仕組み(accessed: 1.31.2016)](http://homepage3.nifty.com/mitt/pic/pic7_16.html)