Micro:bit、Micropython、ジョイスティックでLDEディスプレイのカーソルを移動する
ジョイスティック
ジョイスティックは、操作レバーの傾きで方向を入力する入力機器です。操作レバーの傾きは、可変抵抗で角度を検出します。また、操作レバーはスイッチになっている場合もあります。
ジョイスティックモジュール
ここでは、KEYESTUDIO製のBBC Micro: bitのスターターキットにあるジョイスティックモジュールを使用します。
他メーカーのジョイスティックモジュールを購入するときは、 周辺回路にご留意してください。
インターフェース
操作レバーの傾きで方向は、本モジュールからMicro: bitへのアナログ信号で入力します。また、ボタンはデジタル信号で入力します。
MicropythonとMicro:bit
サンプルソフトを以下に説明します。
フロー
サンプルプログラムのフローを以下に示します。
- レバーの傾きを入力
- レバーの押した状況を入力
- レバーの傾きの角度をLEDディスプレイの座標に変換
- もしレバーが押されているとき、LEDディスプレイに「YES」を表示
- そうでないとき、LEDディスプレイの座標にカーソルを表示
接続
接続表と接続図(写真)を示します。
Micro:bit | モジュール |
P0 | X |
P1 | Y |
P2 | B |
3V | + |
GND | - |
コード
from microbit import * # Micro:bitを初期化 display.clear() # LCEディスプレイを初期化. pin2.set_pull(pin2.NO_PULL) # ピンの状態 while True: x_data = pin0.read_analog() y_data = pin1.read_analog() z_data = pin2.read_digital() led_x = x_data // 200 led_y = y_data // 200 if led_x >= 5: led_x = 4 if led_y >= 5: led_y = 4 print('x:%d y:%d z:%d' % (led_x, led_y, z_data)) display.clear() if z_data: display.show(Image.YES) else: display.set_pixel(led_x, led_y, 9) sleep(500)
結果
レバーを傾けた方向にあわせて、LEDディスプレイのカーソルが移動します。また、レバーを押したとき、YES(チェックマーク)が表示します。
他メーカーのジョイスティックモジュールを購入するときは、 周辺回路にご留意してください。