Using and controlling the Button Matrix.
レッスン18"ボタンマトリックスの使用と制御。"をやっていく。
概要を引用
マトリックスボタンは、CrowPiボードの周りに16個の独立したボタンがあるモジュールで、シークレットコードキーパッド、メモリゲーム、または必要なものを制御するなど、幅広いプロジェクトに使用できます。
ボタンの可能性が広いので、どこからでも何でも作れます!
何を学習するか
このレッスンを終了すると、次のことができるようになります。
- ボタンマトリックスがどのように機能し、GPIOピンを介してそれを制御する方法を理解する
何が必要か
- 初期設定後のCrowPiボード
Requires switching modules using the switch
- はい、左側のスイッチ-すべてのピンを上にしてオンにします(センサーの切り替え方法を忘れた場合は、5ページを参照してください)
CrowPi上のボタンマトリックスの位置
ボタンマトリックスの操作
解説の引用
ボタンマトリックスは、それぞれ4つの列と行に組み込まれています。マトリックスの行と列をGPIOピンで構成し、ButtonMatrix()というオブジェクトをボタン変数に初期化します。
その後、ボタンの各ボタンに移動して、クリックされたかどうかを検出できるようになります。
この例では、ボタンが押された場合、activateButton()をアクティブにして、押されたボタン番号を出力します。 このモジュールを変更して、ボタンが押されたかどうかに関係なく、想像できるすべてのことを実行できるようにすることができます。
このレッスンで使用するPythonスクリプトは以下の通り。
Examples/button_matrix.py
import RPi.GPIO as GPIO import time class ButtonMatrix(): def __init__(self): GPIO.setmode(GPIO.BCM) # matrix button ids self.buttonIDs = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] # gpio inputs for rows self.rowPins = [27,22,5,6] # gpio outputs for columns self.columnPins = [13,19,26,25] # define four inputs with pull up resistor for i in range(len(self.rowPins)): GPIO.setup(self.rowPins[i], GPIO.IN, pull_up_down = GPIO.PUD_UP) # define four outputs and set to high for j in range(len(self.columnPins)): GPIO.setup(self.columnPins[j], GPIO.OUT) GPIO.output(self.columnPins[j], 1) (以下、省略) |
例のごとく、GPIO.setmodeとpin番号を修正。
修正後
GPIO.setmode(GPIO.BOARD) # matrix button ids self.buttonIDs = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] # gpio inputs for rows self.rowPins = [13,15,29,31] # gpio outputs for columns self.columnPins = [33,35,37,22] |
このスクリプトを実行して、マトリックスボタンを押すと、対応する数値がターミナル上に表示される。
↑ちなみに、上記のスクリプトの場合、ボタンの番号が、右上から左方向に1、2、・・・と割り振られていて、CrowPiボード上に書かれている番号と異なるので、ちょっと変な感じがする。
ボードに書かれた番号に対応させるには、スクリプトの該当部分を以下のように修正する。
- self.columnPins = [13,19,26,25]