# マイクロゲームパッド (micro: Game Pad for micro:bit) 利用マニュアル
# 1. 本ドキュメントの目的
- マイクロゲームパッド (micro: Game Pad for micro:bit) の概要説明
- マイクロゲームパッド (micro: Game Pad for micro:bit) の仕様説明
- マイクロゲームパッド (micro: Game Pad for micro:bit) に関する利用方法の説明
# 2. 概要
マイクロゲームパッド(micro: Game Pad for micro:bit)は、DFRobot社が提供しているマイクロビット(micro:bit)用リモートコントローラです。
マイクロビット(micro:bit)の無線通信機能を利用して、マイクロマクイーン(micro:Maqueen)をはじめとする各種ロボット、ロボットカーをリモートコントロールすることが可能です。
電池ボックス(単4電池×2)がオンボードなので、携帯しやすく、電池の脱着もしやすいです。
micro:GamePad V3.0は、高精度のアナログジョイスティックを採用しています。ジョイスティックとゲームパッドの組み合わせにより、Maqueenなどのロボットカーの方向と速度を同時にコントロールすることができます。さらに、7つのプログラム可能なボタンがありますので、より面白い機能や、より柔軟な操作性を追求することができます。
# 3. 購入方法
本製品は、当社ウェブストアにてご購入が可能です
当社はmicro:bit及びDFRobotの公認正規販売店です。
国内のmicro:bit利用推進を行っております。
micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。
# 4. 特徴・仕様
- 2軸(X-Y)がプログラミング可能なアナログジョイスティックで、ロボットカーの方向と速度を同時に制御できる。
- 6つのボタンがプログラミング可能
- ブザー、振動モーター、LEDを搭載
- 上下にアクリルで保護し、安全に使用でき、快適に扱える
# 5. 規格・付属品
項目 | 詳細 |
---|---|
型番 | PPDF-DFR0536 |
電圧 | 3V DC (単4形電池2本) |
ジョイスティック | アナログ2軸(X:P1 Y:P2) デジタル1軸 (Z:P8) |
LEDと振動モーター | P12 |
オンボードブザー | P0 |
ボタン(KEY) | A(A)、B(B)、C(P13)、D(P14)、E(P15)、F(P16)、Z(P8)( ジョイスティック) |
サイズ | 148mm x 57mm |
重量 | 91g(袋を含む) |
# 6. 物理概要
# 7. 利用方法
# micro:Game Pad(マイクロゲームパッド)を使って、micro:Maqueen(マイクロマクイーン)をコントロール
本利用方法の説明では、micro:Game Pad(マイクロゲームパッド)を使って、micro:Maqueen(マイクロマクイーン)をコントロールする方法を説明します。
参考:micro:Maquenn(マイクロマクイーン)は、当社ウェブストアにてご購入が可能です
当社はmicro:bit及びDFRobotの公認正規販売店です。
国内のmicro:bit利用推進を行っております。
micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。
# 動作イメージ
micro:bit用ゲームパッド(micro:GamePad)のジョイスティックを使って、マイクロマクイーン (micro:Maqueen)をラジコンのように動かします。
※ 本イメージ動画は旧モデルのマイクロゲームパッドです。
注意事項
- マイクロマクイーン (micro:Maqueen)とマイクロゲームパッド(micro:GamePad)には、それぞれ1枚のマイクロビット(micro:bit)を挿入する必要があります。
- それぞれのマイクロビット(micro:bit)に対してプログラミングする必要があります。
- マイクロマクイーン (micro:Maqueen)側のパッケージのインポートは、「8.1. Makecode用パッケージをインポート」の記載の通りで可能です。
- マイクロゲームパッド(micro:GamePad)側は、古いバージョンのパッケージしか用意されていないため、MekeCodeのブロックを使ってプログラミングします。
# MakeCodeプログラミング例(ブロック)
# マイクロマクイーン (micro:Maqueen)側
# マイクロゲームパッド(micro:GamePad)側
# MakeCodeプログラミング例(JavaScript)
# マイクロマクイーン (micro:Maqueen)側
radio.setGroup(1)
let remoteControlTransmissionData = ""
radio.onReceivedString(function (receivedString) {
remoteControlTransmissionData = receivedString
if (remoteControlTransmissionData == "S") {
maqueen.motorStop(maqueen.Motors.All)
basic.showString("S")
} else if (remoteControlTransmissionData == "F") {
maqueen.motorRun(maqueen.Motors.All, maqueen.Dir.CW, 255)
basic.showString("F")
} else if (remoteControlTransmissionData == "B") {
maqueen.motorRun(maqueen.Motors.All, maqueen.Dir.CCW, 255)
basic.showString("B")
} else if (remoteControlTransmissionData == "L") {
maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, 0)
maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, 255)
basic.showString("L")
} else if (remoteControlTransmissionData == "R") {
maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, 255)
maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, 0)
basic.showString("R")
} else {
maqueen.motorStop(maqueen.Motors.All)
}
})
# マイクロゲームパッド(micro:GamePad)側
radio.setGroup(1)
basic.forever(function () {
if (pins.analogReadPin(AnalogPin.P2) > 550 && (pins.analogReadPin(AnalogPin.P1) > 400 && pins.analogReadPin(AnalogPin.P1) < 600)) {
radio.sendString("F")
basic.showString("F")
} else if (pins.analogReadPin(AnalogPin.P2) < 450 && (pins.analogReadPin(AnalogPin.P1) > 400 && pins.analogReadPin(AnalogPin.P1) < 600)) {
radio.sendString("B")
basic.showString("B")
} else if (pins.analogReadPin(AnalogPin.P1) < 450 && (pins.analogReadPin(AnalogPin.P2) > 400 && pins.analogReadPin(AnalogPin.P2) < 600)) {
radio.sendString("L")
basic.showString("L")
} else if (pins.analogReadPin(AnalogPin.P1) > 550 && (pins.analogReadPin(AnalogPin.P2) > 400 && pins.analogReadPin(AnalogPin.P2) < 600)) {
radio.sendString("R")
basic.showString("R")
} else {
radio.sendString("S")
basic.showString("S")
}
})
# MakeCodeプログラミング例(python)
# マイクロマクイーン (micro:Maqueen)側
radio.set_group(1)
remoteControlTransmissionData = ""
def on_received_string(receivedString):
global remoteControlTransmissionData
remoteControlTransmissionData = receivedString
if remoteControlTransmissionData == "S":
maqueen.motor_stop(maqueen.Motors.ALL)
basic.show_string("S")
elif remoteControlTransmissionData == "F":
maqueen.motor_run(maqueen.Motors.ALL, maqueen.Dir.CW, 255)
basic.show_string("F")
elif remoteControlTransmissionData == "B":
maqueen.motor_run(maqueen.Motors.ALL, maqueen.Dir.CCW, 255)
basic.show_string("B")
elif remoteControlTransmissionData == "L":
maqueen.motor_run(maqueen.Motors.M1, maqueen.Dir.CW, 0)
maqueen.motor_run(maqueen.Motors.M2, maqueen.Dir.CW, 255)
basic.show_string("L")
elif remoteControlTransmissionData == "R":
maqueen.motor_run(maqueen.Motors.M1, maqueen.Dir.CW, 255)
maqueen.motor_run(maqueen.Motors.M2, maqueen.Dir.CW, 0)
basic.show_string("R")
else:
maqueen.motor_stop(maqueen.Motors.ALL)
radio.on_received_string(on_received_string)
# マイクロゲームパッド(micro:GamePad)側
radio.set_group(1)
def on_forever():
if pins.analog_read_pin(AnalogPin.P2) > 550 and (pins.analog_read_pin(AnalogPin.P1) > 400 and pins.analog_read_pin(AnalogPin.P1) < 600):
radio.send_string("F")
basic.show_string("F")
elif pins.analog_read_pin(AnalogPin.P2) < 450 and (pins.analog_read_pin(AnalogPin.P1) > 400 and pins.analog_read_pin(AnalogPin.P1) < 600):
radio.send_string("B")
basic.show_string("B")
elif pins.analog_read_pin(AnalogPin.P1) < 450 and (pins.analog_read_pin(AnalogPin.P2) > 400 and pins.analog_read_pin(AnalogPin.P2) < 600):
radio.send_string("L")
basic.show_string("L")
elif pins.analog_read_pin(AnalogPin.P1) > 550 and (pins.analog_read_pin(AnalogPin.P2) > 400 and pins.analog_read_pin(AnalogPin.P2) < 600):
radio.send_string("R")
basic.show_string("R")
else:
radio.send_string("S")
basic.show_string("S")
basic.forever(on_forever)