目次 このページのソースコードを表示

コントローラー製作

公開日:
更新日:

コントローラ製作に関することについて説明します. 説明の項目は以下のとおりです.

  • 部品入手
  • 製作
  • 説明
  • 参考文献

部品入手

部品一覧
部品名 個数
ボタン ボタンの個数
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変換)

DA変換回路
DA変換回路

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

  1. ^ ラダー抵抗回路によるD/A変換の仕組み(accessed: 1.31.2016)
「https://contentsviewer.work/Master/Arduino/ControllerMake」から取得