# メカニックパーツ - ブルドーザー (マイクロマックイーン用) (micro:Maqueen Mechanic-Push) 利用マニュアル



本ドキュメントは、メカニックパーツ - ブルドーザー (Mechanic-Push) の概要、特徴、利用方法について説明します。



# 1.本ドキュメントの目的


  • メカニックパーツ - ブルドーザー (Mechanic-Push) の概要説明
  • メカニックパーツ - ブルドーザー (Mechanic-Push) の仕様説明
  • メカニックパーツ - ブルドーザー (Mechanic-Push) に関する利用方法の説明


# 2.概要


メカニックパーツ - ブルドーザー (Mechanic-Push)は、DFRobot社が提供しているマイクロビット用ロボットカー「マイクロマックイーン (micro:Maqueen)」の追加パーツです。
このキットには、メタルサーボ、メカパーツ、ネジなどが含まれており、簡単にロボットカーに装着できます。
お手持ちのマイクロマックイーン ライト (micro:Maqueen Lite)やマイクロマックイーン プラス (micro:Maqueen Plus)に、メカニックパーツ - ブルドーザー (Mechanic-Push)を装着し、プレートで物を押したり、超音波センサーで障害物との距離を計測することができます。
遊びながら、実践的なプログラミング学習を経験することで、学びを深めていくことが期待できます。



# 3.ご購入の方法


参考:メカニックパーツ - ブルドーザー (Mechanic-Push)は、当社ウェブストアにてご購入いただけます。



当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。

micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。

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



# 4.特徴


  • マイクロマックイーン ライト (micro:Maqueen Lite)4.0以降に対応
  • マイクロマックイーン プラス V2 (micro:Maqueen Plus V2)に対応
  • 高品質メタルギアサーボ
  • 金属製のサーボ接続プレートで簡単に取り付けることが可能
  • サーボ制御角度0~180度
  • 高品質アルミ合金素材


# 5.仕様


項目 詳細
型番 PPDF-ROB0156-P
サーボ重量 12g±1g
サーボの種類 メタルギアサーボ
サーボ制御角度 0 ~ 180 度
サーボ接続プレート メタルサーボ接続プレート
コントロールポート (micro:Maqueen Lite) S1、S2
コントロールポート (micro:Maqueen Plus V2) P0、P1、P2
スタンバイ電流 <45mA
重量 62g(袋を含む)
製品パッケージ パッケージなし、袋のみ。260 x 160 x 25mm(目安)


# 6.付属品


画像 項目 個数
付属品 9gメタルギア・サーボ
(9g Metal Gear Servo)
1
付属品 メタル・トローリー・プレート
(Metal Trolley Plate)
1
付属品 メタル・パン-チルト-ズーム・マウント・プレート
(Metal Pan-tilt-zoom Mount Plate)
1
付属品 ジェネラル・エクスパンション・マウント・ボード
(General Expantion Mount Board)
1
付属品 M3 * 25mm ピラー(銅)
(M3 * 25mm Copper Pilla)
2
付属品 M2.5 * 5mm ネジ
(M2.5 * 5mm Screws)
5
付属品 M3 * 5mm ネジ
(M3 * 5mm Screws)
10
付属品 4P 超音波接続ケーブル
(4P Ultrasonic connecting wire)
1

※ マイクロビット (micro:bit)、マイクロマックイーン ライト (micro:Maqueen Lite)、マイクロマックイーン プラス (micro:Maqueen Plus)は付属しておりません。 ご利用するには、別途ご購入する必要がございます。



# 7.利用方法(マイクロマックイーン ライト (micro:Maqueen Lite)用)


# 7.1.必要な機材


# PC利用時に必要な機材

No. 名称 個数 HW/SW 用途
01 マイクロビット セレクト ベースキット (opens new window) 1 HW micro:bit本体、micro:bit用ケース、マルチUSBケーブル
02 メカニックパーツ - ブルドーザー (Mechanic-Push) (opens new window) 1 HW 本製品
03 マイクロマックイーン ライト (micro:Maqueen Lite) (opens new window) 1 HW メカニックパーツ - ブルドーザー (Mechanic-Push)装着用
04 単4型乾電池 3 HW マイクロマックイーン ライト (micro:Maqueen Lite)とmicro:bitへの電源供給
05 Chromebook、MacOS、WindowsのPC 1 HW MakeCode操作用
06 Google Chrome 1 SW MakeCodeアクセス用


# タブレット・スマートフォン利用時に必要な機材

No. 名称 個数 HW/SW 用途
01 マイクロビット セレクト ベースキット (opens new window) 1 HW micro:bit本体、micro:bit用ケース、マルチUSBケーブル
02 メカニックパーツ - ブルドーザー (Mechanic-Push) (opens new window) 1 HW 本製品
03 マイクロマックイーン ライト (micro:Maqueen Lite) (opens new window) 1 HW メカニックパーツ - ブルドーザー (Mechanic-Push) 装着用
04 単4型乾電池 3 HW マイクロマックイーン ライト (micro:Maqueen Lite) とmicro:bitへの電源供給
05 タブレット・スマートフォン 1 HW micro:bitアプリ操作用
06 micro:bit アプリ 1 SW micro:bitプログラミング用

※ HW:ハードウェア、SW:ソフトウェア
※ Google Chromeは、Google社が提供しているブラウザ。ダウンロードは[Google Chromeの公式ウェブページ](https://www.google.com/intl/ja_jp/chrome/)で可能です。Chromebookでは、標準でインストールされています。


# 7.2.組立方法


# 7.2.1.サーボの原点合わせ


各パーツを取り付ける前にサーボの原点合わせを行います。原点とはサーボが動作する際に基準となる位置です。
本マニュアルでは、原点合わせとして、サーボのシャフトを90度の位置に合わせます。



# 7.2.1.1.プログラムを作成する

サーボをコントロールして90度の位置に合わせるプログラムを作成します。


※ 本マニュアルでは、MakeCodeを利用したプログラミング例を使用します。 MakeCodeを使ってのmicro:bitプログラミングを経験していない方は、当社ドキュメント 「1.2. micro:bitの利用方法」 (opens new window)の各ドキュメントをご確認ください。

※MakeCodeプログラミング例(ブロック)にはマイクロマックイーン ライト (micro:Maqueen Lite)のMakecode用パッケージが予めインポートされています。

MakeCode画面で初めからプログラミングを作成する場合やMakeCodeプログラミング例(JavaScript)、MakeCodeプログラミング例(python)を使用する場合には、「マイクロマクイーン (micro:Maqueen)MakeCode用パッケージのインポート」 (opens new window) をご参照ください。

※作成したプログラムはマイクロマックイーン ライト (micro:Maqueen Lite)に装着するマイクロビット (micro:bit v2.2)に書き込み(ダウンロード)します。


# MakeCodeプログラミング例(ブロック)



# MakeCodeプログラミング例(JavaScript)

maqueen.servoRun(maqueen.Servos.S1, 90)


# MakeCodeプログラミング例(python)

maqueen.servo_run(maqueen.Servos.S1, 90)


# 7.2.1.2.作成したプログラムを実行する

No. 画像 手順
01 マイクロマックイーン ライト (micro:Maqueen Lite)コネクター 9gメタルギア・サーボの3pinコネクターをマイクロマックイーン ライト (micro:Maqueen Lite)のサーボ端子S1に接続。

※3pinコネクターの向きに注意する(茶色ワイヤーを黒ピン、赤色ワイヤーをピンクピン、オレンジ色ワイヤーを緑ピンに接続)。
02 マイクロマックイーン ライト(micro:Maqueen Lite)電源ON マイクロ マックイーンライト (micro:Maqueen Lite)の電源を入れる。
03 プログラムの実行で9gメタルギア・サーボのシャフトが回転したことを確認する。

※原点合わせ後は、手でシャフトを回さないように注意する。
04 マイクロ マックイーンライト (micro:Maqueen Lite)の電源を切る。
05 3pinコネクターをマイクロ マックイーンライト (micro:Maqueen Lite)のサーボモーター端子から抜く。


# 7.2.2.ブルドーザーの組み立て


No. 画像 手順
01 ブルドーザーの組み立て01 メタル・トローリー・プレートにメタル・パン-チルト-ズーム・マウント・プレートを装着。
02 ブルドーザーの組み立て02 メタル・パン-チルト-ズーム・マウント・プレートにメタルギア・サーボを装着。

※丸形サーボホーンのネジ穴がマイクロマックイーン ライト (micro:Maqueen Lite)の前後左右を指すような向きで装着する。
03 ブルドーザーの組み立て03 メタル・パン-チルト-ズーム・マウント・プレートをマイクロマックイーン ライト (micro:Maqueen Lite)に装着。
04 ブルドーザーの組み立て04 ジェネラル・エクスパンション・マウント・ボードを丸形サーボホーンに装着する。超音波距離センサーをジェネラル・エクスパンション・マウント・ボードに装着し、4P超音波接続ケーブルで超音波距離センサーとマイクロマックイーン ライト (micro:Maqueen Lite)のSR04P超音波拡張ポートを接続する。

以上でプログラミングの事前準備は完了です。



# 7.3.プログラミング方法


本マニュアルでは、MakeCodeを使用して、ブルドーザーを動かす方法を説明します。

あらかじめ用意されたパッケージを利用することで、プログラミンがより簡単に行えますので、本マニュアルでは、メーカーが用意したパッケージを利用する前提でマイクロマックイーン ライト (micro:Maqueen Lite)のプログラミング例を記載しています。


パッケージのインポート方法については、「マイクロマクイーン (micro:Maqueen)MakeCode用パッケージのインポート」 (opens new window) をご参照ください。



# 7.3.1.超音波距離センサーで障害物を確認する


サーボを回転することで、超音波距離センサーを装着したジェネラル・エクスパンション・マウント・ボードをランダムに動かし、前方20㎝以内に障害物がある場合にはLEDランプを点滅します。



# MakeCodeプログラミング例(ブロック)



# MakeCodeプログラミング例(JavaScript)

let distance_to_obstarcle_cm = 0
basic.forever(function () {
    maqueen.servoRun(maqueen.Servos.S1, randint(30, 150))
    basic.pause(1000)
    distance_to_obstarcle_cm = maqueen.Ultrasonic(PingUnit.Centimeters)
    if (distance_to_obstarcle_cm <= 20) {
        maqueen.writeLED(maqueen.LED.LEDLeft, maqueen.LEDswitch.turnOn)
        maqueen.writeLED(maqueen.LED.LEDRight, maqueen.LEDswitch.turnOn)
        basic.pause(500)
        maqueen.writeLED(maqueen.LED.LEDLeft, maqueen.LEDswitch.turnOff)
        maqueen.writeLED(maqueen.LED.LEDRight, maqueen.LEDswitch.turnOff)
        basic.pause(500)
        maqueen.writeLED(maqueen.LED.LEDLeft, maqueen.LEDswitch.turnOn)
        maqueen.writeLED(maqueen.LED.LEDRight, maqueen.LEDswitch.turnOn)
        basic.pause(500)
        maqueen.writeLED(maqueen.LED.LEDLeft, maqueen.LEDswitch.turnOff)
        maqueen.writeLED(maqueen.LED.LEDRight, maqueen.LEDswitch.turnOff)
    }
})


# MakeCodeプログラミング例(python)

distance_to_obstarcle_cm = 0

def on_forever():
    global distance_to_obstarcle_cm
    maqueen.servo_run(maqueen.Servos.S1, randint(30, 150))
    basic.pause(1000)
    distance_to_obstarcle_cm = maqueen.ultrasonic(PingUnit.CENTIMETERS)
    if distance_to_obstarcle_cm <= 20:
        maqueen.write_led(maqueen.LED.LED_LEFT, maqueen.LEDswitch.TURN_ON)
        maqueen.write_led(maqueen.LED.LED_RIGHT, maqueen.LEDswitch.TURN_ON)
        basic.pause(500)
        maqueen.write_led(maqueen.LED.LED_LEFT, maqueen.LEDswitch.TURN_OFF)
        maqueen.write_led(maqueen.LED.LED_RIGHT, maqueen.LEDswitch.TURN_OFF)
        basic.pause(500)
        maqueen.write_led(maqueen.LED.LED_LEFT, maqueen.LEDswitch.TURN_ON)
        maqueen.write_led(maqueen.LED.LED_RIGHT, maqueen.LEDswitch.TURN_ON)
        basic.pause(500)
        maqueen.write_led(maqueen.LED.LED_LEFT, maqueen.LEDswitch.TURN_OFF)
        maqueen.write_led(maqueen.LED.LED_RIGHT, maqueen.LEDswitch.TURN_OFF)
basic.forever(on_forever)


# 7.3.2.障害物の無い方向へ自動走行する

進行方向の障害物を検知しながら進みます。前方に障害物がある場合には左右を確認し可能な方向に進路を変更します。



参考:マイクロゲームパッド (micro:Game Pad)は、当社ウェブストアにてご購入いただけます。



当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。

micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。

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



# MakeCodeプログラミング例(ブロック)



# MakeCodeプログラミング例(JavaScript)

let distance_obstacle_front = 0
let distance_obstacle_left = 0
let distance_obstacle_right = 0
basic.forever(function () {
    maqueen.servoRun(maqueen.Servos.S1, 90)
    basic.pause(200)
    distance_obstacle_front = maqueen.Ultrasonic(PingUnit.Centimeters)
    if (distance_obstacle_front < 20) {
        maqueen.motorRun(maqueen.Motors.All, maqueen.Dir.CCW, 60)
        basic.pause(500)
        maqueen.servoRun(maqueen.Servos.S1, 30)
        basic.pause(500)
        distance_obstacle_left = maqueen.Ultrasonic(PingUnit.Centimeters)
        maqueen.servoRun(maqueen.Servos.S1, 150)
        basic.pause(500)
        distance_obstacle_right = maqueen.Ultrasonic(PingUnit.Centimeters)
        if (distance_obstacle_left > distance_obstacle_front && distance_obstacle_left > distance_obstacle_right) {
            maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, 60)
            maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, 30)
            basic.pause(1000)
        } else if (distance_obstacle_right > distance_obstacle_front && distance_obstacle_right > distance_obstacle_left) {
            maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, 30)
            maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, 60)
            basic.pause(1000)
        } else {
            maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, 60)
            maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CCW, 60)
            basic.pause(800)
        }
    } else {
        maqueen.motorRun(maqueen.Motors.All, maqueen.Dir.CW, 60)
        basic.pause(800)
    }
})


# MakeCodeプログラミング例(python)


distance_obstacle_front = 0
distance_obstacle_left = 0
distance_obstacle_right = 0

def on_forever():
    global distance_obstacle_front, distance_obstacle_left, distance_obstacle_right
    maqueen.servo_run(maqueen.Servos.S1, 90)
    basic.pause(200)
    distance_obstacle_front = maqueen.ultrasonic(PingUnit.CENTIMETERS)
    if distance_obstacle_front < 20:
        maqueen.motor_run(maqueen.Motors.ALL, maqueen.Dir.CCW, 60)
        basic.pause(500)
        maqueen.servo_run(maqueen.Servos.S1, 30)
        basic.pause(500)
        distance_obstacle_left = maqueen.ultrasonic(PingUnit.CENTIMETERS)
        maqueen.servo_run(maqueen.Servos.S1, 150)
        basic.pause(500)
        distance_obstacle_right = maqueen.ultrasonic(PingUnit.CENTIMETERS)
        if distance_obstacle_left > distance_obstacle_front and distance_obstacle_left > distance_obstacle_right:
            maqueen.motor_run(maqueen.Motors.M1, maqueen.Dir.CW, 60)
            maqueen.motor_run(maqueen.Motors.M2, maqueen.Dir.CW, 30)
            basic.pause(1000)
        elif distance_obstacle_right > distance_obstacle_front and distance_obstacle_right > distance_obstacle_left:
            maqueen.motor_run(maqueen.Motors.M1, maqueen.Dir.CW, 30)
            maqueen.motor_run(maqueen.Motors.M2, maqueen.Dir.CW, 60)
            basic.pause(1000)
        else:
            maqueen.motor_run(maqueen.Motors.M1, maqueen.Dir.CW, 60)
            maqueen.motor_run(maqueen.Motors.M1, maqueen.Dir.CCW, 60)
            basic.pause(800)
    else:
        maqueen.motor_run(maqueen.Motors.ALL, maqueen.Dir.CW, 60)
        basic.pause(800)
basic.forever(on_forever)


# 8.利用方法(マイクロマックイーン プラス (micro:Maqueen Plus)用)


# 8.1.必要な機材


# PC利用時に必要な機材

No. 名称 個数 HW/SW 用途
01 マイクロビット セレクト ベースキット (opens new window) 1 HW micro:bit本体、micro:bit用ケース、マルチUSBケーブル
02 メカニックパーツ - ブルドーザー (Mechanic-Push) (opens new window) 1 HW 本製品
03 マイクロマックイーン プラス (micro:Maqueen Plus) (opens new window) 1 HW メカニックパーツ - ブルドーザー (Mechanic-Push) 装着用
04 単3型乾電池 4 HW マイクロマックイーン プラス (micro:Maqueen Plus)とmicro:bitへの電源供給
05 Chromebook、MacOS、WindowsのPC 1 HW MakeCode操作用
06 Google Chrome 1 SW MakeCodeアクセス用


# タブレット・スマートフォン利用時に必要な機材

No. 名称 個数 HW/SW 用途
01 マイクロビット セレクト ベースキット (opens new window) 1 HW micro:bit本体、micro:bit用ケース、マルチUSBケーブル
02 メカニックパーツ - ブルドーザー (Mechanic-Push) (opens new window) 1 HW 本製品
03 マイクロマックイーン プラス (micro:Maqueen Plus) (opens new window) 1 HW メカニックパーツ - ブルドーザー (Mechanic-Push) 装着用
04 単3型乾電池 4 HW マイクロマックイーン プラス (micro:Maqueen Plus)とmicro:bitへの電源供給
05 タブレット・スマートフォン 1 HW micro:bitアプリ操作用
06 micro:bit アプリ 1 SW micro:bitプログラミング用


※ HW:ハードウェア、SW:ソフトウェア
※ Google Chromeは、Google社が提供しているブラウザ。ダウンロードは[Google Chromeの公式ウェブページ](https://www.google.com/intl/ja_jp/chrome/)で可能です。Chromebookでは、標準でインストールされています。


# 8.2.組立方法


# 8.2.1.サーボの原点合わせ


各パーツを取り付ける前にサーボの原点合わせを行います。原点とは、サーボが動作する際の基準位置です。
本マニュアルでは、原点合わせとしてシャフトを90度の位置に合わせます。



# 8.2.1.1.プログラムを作成する

サーボをコントロールして90度の位置に合わせるプログラムを作成します。

※ 本マニュアルでは、MakeCodeを利用したプログラミング例を使用します。 MakeCodeを使ってのmicro:bitプログラミングを経験していない方は、当社ドキュメント 「1.2. micro:bitの利用方法」 (opens new window)の各ドキュメントをご確認ください。

※MakeCodeプログラミング例(ブロック)にはマイクロマックイーン プラス (micro:Maqueen Pluss)のMakecode用パッケージが予めインポートされています。
MakeCode画面で初めからプログラミングを作成する場合やMakeCodeプログラミング例(JavaScript)、MakeCodeプログラミング例(python)を使用する場合には、「マイクロマックイーン プラス (micro:Maqueen Plus) MakeCode用パッケージのインポート」 (opens new window) をご参照ください。

※作成したプログラムはマイクロマックイーン プラス (micro:Maqueen Plus)に装着するマイクロビット (micro:bit v2.2)に書き込み(ダウンロード)します。


# MakeCodeプログラミング例(ブロック)



# MakeCodeプログラミング例(JavaScript)

pins.servoWritePin(AnalogPin.P1, 90)



# MakeCodeプログラミング例(python)

pins.servo_write_pin(AnalogPin.P1, 90)



# 8.2.1.2.作成したプログラムを実行する


No. 画像 手順
01 マイクロマックイーン プラス(micro:Maqueen Plus)コネクター 9gメタルギア・サーボの3pinコネクターをマイクロマックイーン プラス (micro:Maqueen Plus)の5V端子P1に接続。

※3pinコネクターの向きに注意する(茶色の線を黒色のピン(GND)に接続)。
02 マイクロマックイーン プラス(micro:Maqueen Plus)電源ON マイクロ マックイーンプラス (micro:Maqueen Plus)の電源を入れる。
03 プログラムの実行で9gメタルギア・サーボのシャフトが回転したことを確認する。

※原点合わせ後は、手でシャフトを回さないように注意する。
04 マイクロ マックイーンプラス (micro:Maqueen Plus)の電源を切る。
05 3pinコネクターをマイクロマックイーン プラス (micro:Maqueen Plus)の5V端子から抜く。


# 8.2.2.ブルドーザーの組み立て


No. 画像 手順
01 ブルドーザーの組み立て01 メタル・トローリー・プレートにメタル・パン-チルト-ズーム・マウント・プレートを装着。
02 ブルドーザーの組み立て02 メタル・パン-チルト-ズーム・マウント・プレートにメタルギア・サーボを装着。

※丸形サーボホーンのネジ穴がマイクロマックイーン プラス (micro:Maqueen Plus)の前後左右を指すような向きで装着する。
03 ブルドーザーの組み立て03 メタル・パン-チルト-ズーム・マウント・プレートをマイクロマックイーン プラス (micro:Maqueen Plus)に装着。
04 ブルドーザーの組み立て04 ジェネラル・エクスパンション・マウント・ボードを丸形サーボホーンに装着する。超音波距離センサーをジェネラル・エクスパンション・マウント・ボードに装着し、4P超音波接続ケーブルで超音波距離センサーとマイクロマックイーン プラス (micro:Maqueen Plus)のSR04P超音波拡張ポートを接続する。

以上でプログラミングの事前準備は完了です。



# 8.3.プログラミング方法


本マニュアルでは、MakeCodeを使用して、ブルドーザーを動かす方法を説明します。

あらかじめ用意されたパッケージを利用することで、プログラミンがより簡単に行えますので、本マニュアルでは、メーカーが用意したパッケージを利用する前提でマイクロマックイーン プラス (micro:Maqueen Plus)のプログラミング例を記載しています。


パッケージのインポート方法については、「マイクロマックイーン プラス (micro:Maqueen Plus) MakeCode用パッケージのインポート」 (opens new window) をご参照ください。



# 8.3.1.超音波距離センサーを左右に動かし障害物の有無を確認する


サーボを回転し、超音波距離センサーを付けたジェネラル・エクスパンション・マウント・ボードをランダム動かしながら、障害物の有無を確認ます。前方20㎝以内に障害物がある場合にはLEDランプを点灯します。



# MakeCodeプログラミング例(ブロック)


# MakeCodeプログラミング例(JavaScript)

let distance_to_obstacle_cm = 0
basic.forever(function () {
    pins.servoWritePin(AnalogPin.P1, randint(30, 150))
    basic.pause(1000)
    distance_to_obstacle_cm = DFRobotMaqueenPlusV2.readUltrasonic(DigitalPin.P13, DigitalPin.P14)
    if (distance_to_obstacle_cm <= 20) {
        DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eOpen)
        basic.pause(500)
        DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eClose)
        basic.pause(500)
        DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eOpen)
        basic.pause(500)
        DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eClose)
    } else {
        DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eClose)
    }
    basic.pause(3000)
})


# MakeCodeプログラミング例(python)

distance_to_obstacle_cm = 0

def on_forever():
    global distance_to_obstacle_cm
    pins.servo_write_pin(AnalogPin.P1, randint(30, 150))
    basic.pause(1000)
    distance_to_obstacle_cm = DFRobotMaqueenPlusV2.read_ultrasonic(DigitalPin.P13, DigitalPin.P14)
    if distance_to_obstacle_cm <= 20:
        DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_OPEN)
        basic.pause(500)
        DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_CLOSE)
        basic.pause(500)
        DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_OPEN)
        basic.pause(500)
        DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_CLOSE)
    else:
        DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_CLOSE)
    basic.pause(3000)
basic.forever(on_forever)


# 8.3.2.障害物の無い方向へ自動走行する

進行方向の障害物を検知しながら走行します。前方に障害物がある場合には左右を確認し可能な方向に進路を変更します。



参考:マイクロゲームパッド (micro:Game Pad)は、当社ウェブストアにてご購入いただけます。



当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。

micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。

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



# MakeCodeプログラミング例(ブロック)



# MakeCodeプログラミング例(JavaScript)

マイクロマックイーン プラス (micro:Maqueen Plus)側
let distance_obstacle_front = 0
let distance_obstacle_left = 0
let distance_obstacle_right = 0
basic.forever(function () {
    pins.servoWritePin(AnalogPin.P1, 90)
    basic.pause(200)
    distance_obstacle_front = DFRobotMaqueenPlusV2.readUltrasonic(DigitalPin.P13, DigitalPin.P14)
    if (distance_obstacle_front < 20) {
        DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eOpen)
        DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eAllMotor, MyEnumDir.eBackward, 60)
        basic.pause(500)
        pins.servoWritePin(AnalogPin.P1, 30)
        basic.pause(500)
        distance_obstacle_left = DFRobotMaqueenPlusV2.readUltrasonic(DigitalPin.P13, DigitalPin.P14)
        pins.servoWritePin(AnalogPin.P1, 150)
        basic.pause(500)
        distance_obstacle_right = DFRobotMaqueenPlusV2.readUltrasonic(DigitalPin.P13, DigitalPin.P14)
        if (distance_obstacle_left > distance_obstacle_front && distance_obstacle_left > distance_obstacle_right) {
            DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eLeftLed, MyEnumSwitch.eClose)
            DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eRightLed, MyEnumSwitch.eOpen)
            DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eLeftMotor, MyEnumDir.eForward, 60)
            DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eRightMotor, MyEnumDir.eForward, 30)
            basic.pause(1000)
        } else if (distance_obstacle_right > distance_obstacle_front && distance_obstacle_right > distance_obstacle_left) {
            DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eLeftLed, MyEnumSwitch.eOpen)
            DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eRightLed, MyEnumSwitch.eClose)
            DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eLeftMotor, MyEnumDir.eForward, 30)
            DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eRightMotor, MyEnumDir.eForward, 60)
            basic.pause(1000)
        } else {
            DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eOpen)
            DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eLeftMotor, MyEnumDir.eBackward, 60)
            DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eRightMotor, MyEnumDir.eForward, 60)
            basic.pause(1000)
        }
    } else {
        DFRobotMaqueenPlusV2.controlLED(MyEnumLed.eAllLed, MyEnumSwitch.eClose)
        DFRobotMaqueenPlusV2.controlMotor(MyEnumMotor.eAllMotor, MyEnumDir.eForward, 60)
        basic.pause(800)
    }
})



# MakeCodeプログラミング例(python)


distance_obstacle_front = 0
distance_obstacle_left = 0
distance_obstacle_right = 0

def on_forever():
    global distance_obstacle_front, distance_obstacle_left, distance_obstacle_right
    pins.servo_write_pin(AnalogPin.P1, 90)
    basic.pause(200)
    distance_obstacle_front = DFRobotMaqueenPlusV2.read_ultrasonic(DigitalPin.P13, DigitalPin.P14)
    if distance_obstacle_front < 20:
        DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_OPEN)
        DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_ALL_MOTOR, MyEnumDir.E_BACKWARD, 60)
        basic.pause(500)
        pins.servo_write_pin(AnalogPin.P1, 30)
        basic.pause(500)
        distance_obstacle_left = DFRobotMaqueenPlusV2.read_ultrasonic(DigitalPin.P13, DigitalPin.P14)
        pins.servo_write_pin(AnalogPin.P1, 150)
        basic.pause(500)
        distance_obstacle_right = DFRobotMaqueenPlusV2.read_ultrasonic(DigitalPin.P13, DigitalPin.P14)
        if distance_obstacle_left > distance_obstacle_front and distance_obstacle_left > distance_obstacle_right:
            DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_LEFT_LED, MyEnumSwitch.E_CLOSE)
            DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_RIGHT_LED, MyEnumSwitch.E_OPEN)
            DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_LEFT_MOTOR, MyEnumDir.E_FORWARD, 60)
            DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_RIGHT_MOTOR, MyEnumDir.E_FORWARD, 30)
            basic.pause(1000)
        elif distance_obstacle_right > distance_obstacle_front and distance_obstacle_right > distance_obstacle_left:
            DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_LEFT_LED, MyEnumSwitch.E_OPEN)
            DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_RIGHT_LED, MyEnumSwitch.E_CLOSE)
            DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_LEFT_MOTOR, MyEnumDir.E_FORWARD, 30)
            DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_RIGHT_MOTOR, MyEnumDir.E_FORWARD, 60)
            basic.pause(1000)
        else:
            DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_OPEN)
            DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_LEFT_MOTOR, MyEnumDir.E_BACKWARD, 60)
            DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_RIGHT_MOTOR, MyEnumDir.E_FORWARD, 60)
            basic.pause(1000)
    else:
        DFRobotMaqueenPlusV2.control_led(MyEnumLed.E_ALL_LED, MyEnumSwitch.E_CLOSE)
        DFRobotMaqueenPlusV2.control_motor(MyEnumMotor.E_ALL_MOTOR, MyEnumDir.E_FORWARD, 60)
        basic.pause(800)
basic.forever(on_forever)


Last Updated: 5/25/2023, 4:09:29 AM