# 14. マイクロマックイーン プラス V2(micro:Maqueen plus V2) 無線ゲームパットでのコントロール
# 14.1. 目標
micro:bit用ゲームパッド(micro:GamePad)を使って、マイクロマックイーン プラス V2 (micro:Maqueen plus V2)をコントロールするためのプログラミング方法を把握します。
# 14.2. 必要な機材
# PC利用時に必要な機材
No. | 名称 | 個数 | HW/SW | 用途 |
---|---|---|---|---|
01 | マイクロビット セレクト ベースキット (opens new window) | 1 | HW | マイクロマックイーンのコントロール用とプログラミング |
02 | マイクロマックイーン プラス V2(micro:Maqueen Plus V2) (opens new window) | 1 | HW | 車体本体 |
03 | 単3型乾電池 | 4 | HW | マイクロマックイーン プラスとmicro:bitへの電源供給 |
04 | Chromebook、MacOS、WindowsのPC | 1 | HW | MakeCode操作用 |
05 | Google Chrome | 1 | SW | MakeCodeアクセス用 |
06 | マイクロゲームパッド(マイクロビット用)(micro: Game Pad for micro:bit) (opens new window) | 1 | HW | 赤外線信号発信用 |
# タブレット・スマートフォン利用時に必要な機材
No. | 名称 | 個数 | HW/SW | 用途 |
---|---|---|---|---|
01 | マイクロビット セレクト ベースキット (opens new window) | 1 | HW | マイクロマックイーンのコントロール用とプログラミング |
02 | マイクロマックイーン プラス V2(micro:Maqueen Plus V2) (opens new window) | 1 | HW | 車体本体 |
03 | 単3型乾電池 | 4 | HW | マイクロマックイーン プラスとmicro:bitへの電源供給 |
04 | タブレット・スマートフォン | 1 | HW | micro:bitアプリ操作用 |
05 | micro:bit アプリ | 1 | SW | micro:bitプログラミング用 |
06 | マイクロゲームパッド(マイクロビット用)(micro: Game Pad for micro:bit) (opens new window) | 1 | HW | 赤外線信号発信用 |
参考:マイクロゲームパッド (micro:Game Pad)は、当社ウェブストアにてご購入いただけます。
当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。
micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。
# 14.3. 動作イメージ
micro:bit用ゲームパッド(micro:GamePad)のジョイスティックを使って、マイクロマックイーン プラス V2 (micro:Maqueen plus V2)をラジコンのように動かします。
※ 本イメージ動画は旧モデルのマイクロゲームパッドです。
注意事項
- マイクロマックイーン プラス V2 (micro:Maqueen plus V2)とマイクロゲームパッド(micro:GamePad)には、それぞれ1枚のマイクロビット(micro:bit)を挿入する必要があります。
- それぞれのマイクロビット(micro:bit)に対してプログラミングする必要があります。
- マイクロマックイーン プラス V2 (micro:Maqueen plus V2)側のパッケージのインポートは、「3.1. Makecode用パッケージをインポート」 (opens new window)の記載の通りで可能です。
- マイクロゲームパッド(micro:GamePad)側は、MekeCodeのブロックを使ってプログラミングします。
# 14.4. プログラミング例
# MakeCodeプログラミング例(サンプルプログラムの画像)
# マイクロマックイーン プラス V2 (micro:Maqueen plus V2)側
# マイクロゲームパッド(micro:GamePad)側
# MakeCodeプログラミング例(サンプルプログラムのリンク)
# マイクロマックイーン プラス V2 (micro:Maqueen plus V2)側
https://makecode.microbit.org/_Vep859Ptd0bT (opens new window)
# マイクロゲームパッド(micro:GamePad)側
https://makecode.microbit.org/_PiLUDA1zTUU9 (opens new window)
# MakeCodeプログラミング例(JavaScript)
# マイクロマックイーン プラス V2 (micro:Maqueen plus V2)側
radio.onReceivedString(function (receivedString) {
if (receivedString == "F") {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.AllMotor, maqueenPlusV2.MyEnumDir.Forward, 250)
basic.showString("F")
} else if (receivedString == "B") {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.AllMotor, maqueenPlusV2.MyEnumDir.Backward, 250)
basic.showString("B")
} else if (receivedString == "L") {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.LeftMotor, maqueenPlusV2.MyEnumDir.Forward, 0)
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.RightMotor, maqueenPlusV2.MyEnumDir.Forward, 250)
basic.showString("L")
} else if (receivedString == "R") {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.LeftMotor, maqueenPlusV2.MyEnumDir.Forward, 250)
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.RightMotor, maqueenPlusV2.MyEnumDir.Forward, 0)
basic.showString("R")
} else if (receivedString == "S") {
maqueenPlusV2.controlMotorStop(maqueenPlusV2.MyEnumMotor.AllMotor)
basic.showString("S")
} else {
maqueenPlusV2.controlMotorStop(maqueenPlusV2.MyEnumMotor.AllMotor)
}
})
radio.setGroup(1)
# マイクロゲームパッド(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)
# マイクロマックイーン プラス V2 (micro:Maqueen plus V2)側
def on_received_string(receivedString):
if receivedString == "F":
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.ALL_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
250)
basic.show_string("F")
elif receivedString == "B":
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.ALL_MOTOR,
maqueenPlusV2.MyEnumDir.BACKWARD,
250)
basic.show_string("B")
elif receivedString == "L":
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.LEFT_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
0)
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.RIGHT_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
250)
basic.show_string("L")
elif receivedString == "R":
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.LEFT_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
250)
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.RIGHT_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
0)
basic.show_string("R")
elif receivedString == "S":
maqueenPlusV2.control_motor_stop(maqueenPlusV2.MyEnumMotor.ALL_MOTOR)
basic.show_string("S")
else:
maqueenPlusV2.control_motor_stop(maqueenPlusV2.MyEnumMotor.ALL_MOTOR)
radio.on_received_string(on_received_string)
radio.set_group(1)
# マイクロゲームパッド(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)