【Raspberry Pi Pico】4*4Keypadの入力ボタンを読み取る方法

keypad-top Raspberry Pi

本記事の内容

Raspberry Pi Picoと4*4メンブレンキーパッド(Keypad)を使用して、MicroPythonでKeypadに入力された値を読み取る方法を解説します。

必要なもの

  • Raspberry Pi Pico
  • 4*4メンブレンキーパッド(Keypad)

4*4メンブレンキーパッド(Keypad)は、Freenove Raspberry Piスターター キットに付属していたものになります。Keypad単品ではなかなか売っておらず、ネットで購入するにはaliexpressなどしかありません。

created by Rinker
Raspberry Pi
¥970 (2024/07/24 10:34:11時点 Amazon調べ-詳細)
Freenove UNOボード付きRFIDスターターキットV2.0 Arduino IDEと互換性あり 、266ページの詳細なチュートリアル、198アイテム、49プロジェクト、プログラミングと電子機器の学習

Keypadの仕組み

押下されたKeypadのボタン位置を読み取る仕組みは少々ややこしいですが、理論さえわかれば大体理解できます。

Keypadから伸びている8ピンのうち、4本は横の列、残り4本は縦の列に繋がります。Keypadが押されると、該当する縦横の列が導通します。

図のように横の列にGPIOピンから順番に電流を流し、縦の列のGPIOピンで入力値を読み取ると、押されたボタンが一意に特定できるという仕組みになります。

配線

Raspberry Pi PicoとKeypadの配線は、適当なGPIOピンに繋げばOKです。Raspberry Pi PicoではGNDが4ピンおきに存在するので、配線がまっすぐにならず少々面倒ですね。

SSD1306有機ELディスプレイもRaspberry Pi Picoに繋いでいますが、今回は使用しません。

プログラムコード

プログラムコードはややこしくなるので、先人方の功績をお借りします。Githubに4 x 4 Matrix Keypad用のコードが公開されているので、私はこちらを拝借しました。

以下の部分を、Raspberry Pi Picoで繋いだGPIOピンに調整するだけです。

# PINs according to schematic - Change the pins to match with your connections
keypad_rows = [9,8,7,6]
keypad_columns = [5,4,3,2]

実行結果とまとめ

無事にKeypadで押下したボタンの入力値をMicroPythonで取得することができました。

シンプルな配線なのでエラーは起こりにくいです。実際に押したボタンと画面上の入力値が一致しない場合は、MicroPython繋いだGPIOピンを正しく記載できているか見直してみてください。

コメント