# マイクロマクイーン ライト(micro:Maqueen Lite)無線ゲームパットでのコントロール
# 13.1 目標
micro:bit用ゲームパッド(micro:GamePad) (opens new window)を使って、マイクロマクイーン ライト(micro:Maqueen Lite)のコントロールするためのプログラミング方法を把握します。
# 13.2 必要な機材
# PC利用時に必要な機材
No. | 名称 | 個数 | HW/SW | 用途 | 補足 |
---|---|---|---|---|---|
01 | micro:bit(v2)本体 | 1 | HW | マイクロマクイーンのコントロール用とプログラミング | - |
02 | micro:bit保護ケース | 1 | HW | micro:bit保護 | - |
03 | micro:bit用 USBケーブル | 1 | HW | micro:bitとPCの接続 | - |
03 | マイクロマクイーン ライト(micro:Maqueen Lite) | 1 | HW | 車体本体 | - |
04 | 単4型乾電池 | 3 | HW | マイクロマクイーンとmicro:bitへの電源供給 | - |
05 | Chromebook、MacOS、WindowsのPC | 1 | HW | MakeCode操作用 | - |
06 | Google Chrome | 1 | SW | MakeCodeアクセス用 | - |
07 | USB変換アダプタ | 1 | HW | PC接続用 | PCのUSBポートがType-Cのみの場合、TypeC ⇄ TypeA変換アダプタが必要 |
08 | マイクロ ゲーム パッド(micro:bit用)(micro:GamePad) (opens new window) | 1 | HW | 車体コントロール用 | - |
# タブレット・スマートフォン利用時に必要な機材
No. | 名称 | 個数 | HW/SW | 用途 | 補足 |
---|---|---|---|---|---|
01 | micro:bit(v2)本体 | 1 | HW | マイクロマクイーンのコントロール用とプログラミング | - |
02 | micro:bit保護ケース | 1 | HW | micro:bit保護 | - |
03 | マイクロマクイーン ライト(micro:Maqueen Lite) | 1 | HW | 車体本体 | - |
04 | 単4型乾電池 | 3 | HW | マイクロマクイーンとmicro:bitへの電源供給 | - |
05 | タブレット・スマートフォン | 1 | HW | micro:bitアプリ操作用 | - |
06 | micro:bit アプリ | 1 | SW | micro:bitプログラミング用 | - |
07 | マイクロ ゲーム パッド(micro:bit用)(micro:GamePad) (opens new window) | 1 | HW | 車体コントロール用 | - |
参考:マイクロゲームパッド(micro: Game Pad for micro:bit)は、当社ウェブストアにてご購入が可能です
当社はmicro:bit及びDFRobotの公認正規販売店です。
国内のmicro:bit利用推進を行っております。
micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。
# 13.3 動作イメージ
micro:bit用ゲームパッド(micro:GamePad)のジョイスティックを使って、マイクロマクイーン ライト(micro:Maqueen Lite)をラジコンのように動かします。
※ 本イメージ動画は旧モデルのマイクロゲームパッドです。
注意事項
- マイクロマクイーン ライト(micro:Maqueen Lite)とマイクロゲームパッド(micro:GamePad)には、それぞれ1枚のマイクロビット(micro:bit)を挿入する必要があります。
- それぞれのマイクロビット(micro:bit)に対してプログラミングする必要があります。
- マイクロマクイーン ライト(micro:Maqueen Lite)側のパッケージのインポートは、「8.1. Makecode用パッケージをインポート」の記載の通りで可能です。
- マイクロゲームパッド(micro:GamePad)側は、古いバージョンのパッケージしか用意されていないため、MekeCodeのブロックを使ってプログラミングします。
# 13.4 プログラミング例
# MakeCodeプログラミング例(ブロック)
# マイクロマクイーン ライト(micro:Maqueen Lite)側
# マイクロゲームパッド(micro:GamePad)側
# MakeCodeプログラミング例(JavaScript)
# マイクロマクイーン ライト(micro:Maqueen Lite)側
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 Lite)側
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)