本記事の内容
Raspberry Pi Picoと4*4メンブレンキーパッド(Keypad)を使用して、MicroPythonでKeypadに入力された値を読み取る方法を解説します。
必要なもの
- Raspberry Pi Pico
- 4*4メンブレンキーパッド(Keypad)
4*4メンブレンキーパッド(Keypad)は、Freenove Raspberry Piスターター キットに付属していたものになります。Keypad単品ではなかなか売っておらず、ネットで購入するにはaliexpressなどしかありません。
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ピンを正しく記載できているか見直してみてください。
コメント