膜スイッチモジュールをArduinoで動かします。
目次:
今回の目的
ELEGOOのチュートリアル「膜スイッチモジュール」(英語版の「Membrane switch module」)をチュートリアル通りに動かします。
※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。
膜(メンブレン)スイッチモジュール
「膜スイッチ」と和訳されておりますが、日本語でも「メンブレンスイッチ」で検索した方が情報が見つかりやすいようです(膜:membrane(英語))。
このスイッチは樹脂フィルムに接点や導体パターンをスクリーン印刷して、絶縁フィルムのスペーサと重ねて作ったシート状のスイッチ(シートスイッチ)です。
上部の接点を押し下げることで、下部の接点と接触し、スイッチとして導通します。
安価に大量生産でき、構造的に密閉性が高めやすいので防水・防塵性などの長所があり、電子レンジ、電子ジャーポット、ゲーム機のコントローラー、PC用キーボード等、さまざまな製品の操作スイッチとして利用されております。
今回動かすELEGOOのキット付属品は4×4のキーパッドです。
ケーブルで延びる配線は8本あります。
器材接続
モジュールはArduino直結です。
今回はシリアルモニタをパソコン画面で表示するため、USBをバッテリーではなくパソコンにつなぎます。
スケッチ
スケッチ本文は短いものです(オリジナルのものを少し変えました)。
問題のライブラリ「Keypad.h」の読解は置いて起きます。
#include <Keypad.h>
const byte ROW = 4; //"4行"である("const"により"ROW"上書き不可)
const byte COL = 4; //"4列"である("const"により"COL"上書き不可)
char Keys[ROW][COL] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
}; //キーパッドの文字配列を行列に代入
byte rowPins[ROW] = {9, 8, 7, 6}; //キーパッドの行出力ピンを行列に代入
byte colPins[COL] = {5, 4, 3, 2}; //キーパッドの列出力ピンを行列に代入
Keypad customKeypad = Keypad( makeKeymap(Keys), rowPins, colPins, ROW, COL); //上で代入した各行列をキーパッドの情報として関数に与える
void setup(){
Serial.begin(9600); //9,600bpsでシリアルポートを開く
}
void loop(){
char pushKey = customKeypad.getKey(); //キーパッドで押された文字を取得
if (pushKey){
Serial.print(pushKey); //キーが押された場合、押されたキーをシリアル通信で出力・表示する
}
}
動作
パソコンのArduino IDEの「ツール」→「シリアルモニタ」でウインドウを立ち上げます。
キーパッドの並び通り、左から右に上の行から下の行へと押しました。
入力が正しく表示されているようです。
所感
ライブラリ「Keypad.h」の中味が不明です。
任意のスイッチを押すことで、その行・列間が短絡。
短絡した行・列の組み合わせから、どのキーが押されたのかを検出して出力しているはずなのですが、ライブラリを読解するには至りませんでしたし、チュートリアルの文書にも記載はありません。
気にならないでもありませんが、これも「チュートリアル」。立ち止まらずにLessonを先に進めることにします。
0 件のコメント:
コメントを投稿