# マイクロマックイーン プラス (micro:Maqueen Plus) 音声での車体コントロール
# 11.1. 目標
音を検知し、音声でマイクロマックイーン プラス (micro:Maqueen Plus)を前方に進行させるまたは止めることができるプログラミング方法を学習します。
# 11.2. 必要な機材
# PC利用時に必要な機材
No. | 名称 | 個数 | HW/SW | 用途 | 補足 |
---|---|---|---|---|---|
01 | micro:bit(v2)本体 | 1 | HW | マイクロマックイーン プラス (micro:Maqueen Plus)のコントロール用。 プログラミングはmicro:biに対して行う | - |
02 | micro:bit用 ケース | 1 | HW | micro:bit保護 | ※ 必須ではない |
03 | micro:bit用 USBケーブル | 1 | HW | micro:bitとPCの接続 | Type-AとType-C両方対応できると様々な端末で利用しやすい |
04 | マイクロマックイーン プラス (micro:Maqueen Plus) | 1 | HW | 車体本体 | - |
05 | 単3型乾電池 | 4 | HW | マイクロマックイーン プラスとmicro:bitへの電源供給 | - |
06 | Chromebook、MacOS、WindowsのPC | 1 | HW | MakeCode操作用 | - |
07 | Google Chrome | 1 | SW | MakeCodeアクセス用 | - |
# タブレット・スマートフォン利用時に必要な機材
No. | 名称 | 個数 | HW/SW | 用途 | 補足 |
---|---|---|---|---|---|
01 | micro:bit(v2)本体 | 1 | HW | マイクロマックイーン プラスのコントロール用。 プログラミングはmicro:biに対して行う | - |
02 | micro:bit用 ケース | 1 | HW | micro:bit保護 | ※ 必須ではない |
03 | マイクロマックイーン プラス (micro:Maqueen Plus) | 1 | HW | 車体本体 | - |
04 | 単3型乾電池 | 4 | HW | マイクロマックイーン プラスとmicro:bitへの電源供給 | - |
05 | タブレット・スマートフォン | 1 | HW | micro:bitアプリ操作用 | - |
06 | micro:bit アプリ | 1 | SW | micro:bitアプリ操作用 | - |
# 11.3. 動作イメージ
停車しているマイクロマックイーン プラス (micro:Maqueen Plus)が設定した一定レベルの声や音を検知すると、LEDライトを点灯し、車体が前進します。
前進しているマイクロマックイーン プラス (micro:Maqueen Plus)が設定した一定レベルの声や音を検知すると、LEDライトを消灯し、車体が停止します。
「スタート」や「ストップ」などの声を出すことで、車体を簡易的にコントロールすることができます。
※ サウンドはマイクロビットの機能で検知しています。
# 12.4. プログラミング例
電源オンの初期では、ブール値(TRUE(真)またはFALSE(偽))の状態をTRUEと設定します。
100より大きい音声が検出された場合、ブール値(TRUE(真)またはFALSE(偽))の状態を反転させます。
そうすることで100より大きい音声が検出された際、交互に前進・停止の動作をさせることが実現できます。
# MakeCodeプログラミング例(ブロック)
# MakeCodeプログラミング例(JavaScript)
DFRobotMaqueenPlusV2.I2CInit()
let canMoveForward = true
basic.forever(function () {
if (input.soundLevel() >= 120) {
canMoveForward = !(canMoveForward)
if (canMoveForward == true) {
DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eAllMotor, MyEnumDir.eForward, 100)
DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eOpen)
basic.showIcon(IconNames.Square)
} else {
DFRobotMaqueenPlusV2.controlMotorStop(MyEnumMotor.eAllMotor)
DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eClose)
basic.showIcon(IconNames.No)
}
}
})
# MakeCodeプログラミング例(python)
DFRobotMaqueenPlusV2.i2c_init()
canMoveForward = True
def on_forever():
global canMoveForward
if input.sound_level() >= 120:
canMoveForward = not (canMoveForward)
if canMoveForward == True:
DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_ALL_MOTOR, MyEnumDir.E_FORWARD, 100)
DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_OPEN)
basic.show_icon(IconNames.SQUARE)
else:
DFRobotMaqueenPlusV2.control_motor_stop(MyEnumMotor.E_ALL_MOTOR)
DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_CLOSE)
basic.show_icon(IconNames.NO)
basic.forever(on_forever)
# MakeCodeプログラミング例のQRコード