# マイクロマクイーン(micro:Maqueen) 無線ゲームパットでのコントロール




# 13.1 目標




micro:bit用ゲームパッド(micro:GamePad) (opens new window)を使って、マイクロマクイーン (micro:Maqueen)のコントロールするためのプログラミング方法を把握します。


# 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) 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) 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関連製品の販売をしております。

micro:bit専門ストア (opens new window)




# 13.3 動作イメージ




micro:bit用ゲームパッド(micro:GamePad)のジョイスティックを使って、マイクロマクイーン (micro:Maqueen)をラジコンのように動かします。

ROB0148 Micro:Maqueen micro:bit用ゲームパッド プログラム 動作イメージ
ROB0148 Micro:Maqueen 無線ゲームパットでのコントロール プログラム 動作イメージ
※ 本イメージ動画は旧モデルのマイクロゲームパッドです。


注意事項

  • マイクロマクイーン (micro:Maqueen)とマイクロゲームパッド(micro:GamePad)には、それぞれ1枚のマイクロビット(micro:bit)を挿入する必要があります。
  • それぞれのマイクロビット(micro:bit)に対してプログラミングする必要があります。
  • マイクロマクイーン (micro:Maqueen)側のパッケージのインポートは、「8.1. Makecode用パッケージをインポート」の記載の通りで可能です。
  • マイクロゲームパッド(micro:GamePad)側は、古いバージョンのパッケージしか用意されていないため、MekeCodeのブロックを使ってプログラミングします。



# 13.4 プログラミング例




# 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)


# MakeCodeプログラミング例のQRコード

# マイクロマクイーン (micro:Maqueen)側


ROB0148 Micro:Maqueen 無線ゲームパットでのコントロール マイクロマクイーン側 プログラムサンプル QRコード

# マイクロゲームパッド(micro:GamePad)側


ROB0148 Micro:Maqueen 無線ゲームパットでのコントロール マイクロゲームパッド側 プログラムサンプル QRコード







Last Updated: 4/23/2022, 1:45:58 PM