# 11. マイクロマックイーン プラス (micro:Maqueen Plus) 音声での車体コントロール
# 11.1. 目標
音を検知し、音声でマイクロマックイーン プラス (micro:Maqueen Plus)を前方に進行させるまたは止めることができるプログラミング方法を学習します。
# 11.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アクセス用 |
# タブレット・スマートフォン利用時に必要な機材
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プログラミング用 |
# 11.3. 動作イメージ
停車しているマイクロマックイーン プラス (micro:Maqueen Plus)が設定した一定レベルの声や音を検知すると、LEDライトを点灯し、車体が前進します。
前進しているマイクロマックイーン プラス (micro:Maqueen Plus)が設定した一定レベルの声や音を検知すると、LEDライトを消灯し、車体が停止します。
「スタート」や「ストップ」などの声を出すことで、車体を簡易的にコントロールすることができます。
※ サウンドはマイクロビットの機能で検知しています。
# 11.4. プログラミング例
電源オンの初期では、ブール値(TRUE(真)またはFALSE(偽))の状態をTRUEと設定します。
100より大きい音声が検出された場合、ブール値(TRUE(真)またはFALSE(偽))の状態を反転させます。
そうすることで100より大きい音声が検出された際、交互に前進・停止の動作をさせることが実現できます。
# MakeCodeプログラミング例(サンプルプログラムの画像)
# MakeCodeプログラミング例(サンプルプログラムのリンク)
https://makecode.microbit.org/_1kqXW2EyqdvK (opens new window)
# MakeCodeプログラミング例(JavaScript)
maqueenPlusV2.I2CInit()
let canMovForward = true
basic.forever(function () {
if (input.soundLevel() >= 120) {
canMovForward = !(canMovForward)
if (canMovForward == true) {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.AllMotor, maqueenPlusV2.MyEnumDir.Forward, 100)
maqueenPlusV2.controlLED(maqueenPlusV2.MyEnumLed.AllLed, maqueenPlusV2.MyEnumSwitch.Open)
basic.showIcon(IconNames.Square)
} else {
maqueenPlusV2.controlMotorStop(maqueenPlusV2.MyEnumMotor.AllMotor)
maqueenPlusV2.controlLED(maqueenPlusV2.MyEnumLed.AllLed, maqueenPlusV2.MyEnumSwitch.Close)
basic.showIcon(IconNames.No)
}
}
})
# MakeCodeプログラミング例(python)
maqueenPlusV2.i2c_init()
canMovForward = True
def on_forever():
global canMovForward
if input.sound_level() >= 120:
canMovForward = not (canMovForward)
if canMovForward == True:
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.ALL_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
100)
maqueenPlusV2.control_led(maqueenPlusV2.MyEnumLed.ALL_LED,
maqueenPlusV2.MyEnumSwitch.OPEN)
basic.show_icon(IconNames.SQUARE)
else:
maqueenPlusV2.control_motor_stop(maqueenPlusV2.MyEnumMotor.ALL_MOTOR)
maqueenPlusV2.control_led(maqueenPlusV2.MyEnumLed.ALL_LED,
maqueenPlusV2.MyEnumSwitch.CLOSE)
basic.show_icon(IconNames.NO)
basic.forever(on_forever)
# MakeCodeプログラミング例のQRコード