こんばんは!
今回はテンキーパッドというものを使ってみようと思います。
概要
キーパッドの原理を理解する。
Keypad libraryを使ってテンキーパッドで入力した文字をシリアルモニタで表示する。
使用するもの
・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・テンキーパッド(https://amzn.to/2CiRipV)
テンキーパッドとは
テンキーパッドとは0~9の数字と文字で構成されたキーパッドのことです。
用途としては数値の入力に用いられます。
テンキーパッドが使われている例として、電卓や電話機、また、テレビのリモコンなどがあります。
テンキーパッドの仕組み
今回は下図のような4×4のテンキーパッドを使用します。
各キーの下にはメンブレンスイッチがあり、下図のように各行のスイッチは各行の他のスイッチに接続されています。今回使用するテンキーパッドは4×4のものなので全部で8ピンになります。
スイッチとキーが接続している行と列のピンを検出することで、どのボタンが押されたかを認識することができます。
例として、1が押されたときは図のようにrow1とcol1が反応するため、1番が押されたと認識することができます。
手順
まず、ハード側からやっていきます。
以下の図のように配線します。
これでハード側は終了です。
次にコードを書いていきます。
今回はkeypad library というライブラリを使用します。
こちらからダウンロードすることができるのでこの記事を参考にライブラリをインストールしてください。
インクルードが完了したら次のコードを書き込んでください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <Key.h> #include <Keypad.h> const byte ROWS = 4; //4行のキーパッドを使用 const byte COLS = 4; //4列のキーパッドを使用 char keys[ROWS][COLS] = { //配列を表す {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; //接続するピン番号 byte colPins[COLS] = {5, 4, 3, 2}; Keypad customKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); //キーパッドの初期化 void setup(){ Serial.begin(9600); } void loop(){ char customKey = customKeypad.getKey();//押されたキーを検出 if (customKey){ Serial.println(customKey); } } |
コードの説明をします。
const byte ROWS = 4;
const byte COLS = 4;
で行列の数、ここでは4行4列を示しています。
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}};
はキー番号の配列を示しています。
そして
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
で接続するピン番号、を示し
Keypad customKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
でキーパッドを初期化しています。ここでどんなキーパッドかを決定しています。(何行何列の配列でどのようにキーが配置されているか)
最後に
char customKey = customKeypad.getKey();
で押されたキーを判別しています。
これをマイコンボードに書き込んで、試しに3、8、#、Dのボタンを押して、シリアルモニタを見ると…
というように正しくキーが認識されていることが確認できました。
まとめ
今回はテンキーパッドを使ってみました。
パスワードを入力したり、ゲームをコントロールしたり、様々な用途があるので使えるようになっているといいですね。
また、Keypad libraryは4×4以外のものにも使用できるので便利だと思います。
今回はこれで終わります。
ではまた!