マイコンロボット工作 プログラミング Q&A

はじめに

このQ&Aは主にマイコンロボット工作セットのプログラミングを行うために必要な情報をまとめたものです。パソコン上でビジュアルプログラミングソフト「MakeCode」を用いてのプログラミングを前提に説明しています。BBC マイクロビットやMakeCodeの基本的な使用方法をご理解した上で参照してください。WEB上にある無料のソフト「MakeCode」内の「チュートリアル」を使えば、プログラムをより理解できます。

★お願い★
ご自身でプログラムの変更・書き換えをされた場合(弊社が提供するサンプルプログラムへの変更も含む)に発生する不具合や事故については保証対象外とさせていただきます。 また、弊社が提供するサンプルプログラムに関する質問はお受けできますが、プログラムの組み方に関するご質問にはお答えできませんので、弊社が提供するQ&Aをご覧いただくか、BBC マイクロビットのリファレンスをご覧ください。

なお、BBC マイクロビットが提供しているMakeCodeの仕組みや内容については弊社では回答できません。
※BBC micro:bitは、micro:bit教育財団の登録商標です。

基本的な質問

  • プログラムをロボットに書き込むには?

    パソコンと「BBC マイクロビット」を接続し、タミヤホームページ「BBC マイクロビットのプログラムについて」中の「プログラム集」から必要なプログラムをダウンロードします。保存したファイルを再びパソコン上で「BBC マイクロビット」にコピーしてください。

    作業手順は、タミヤホームページ【BBC マイクロビットのプログラムについて】内の「出荷時のプログラムに戻すには」と同様です。参考にしてください。

  • プログラムを改造するには?

    プログラミングはウェブブラウザで使用できる「MakeCode(日本語版)」がおすすめ。画面上で動作が書かれたブロックを並べることで、視覚的なプログラムの改造が行えます。

  • プログラムを元の(購入時の)状態に戻すには?

    タミヤホームページ「BBC マイクロビットのプログラムについて」中の「出荷時のプログラムに戻すには」をご覧ください。

  • サンプルプログラムを入手するには?

    タミヤホームページ「BBC マイクロビットのプログラムについて」中の「プログラム集」からダウンロードしてください。

  • ダウンロードしたプログラムで使われているブロックの役割を知るには?

    ブロックの左端にアイコンがあれば、クリックすることでコメントが表示されます。
    faq画像

応用に関する質問(LED、駆動回路)

  • LEDを使うには?

    英数字を表示する場合は【文字列を表示】【数を表示】などのブロックを使います。
    faq画像
    記号などを表示する場合は【LED画面に表示】【アイコンを表示】【点灯】などのブロックを使います。
    faq画像

  • 駆動回路mi-01のブザーを使って音階やメロディーを鳴らすには?

    Step.1 初期設定を行います。
    【最初だけ】の中で【音を鳴らす端子を[P8(出力のみ)]にする】を設定します。ブザーはBBC マイクロビットのP8端子に接続されているため、この設定が必要です。
    faq画像
    Step.2 【メロディを開始する】【音を鳴らす】などのブロックを使います。
    faq画像

  • 駆動回路mi-01を使ってモーターを回すには? 止めるには?

    モーターを使用するときは初期設定が必要です。モーターを回すにはブレーキを解除してからで、回転速度を指定します。モーターを止めるにはブレーキをかける、または回転速度を0にします。以下に具体的な手順を示します。

    Step.1 初期設定を行います。
    【最初だけ】の中で【アナログで出力する[P○○]】を使い、値“511”を入力します。続けて【アナログ出力 パルス周期を設定する 端子[P○○]】を使い、周期(マイクロ秒)“1000”を入力します。[P○○]は[P13](右)と[P14](左)それぞれで設定してください。これらの設定はモーターを駆動するための回路が接続されている端子の指定と、出力信号の周期の指定です。
    faq画像ここをクリックすると大きくなります

    Step.2-1 モーターを回すには、まずモーターのブレーキを解除します。
    【デジタルで出力する[P○○]】を使い、値“0”を入力します。[P○○]は[P15](右)と[P16](左)です。一度ブレーキを解除すれば、再びブレーキをかけるまでこの操作を行う必要はありません。
    faq画像

    続けてモーターの回転速度を指定します。【アナログで出力する[P○○]】を使い、値を入力します。[P○○]は[P13](右)と[P14](左)です。[P○○]とモーターの左右の関係や、値と回転速度の関係は表1、表2をご覧ください。
    faq画像
    Step.2-2 モーターにブレーキをかけるには
    【デジタルで出力する[P○○]】を使い、値“1”を入力します。[P○○]は[P15](右)と[P16](左)です。ブレーキをかけている間は、【アナログで出力する】でどんな値を入力してもモーターは回りません。
    faq画像
    faq画像

応用に関する質問(超音波センサー、駆動回路)

  • 超音波センサーmi-02を使って障害物(物体)までの距離を測定するには?

    センサーを使うには、BBC マイクロビットと超音波センサーmi-02(アドレス:44)との間で数値の送受信(I2C通信)をする必要があります。初めにBBC マイクロビット側からセンサーに測定の指示を出します。センサーは超音波を出し、超音波が物体に反射して戻ってくるまでの時間を測定します。BBC マイクロビット側から測定データの取得を指示すると、センサーは測定データを2つの数値に分割して送り返してきます。送り返されたデータから物体までの距離を計算することができます。以下に具体的な手順を示します。

    Step.1 測定を開始することを超音波センサーmi-02に伝えます。
    【I2C 数値を書き出す】を使い、アドレス“44”・形式“UInt8BE”・つづく“偽”に設定して値“51”を送ります。(アドレス・形式・つづくはこれ以降も同様に設定します。)
    faq画像
    Step.2 【I2C 数値を読み取る】を使い、値を取得します。取得した値が“1”なら測定が開始されたことを、“0”なら開始していないことを示しています。
    faq画像ここをクリックすると大きくなります
    Step.3 【I2C 数値を書き出す】を使い、値“15”を送ります。
    faq画像
    Step.4 【I2C 数値を読み取る】を使い、測定データを取得します。取得した測定データは反射時間の上位桁(2進数表記で上半分の桁)です。
    faq画像ここをクリックすると大きくなります
    Step.5 【I2C 数値を書き出す】を使い、値“14”を送る。
    faq画像
    Step.6 【I2C 数値を読み取る】を使い、測定データを取得します。取得した測定データは反射時間の下位桁(2進数表記で下半分の桁)です。
    faq画像ここをクリックすると大きくなります
    Step.7 取得した“上位桁”と“下位桁”の値が両方とも0でなければ、測定は成功です。【【上位桁×256】+下位桁】で反射時間(単位はマイクロ秒 = 1/1000ミリ秒)がわかります。さらに【【【反射時間-160】/2】×0.315】で物体までの距離(単位はミリメートル)がわかります。
    faq画像ここをクリックすると大きくなります
    faq画像

  • 超音波センサーmi-02からの測定データが正しいことを確認するには?

    センサーが正しく物体までの距離を測定していても、BBC マイクロビットと超音波センサーmi-02との間での通信が失敗し、正しい測定データが測れない場合があります。測定データが正しいことを確認するには、2つに分割した測定データの和をセンサー内とBBC マイクロビット内それぞれで計算し、比較することで確認できます。以下に具体的な手順を示します。

    Step.1 【I2C 数値を書き出す】を使い、値“16”を送ります。
    faq画像
    Step.2 【I2C 数値を読み取る】を使い、値を取得します。取得した数値は“上位桁と下位桁の和”です。
    faq画像ここをクリックすると大きくなります
    Step.3 個別に取得した“上位桁”と“下位桁”を足し算し、取得した“上位桁と下位桁の和”と等しいかどうかを確認します。等しければ反射時間が正しく取得できたことになります。等しくなければ、“上位桁”・“下位桁”・“上位桁と下位桁の和”の3つ内いずれかが正しく取得できなかったことになります。
    faq画像ここをクリックすると大きくなります

  • 駆動回路mi-01及び超音波センサーmi-02のスペックは?

    駆動回路mi-01
    電源    : 3V (単3形電池2本)
    消費電流    : 500mA (停止時50mA)
    入出力コネクタ : BBC マイクロビット、スイッチ入力、モーター出力×2、
    I2C通信(3.3V)×2、I2C通信(電源電圧)

    超音波センサーmi-02
    電源電圧 : 3.3V
    超音波 : 40kHz
    視野角(水平方向): 約±30°

    faq画像

  • マイコンロボットのモーターを交換しても良い?

    マイコンロボットにはセットに付属しているモーター以外を使用しないでください。

応用に関する質問(無線操縦)

  • 無線操縦をするには?

    BBC マイクロビット同士で通信をするときは初期設定が必要になります。コントローラー(送信)側から操縦の指示を出すには、ボタンなどの操作をしたらデータの送信を行うように設定します。ロボット(受信)側で操縦の指示を受けるには、受信したデータごとに動作を設定します。コントローラーでどの操作をしたらどのデータを送信するか、ロボットがどのデータを受信したらどの動作をするかをそれぞれ設定することで無線操縦が可能になります。以下に無線通信の具体的な手順を示します。

    Step.1 初期設定を行います。この初期設定はコントローラー側・ロボット側の両方で必要になります。【最初だけ】の中で【無線のグループを設定】を使い、同じグループ番号を設定します。同じ番号を設定したBBC マイクロビット同士が通信を行うためこの設定が必要です。
    faq画像
    Step.2 コントローラー側からデータの送信をするには、【無線で数値を送信】【無線で文字列を送信】【無線で送信】のいずれかを使います。それぞれで値・文字列・文字列と値を送信します。
    faq画像
    Step.3 ロボット側でデータの受信をするには、【無線で受信したとき(receivedNumber)】【無線で受信したとき(receivedString)】【無線で受信したとき(name)(value)】のいずれかを使います。それぞれ値・文字列・文字列と値を受信します。コントローラー側で使った送信ブロックに対応するものを使ってください。
    faq画像
    Step.4 受信したデータは、受信ブロックの(receivedNumber)などをドラッグして変数として取り出すことで使うことができます。【無線で受信したとき】の外(【ずっと】や関数など)でデータを使う場合は、任意の変数にデータを保存してください。
    faq画像

  • 複数組のコントローラーとロボットで個別に無線操縦するには?

    【無線のグループを設定】でコントローラーとロボットのペアごとに別のグループ番号を設定します。同じ番号を設定したBBC マイクロビット同士が通信を行います。なお、製品購入時のグループ番号は“37”です。
    faq画像