Pro Micro で手軽にキーボードを作る ハードウェア編 1. キーボードの動作原理を知る
Pro Micro で手軽にキーボードを作る ハードウェア編 1. キーボードの動作原理を知る
/icons/hr.icon
キーボードがなぜ動くか(雑な説明)
Pro Micro の端子にキーが1つだけつながっている状態を考える.キーを押すと,次のことが起こる.
1. Pro Micro がキーの状態(押されている/いない)を1秒間に数百回以上読み取っている.
2. キーが押されると,キーが押されている間,スイッチの接点間が接続されて電気が流れて.これを Pro Micro が読み取る.
3. パソコンが Pro Micro と通信して,キーが押されたことを認識する.
https://gyazo.com/fe40326a37e2f075d029f0b0b1ab86a7
以下では,次のようなことを説明する.
キーの状態とは何か
キーの状態をどうやって読み取るか
/icons/hr.icon
キーの状態とは何か
キーを押すと回路がつながる.離すと回路が切れる.
つながっている回路には電流が流れる.切れている回路には電流が流れない.これを利用して状態を読み取る.
電流が流れると電圧が生じる(オームの法則!)
https://gyazo.com/8a8f8f79fb77ae0cfc326ca8f8a87777
/icons/hr.icon
キーの状態をどうやって読み取るか
何ができるか
Pro Micro のピンは,以下のようなことができる.ただし,使える電圧は2種類だけ(0Vと5V)※.
ピンの位置での電圧を読み取る.このとき,ピンは入力という
ピンの電圧を上げ下げする/変化させる.このとき,ピンは出力という
ピンをプルアップする(後述)
入力 (in) 出力 (out) などいろんなことに使える (general purpose) ので GPIO (General Purpose I/O) という※.
※:かなり雑な説明をしたので,厳密にはデータシートを見ること
電圧の読み取り
まず,A2ピンを入力に設定したとする.
このとき,電圧が高い (H ← High) か低い (L ← Low) かを判定できる.
電圧は GND 端子との差を測る.
https://gyazo.com/1c2dfacccdda36dea4074f717ca88d84
図のように,GNDから測って5Vくらい,0Vくらいの何かがあるとする.これにA2ピンを接続すると,Pro Micro は A2 ピンをそれぞれ H, L と判定する.
Q. じゃあ2.5Vとかは……?
A. そんな変な電圧をかけてはいけません.Pro Micro が読み取れる電圧だけをかけることが大事.
Q. 繋がっていない回路はH?L?
A. どちらでもない状態です。なので、Pro Microで読み取ることは出来ません。どちらかの状態を保ちましょう。
電圧の書き込み
次に,A0ピンを出力に設定したとする.
このとき,電圧が高い (H ← High) か低い (L ← Low) かを設定できる.
電圧は GND 端子から測る.
https://gyazo.com/7bb8354042bea225fd093e5eb7ee9d29
A0ピンをHにすると,A0ピンはGNDから測って5Vになる.LにするとA0ピンは0Vになる.
ピンのプルアップ
下の図で▽は GND (0Vの点)を表す記号.
https://gyazo.com/8311813cc8edb78c24b21b5a8c0475bc
電圧を読み取るとき,読み取りたいピンの根元を抵抗を介して5Vにつないでおくことがある.これをプルアップという.
この回路を使うと,読み取りたいピンが以下の状態のどちらかであることを判定できる.
プルアップ抵抗以外何もつながっていない,または5Vに繋がっている
GNDに繋がっている
Q. 読み取りたいピンを 5V と GND に同時に繋いだらどうなりますか?
A. 電源どうしがショートします.絶対にやめましょう.
つまり,プルアップ抵抗を使うと,スイッチが押されているかどうかを判定できる.
スイッチが押されていない場合,プルアップ抵抗以外何もつながっていない状態になる.
スイッチが押されている場合,GNDに繋がっている状態になる.
https://gyazo.com/3631b161ce4d2ed8445903245360d9f8
Pro Micro の GPIO には弱いプルアップ抵抗が内蔵してあり,ソフトウェア的に付け外しできる.
このため,キーを読み取る分には外付けの抵抗は必要ない.
あとはこれを読み取ってパソコンと通信すれば Pro Micro を1キーのキーボードとして使えることになる.
まとめ
Pro Micro は H/L 2種類の電圧を判定・出力できる.
プルアップ抵抗を使うと,片方がGND,もう片方がGPIOピンにつながったスイッチが押されたかどうかを判定できる.
/icons/hr.icon
Q. よくある自作キーボードには数十個のキーがありますが Pro Micro ではピンが足りないのでは?
A. キーマトリクスというものを使います.説明が長くなるのでそのうち書きます.