コントローラー製作
公開日:
更新日:
コントローラ製作に関することについて説明します. 説明の項目は以下のとおりです.
- 部品入手
- 製作
- 説明
- 参考文献
部品入手
部品名 | 個数 |
---|---|
ボタン | ボタンの個数 |
10KΩ抵抗 | ボタンの個数 |
2KΩ抵抗 | ボタンの個数 + 1 |
1KΩ抵抗 | ボタンの個数 - 1 |
ロジックIC(NOT) | ボタンの個数とICピンに応じて変更 *1 |
*1: 例えば、ボタンの個数が6つでICの入力ピンが6つならば必要なICは1つです。
製作
ここではボタンの個数を6つとします.
スイッチ部分の回路
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変換)
input
Arduinoに接続するピンです.
説明
概要
複数のスイッチ情報を一つにまとめることができるのはD/A変換のおかげです。各スイッチのon,off情報をD/A変換でアナログ値に変えます。このアナログ値―0~5V内の電圧値―をArduinoのanalogRead関数で読み込むことで複数のスイッチ情報を1ピンで読み込むことができます。
D/A変換
このコントローラーが使っているD/A変換回路はラダー回路[1]というものです.
Arduinoに送られるアナログ値
Arduinoに送られるアナログ値は次の通りです.
$n$: ボタン数 $(n \leq 8)$; デジタル値: $\leq 2^n - 1$
$$アナログ値 = (5V/2^n) \times デジタル値$$
例: ボタンが3つのとき
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 |