5.2.1 方向指示器
5.2.1.1 概要

ジョイスティックを操作すると、ドットマトリックスにリアルタイムで対応する方向(左、右、上、下)の矢印が表示され、明確な方向参照が得られます。

5.2.1.2 コンポーネント知識

Micro:bit ドットマトリックス:

micro:bitボードのLEDドットマトリックスは、合計25個の発光ダイオードで構成されており、5個のグループがX軸とY軸に対応し、5×5のマトリックスを形成しています。それぞれが行(X)と列(Y)の交点に配置されています。座標点を設定することで、1つまたは複数のLEDを制御できます。
ジョイスティック:
|
|
|---|---|
実物 |
回路図 |
このジョイスティックの内部コア構造は、それぞれ10KΩの抵抗値を持つ2つの調整可能な抵抗器(ポテンショメータ)で構成されています。
マイクロコントローラーのADCアナログピンを介してプッシュの方向(および振幅)を検出し、対応する次元のアナログ電気信号を出力します。実際の信号読み取り中、ジョイスティックのX軸とY軸のアナログ値が450〜600の範囲内で検出された場合、ジョイスティックがアクティブな操作なしにニュートラル(静止)状態にあると判断できます。

5.2.1.3 必要な部品
|
|
|
|---|---|---|
micro:bit V2 ボード (自己調達) ×1 |
micro:bit スマートゲームパッド (組み立て済み) ×1 |
単4電池 (自己調達) ×4 |
5.2.1.4 コードフロー

5.2.1.5 テストコード
⚠️ 以下のコードにはゲームパッドのMicroPythonライブラリが含まれています。ジョイスティックの感度は必要に応じて調整できます。
完全なコード:
from microbit import *
import utime
# Define the threshold for joystick movement
JOYSTICK_THRESHOLD = 200
# Initialize display
display.show(Image.HOUSE)
while True:
# Read analog values from joystick X and Y axes
x_value = pin1.read_analog()
y_value = pin2.read_analog()
# Determine direction based on joystick values
if x_value < 512 - JOYSTICK_THRESHOLD: # Left
display.show(Image.ARROW_WEST)
elif x_value > 512 + JOYSTICK_THRESHOLD: # Right
display.show(Image.ARROW_EAST)
elif y_value < 512 - JOYSTICK_THRESHOLD: # Up
display.show(Image.ARROW_NORTH)
elif y_value > 512 + JOYSTICK_THRESHOLD: # Down
display.show(Image.ARROW_SOUTH)
else: # Neutral
display.show(Image.HOUSE)
utime.sleep_ms(100)

簡単な説明:
① micro:bit LEDマトリックスを初期化して
を表示させます。
from microbit import *
import utime
# Define the threshold for joystick movement
JOYSTICK_THRESHOLD = 200
# Initialize display
display.show(Image.HOUSE)
② X軸とY軸の値を読み取り、操作方向を決定します。検出された場合、マトリックスは対応する矢印を表示します。そうでない場合、
を表示します。
while True:
# Read analog values from joystick X and Y axes
x_value = pin1.read_analog()
y_value = pin2.read_analog()
# Determine direction based on joystick values
if x_value < 512 - JOYSTICK_THRESHOLD: # Left
display.show(Image.ARROW_WEST)
elif x_value > 512 + JOYSTICK_THRESHOLD: # Right
display.show(Image.ARROW_EAST)
elif y_value < 512 - JOYSTICK_THRESHOLD: # Up
display.show(Image.ARROW_NORTH)
elif y_value > 512 + JOYSTICK_THRESHOLD: # Down
display.show(Image.ARROW_SOUTH)
else: # Neutral
display.show(Image.HOUSE)
utime.sleep_ms(100)
5.2.1.6 テスト結果

コードを書き込んだ後、micro:bitボードをゲームパッドのスロットに挿入し(電池が取り付けられていることを確認)、「ON」に切り替えます。
ゲームパッドのジョイスティックを操作すると、マトリックスに対応する矢印が表示されます。指を離して中央に戻すと、マトリックスに家のアイコンが表示されます。

ヒント: ボードが応答しない場合は、micro:bitボードの背面にあるリセットボタンを押してください。





