完全自作キーボードへの道3:キーはひとつでも完全自作キーボード編
前回はLチカという、Arduinoにおける最初の一歩を踏み出せましたので、今回も自作キーボードのための勉強を進めていきたいと思います。
教科書は引き続きゆかり氏のこちら。ソースコードや配線など、必要な情報が揃っています。ありがたや。
オリジナルキーボードを作ってみる その4「Arduino入門編」
http://eucalyn.hatenadiary.jp/entry/original-keyboard-04
ソースコードはLチカからそれほど変わりませんが、今回はいよいよブレッドボードとジャンパーワイヤを使った回路を作る必要がありました。
電子回路はまったくわかりませんが、「スイッチを押すとArduino本体にあるLEDが光る」というのは下記のような仕組みで動いているようです。
- Arduinoの5Vのピンからスタート、スイッチを経由して、3番ピンへ繋いでいる。
- 5Vからは常にHIGHが送信されている
- スイッチが押されていると、そのHIGHが3番ピンへ到着。
digitalRead(3) == HIGH
がtrue
となる。 - これだけだとスイッチを押してない場合に、3番ピンにHIGHもLOWも来ないのがよろしくないらしい。
- そこでGNDから抵抗を挟んで3番ピンへ繋ぐ。これでスイッチが押されていない(スイッチ側の経路がない状態)の時は確実にLOWが3番ピンに到着する。
なんとなく理屈はわかりますが、基礎がわかってない素人の疑問としては「GNDはLOWだから抵抗を挟まずただ線で繋げば良いのではないか」と思いました。
もちろんダメで、その答えは「それだとスイッチが押されているときにヤバイ」です。スイッチが押されていると5VからのHIGHが3番ピンと、分岐してつながっているGNDの方にも来ます。この時に抵抗がないと5VがそのままGNDに行ってしまうので、それを防いでGNDでは0になるよう、抵抗を挟むらしいです。
大前提として、回路がGNDに到着するときには色々消費して0Vにする、というのがあるようです。
Yahoo知恵袋が初めてガチで役に立ちました。感謝。
プルダウン抵抗について、どうせGNDにつなげるのにそこに抵抗をつけて電流制… – Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1270458587
頭で理解するのに苦労してますが、回路とソースコードは単純なので、そのまま作れば全く問題なく動きました。違う動きを試すために上記GIFアニメでは「押すと消える」になっています。
そのまま1キーのキーボードにする、というのも問題ありませんでした。
オリジナルキーボードを作ってみる その5「とりあえず1キーキーボード」 – ゆかりメモ
http://eucalyn.hatenadiary.jp/entry/original-keyboard-05
ArduinoではKeyboardというライブラリを使うとキーボードの動きを作れるみたいですね。同様にMouseというライブラリもあり、回路とプログラムをしっかり作れば、ありとあらゆるスイッチ類をキーボードとマウスにできるわけです。ミサイルスイッチでCtrl+Alt+Delを押せるデバイスとか、夢はひろがりんぐですね!
Arduino – MouseKeyboard
https://www.arduino.cc/en/Reference/MouseKeyboard
もう一つ覚えたのは、シリアルモニタの使い方です。デバッグコンソールのようなもので、Arduino IDEのツールメニュー内にある「シリアルモニタ」を選択すると、ウィンドウが表示されます。ショートカットはCtrl+Shift+Mです。
プログラムからこのウィンドウに対してログを表示するには、setupメソッド内でSerial.begin(9600);
を呼び出しておき、ログを表示したいタイミングでSerial.println("Hello world");
などとします。9600という数字は、シリアル通信の転送レートとありました。よくわからないので教科書通り9600とします。
こんな感じでうまくいってはいますが、GNDをしっかり理解できたのかちょっと怪しいです。何か間違っていたら教えてくださると助かります……
それにしても、キーは一つだけとは言え、既に「完全自作キーボード」ができたと言えなくもないです!
物理的なデバイスを自分で作ったのです!これは感動しますよ!!
次はこのキーをどんどん増やしていきます。Arduino楽しい~♪
これまでの完全自作キーボードへの道はこちらです。
http://romly.com/archives/tag/build-my-own-keyboard
1件のコメント