概要
- ブレッドボードを使用して、ボードの使用方法とスイッチ動作について確認した
- ピン番号の指定記述に問題がないか
- 半田付の不備等が原因の問題がないか
不具合発生時の原因切り分けがしやすいようにボード使用時の基本的な部分を理解する。
前提
- ISP1807搭載Microボード を使用
- Arduino IDEを使用した開発環境が準備できている
- ブレッドボード等、動作確認に必要なものが揃っている
- ボードにピンヘッダが半田付されている
- 使用するものの一覧についてはこちら
やったこと
- 前回に引き続き、自作キーボード制作を目指しての作業
- スイッチを使用する回路の基本について調べた
- Arduinoの構文について調べた
- 使用するマイコンボードのピンについて調べた
- 実際に動かして、スイッチが反応することを確認した
回路について
https://manva.hatenablog.com/entry/2021/01/20/175736
上記サイトで図を使用した詳細な説明がされていた。
そこからさらにわからないことを掘り下げた。
VCCは電気の発生源っぽいけどGNDは何?
https://www.seikatsu110.jp/library/electrical/et_short_circuit/22553/
上記サイトの説明がわかりやすかった。
かなりざっくり言うと、電気の終着点みたいな感じ。
Arduinoのピン読み取り時は、ここと繋がったピンはLOWとして読み取られる。
内部プルアップ抵抗
- 今回使用するボードはArduino環境での開発ができるとのことで、内部プルアップ抵抗が存在する
- アクティブローにするときはピンモードの指定を
INPUT_PULLUP
にしたら良い
https://docs.arduino.cc/built-in-examples/digital/InputPullupSerial - とりあえずスイッチを
INPUT_PULLUP
に設定したピンとGNDに接続したら押した時にLOWになる
Arduinoの公式ドキュメントは使用例も載っていてわかりやすかった。
外部に抵抗を置く必要がなくなるので、キーボード制作では内部プルアップ抵抗を使用したアクティブロー回路が一般的っぽい。
Arduinoの構文について
https://www.arduino.cc/reference/en/
上記公式ドキュメントに詳しく記載されている。
ハイ・ローのような状態がどんなものか、ピンモードとはという基本的な部分から書いていた。
今回は以下を使用する。
pinMode
INPUT_PULLUP
LOW
Serial.begin
Serial.print
digitalRead
setup
loop
あとはC++の構文を知っておいた方が良いっぽいけど、なんとなくで進めていって、それでうまく動かない時に詳しく見るようにする。
普段rubyを使用しているので、差が大きくて学習コストが高そう。
動く成果物がモチベーション維持につながるのでとりあえず動かしてみる方針でいく。
動かしてみる
早速動かしてみる。
各ピンとスイッチを接続して、スイッチを押した時にGNDとつながるように回路を作る。
スイッチの幅により連続して設置できなかったので、線がごちゃごちゃしている。
「スイッチを押すとシリアルモニタにLOWとして読み取ったピンの番号が表示される」ことを以下のコードで確認する。
|
|
ボードを見たときにD2
とかA1
のような記載がある部分について、D
の方は数字だけで使用できそうだった。
リセットスイッチがある方からみて右側については、文字列での記載だったのでよくわからなかったからProMicroで使用されている場合を参考に、多分14
から16
なのだろうと思って動かしたら、動いたが、14
と15
の位置は思ってたのと逆だった。A1
とかはそのまま動いたけど、画面上の表示は数字になった。(上のコードで21
となっているところはA0
だった。)
高速でループしているので、ポチッと押しただけでもめっちゃ表示される。
チャタリングとはこのことだろうと実感できたのでよし。
ピン配置について
ボード自体にも記載されているが、細かくて読みづらかったので回路図も確認した。
スイッチサイエンス社の回路図
動かして確認した感じ、ピン指定時は以下の記述でよさそう(リセットボタンのある側から見て)
左側 | 右側 |
---|---|
2 | 21 |
3 | 20 |
4 | 19 |
5 | 18 |
6 | 15 |
7 | 14 |
8 | 16 |
9 | 10 |
その他
MISO
については以下のサイトで詳しく記載されていた。
https://www.asahi-net.or.jp/~gt3n-tnk/SPI1.html
通信に使用するためのものらしい。
まとめ
- スイッチの回路にはアクティブロー、アクティブハイの2種類がある
- 他の人のキーボード処理の実装を見るときは、上記のどちらになっているか意識して見る必要がある
- 実際に動かせたことで、ピン指定の記述方法と通電には問題ないことがわかった
- 配列の中に文字列と数字が混在しているのは違和感があるので、数字に統一した方が良いのか?と言う疑問はあるがどちらでも一応動いたので今後何か不具合があってから考えることにする
- 今回よりも多いスイッチを使用する場合にはキーマトリクスを使用して対応する必要がある