注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
4.2 - 4x4キーパッド
4x4キーボード、またはマトリックスキーボードは、一つのパネル内で排除された16個のキーのマトリックスです。
キーパッドは、主にデジタル入力が必要なデバイス、例えば電卓、テレビのリモートコントロール、押しボタン式の電話、自動販売機、ATM、組み合わせロック、デジタルドアロックなどで見られます。
このプロジェクトでは、押されたキーを特定し、関連するキー値を取得する方法を学びます。
必要な部品
このプロジェクトには、以下の部品が必要です。
全体のキットを購入するのが便利です。リンクはこちら:
名前 |
このキットに含まれるアイテム |
購入リンク |
|---|---|---|
ケプラーキット |
450以上 |
以下のリンクから個々にも購入できます。
SN |
部品紹介 |
個数 |
購入リンク |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
4(10KΩ) |
||
6 |
1 |
回路図

4つのプルダウン抵抗がマトリックスキーボードの各列に接続されています。これにより、キーが押されていないときにG6〜G9が安定したローレベルを取得します。
キーボードの行(G2〜G5)は、高い状態にプログラムされています。G6〜G9のうちの1つが高い状態で読み取られた場合、どのキーが押されたかを知ることができます。
例えば、G6が高い状態で読み取られた場合、数字キー1が押されています。これは、数字キー1の制御ピンがG2とG6であり、数字キー1が押されたときにG2とG6が接続され、G6も高い状態になるためです。
配線

配線を簡単にするために、上記の図では、マトリックスキーボードの列と10K抵抗が、同時にG6〜G9の位置にある穴に挿入されています。
コード
注釈
ファイル
4.2_4x4_keypad.inoは、kepler-kit-main/arduino/4.2_4x4_keypadのパスで開くことができます。またはこのコードを Arduino IDE にコピーペーストしてください。
アップロード ボタンをクリックする前に、ボード(Raspberry Pi Pico)と正確なポートを選択してください。
Adafruit Keypadライブラリがここで使用されます。このライブラリは Library Manager からインストールできます。
プログラムが実行された後、シェルはキーパッドで押したキーを出力します。
仕組み
ライブラリのインクルード
最初に、キーパッドとのインターフェースを簡単にするための
Adafruit_Keypadライブラリをインクルードします。#include "Adafruit_Keypad.h"
キーパッドの設定
const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; byte rowPins[ROWS] = { 2, 3, 4, 5 }; byte colPins[COLS] = { 8, 9, 10, 11 };
ROWSとCOLS定数は、キーパッドの行と列の数を定義します。keysはキーパッドの各ボタンのラベルを保持する2次元配列です。rowPinsとcolPinsは、キーパッドの行と列に接続されたArduinoのピンを保持する配列です。
キーパッドの初期化
Adafruit_KeypadのインスタンスmyKeypadを作成し、それを初期化します。Adafruit_Keypad myKeypad = Adafruit_Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
setup() 関数
シリアル通信とカスタムキーパッドを初期化します。
void setup() { Serial.begin(9600); myKeypad.begin(); }
メインループ
キーイベントをチェックし、それをシリアルモニターに表示します。
void loop() { myKeypad.tick(); while (myKeypad.available()) { keypadEvent e = myKeypad.read(); Serial.print((char)e.bit.KEY); if (e.bit.EVENT == KEY_JUST_PRESSED) Serial.println(" pressed"); else if (e.bit.EVENT == KEY_JUST_RELEASED) Serial.println(" released"); } delay(10); }