# 9. マイクロマックイーン プラス V2(micro:Maqueen Plus V2) 赤外線リモコンでの車体コントロール
# 9.1. 目標
赤外線リモコンでマイクロマックイーン プラス V2(micro:Maqueen Plus V2)をコントロールするためのプログラミング方法を把握します。
# 9.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 | 赤外線リモコン (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 | 赤外線リモコン (opens new window) | 1 | HW | 赤外線信号発信用 |
# 9.3. MakeCodeブロックの概要
No. | ブロック | 概要 | 機能 |
---|---|---|---|
01 | 赤外線受信イベントトリガーブロック | 赤外線の受信をきっかけに意図した動作を開始させる。具体的には、赤外線を受信した場合、変換した10進数整数を所定の変数(デフォルトはmessage)に代入し、ブロック内に追加した処理を実行する。 ・ 戻り値:10進整数(リモコンで押されたキーに対応して送信された16進数の値を受信し、下2桁を読み取り、10進数に変換する) ・ プロトコルタイプ:NEC |
# 9.4. 動作イメージ
赤外線リモートコントローラーの「+」(前進)、「-」(後退)、「⏭」(左折)、「⏮」(右折)、「▶️」(停止)のキーを押すと、マイクロマックイーン プラス V2 (micro:Maqueen plus V2) の車体がそれにコントロールされ動作します。
# 9.5. プログラミング例
# MakeCodeプログラミング例(サンプルプログラムの画像)
# MakeCodeプログラミング例(サンプルプログラムのリンク)
https://makecode.microbit.org/_UTkRCqfE8Jqh (opens new window)
# MakeCodeプログラミング例(JavaScript)
IR.IR_callbackUser(function (infrared) {
if (infrared == 64) {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.AllMotor, maqueenPlusV2.MyEnumDir.Forward, 150)
} else if (infrared == 25) {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.AllMotor, maqueenPlusV2.MyEnumDir.Backward, 150)
} else if (infrared == 7) {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.LeftMotor, maqueenPlusV2.MyEnumDir.Forward, 0)
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.RightMotor, maqueenPlusV2.MyEnumDir.Forward, 150)
} else if (infrared == 9) {
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.LeftMotor, maqueenPlusV2.MyEnumDir.Forward, 150)
maqueenPlusV2.controlMotor(maqueenPlusV2.MyEnumMotor.RightMotor, maqueenPlusV2.MyEnumDir.Forward, 0)
} else if (infrared == 21) {
maqueenPlusV2.controlMotorStop(maqueenPlusV2.MyEnumMotor.AllMotor)
}
basic.showIcon(IconNames.Happy)
})
# MakeCodeプログラミング例(python)
def on_ir_callbackuser(infrared):
if infrared == 64:
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.ALL_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
150)
elif infrared == 25:
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.ALL_MOTOR,
maqueenPlusV2.MyEnumDir.BACKWARD,
150)
elif infrared == 7:
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.LEFT_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
0)
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.RIGHT_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
150)
elif infrared == 9:
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.LEFT_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
150)
maqueenPlusV2.control_motor(maqueenPlusV2.MyEnumMotor.RIGHT_MOTOR,
maqueenPlusV2.MyEnumDir.FORWARD,
0)
elif infrared == 21:
maqueenPlusV2.control_motor_stop(maqueenPlusV2.MyEnumMotor.ALL_MOTOR)
basic.show_icon(IconNames.HAPPY)
IR.IR_callbackUser(on_ir_callbackuser)