前回は超音波測距モジュールを温度補正して距離を測定してみました。
今回はマトリックスキーパッドを使用してみましょう。
目次
4x4マトリックスキーパッドについて
マトリックスキーパッドは、複数のキーを一つのパッケージに統合したデバイスです。以下は、16個のキーを統合した4×4マトリックスキーパッドの例です。
LEDマトリックスと同様に、4×4キーパッドマトリックスは各行を一つのピンに接続しており、列についても同様です。このように効率的な接続方法により、使用するプロセッサのポート数を減らすことができます。キーパッドマトリックスの内部回路図は下記のとおりです。
使い方はLEDマトリックスと似ています。行または列のスキャン方式を使用して、各キーの位置の状態を行と列によって検出します。たとえば、列のスキャン方式では、まず1列目(Pin1)にローレベル信号を送信し、行5、6、7、8のレベル状態を検出して、キーA、B、C、Dが押されているかどうかを判断します。次に、2、3、4列目に順番にローレベル信号を送信して、他のキーが押されているかどうかを検出します。これにより、すべてのキーの状態を取得できます。
回路図
接続図
コード
/**********************************************************************
Filename : Get Input Characters
Description : Call the Keypad function to set the matrix keyboard and get the value for the matrix keyboard
Auther : www.freenove.com
Modification: 2022/10/25
**********************************************************************/
#include <Keypad.h>
// define the symbols on the buttons of the keypad
char keys[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[4] = {14, 13, 12, 11}; // connect to the row pinouts of the keypad
byte colPins[4] = {10, 9, 8, 18}; // connect to the column pinouts of the keypad
// initialize an instance of class NewKeypad
Keypad myKeypad = Keypad(makeKeymap(keys), rowPins, colPins, 4, 4);
void setup() {
Serial.begin(115200); // Initialize the serial port and set the baud rate to 115200
Serial.println("ESP32S3 is ready!"); // Print the string "UNO is ready!"
}
void loop() {
// Get the character input
char keyPressed = myKeypad.getKey();
// If there is a character input, sent it to the serial port
if (keyPressed) {
Serial.println(keyPressed);
}
}
コンパイル(アップロード)する前にライブラリを追加してください。
プログラミングとしては特筆するところはないと思いますが、今回のライブラリの使い方はこんな感じ、というところでしょうか。
次回はキーパットとサーボを使って、『暗証番号で開くドア』みたいなものを作りましょう!
Project 22.2 暗証番号で開くドア/Keypad Door
前回はマトリックスキーパッドの使い方を学びました。 https://kaneshige.org/?p=618 今回はキーパッドとサーボを使って『暗証番号で開くドア』風のものを作ってみまし...
コメント