今回は、mBot2プログラミングシリーズ(mBlock編)の第1回です。
この回では、mBot2を実際に動かすための簡単なプログラムを作成します。
mBlockを使って、mBot2に「前進」「停止」「回転」といった基本的な動作を指示する方法を学びましょう。
この記事で分かること
- mBot2のモーター制御方法
- モーター制御に関するブロックとその使い方
- mBot2を動かす基本的なプログラムの作成方法
mBot2のモーター制御の基本
mBot2のタイヤ駆動には、高精度な制御が可能なエンコーダモーターが使用されています。
エンコーダモーターとは、モーターの回転速度や回転位置を正確に制御することが可能なモーターです。

エンコーダモーターの特徴
- 高精度な制御:モーターの回転速度や位置を非常に高い精度で制御できます。
- 位置情報の取得:モーターシャフトが回転する角度を計測可能です。
- 速度情報の取得:モーターの回転速度を計測可能です。
mBlockとは?『スクラッチ(Scratch)』との違い
mBlockは、小学校や学習塾で取り入れられている『スクラッチ(Scratch)』をベースとしたビジュアルプログラミングツールです。
スクラッチの基本的な操作感を引き継ぎながら、ロボットやハードウェアの制御に特化しているため、mBlockを使えば、プログラミング初心者でも簡単にロボットプログラミングを始めることができます。
mBlockで使用するブロック
『イベント』パレット
今回は第1回のため、イベントパレットについても簡単に説明します。
イベントパレットはプログラムを動作させる「きっかけ」のブロックが入っています。
プログラムの先頭にはこのブロックを置きます。

CyberPi(mBot2)が起動したときにプログラムが開始。

CyberPiのジョイスティックが操作されたときにプログラムが開始。
次の選択が可能。
・↑/↓/←/→に向ける
・中央が押される

CyberPiのA(またはB)ボタンが押されたときにプログラムが開始。

CyberPiの傾きを検出したときにプログラムが開始。
傾き検出は次の6つから選択が可能。
・前/後/左/右の傾き
・ディスプレイの向きが上/下

CyberPiの揺れや回転を検出したときにプログラムが開始。
次の8つから選択が可能。
・上(「振る」)/下/左/右に揺れ
・揺れている(強さ20以上の揺れ)
・時計/反時計回りの回転
・落下

CyberPiのセンサーが検出した値が、指定した値より大きい(または小さい)ときにプログラムが開始。
センサー値は次の4つから選択が可能。
・明るさ
・音量
・揺れの強さ
・タイマー

mBlock画面上の旗マークを押したときにプログラムが開始。

キーボードのスペースキーを押したときにプログラムが開始。
▼をクリックすると、スペースキー以外のボタンを選択可能です(a~z、0~9、↑→↓←)。

他のプログラムで送られた「message」を受け取ったときにプログラムが開始。
massageの内容は任意に変更が可能です。
『mBot2 シャーシ』パレット
mBot2のモーターを制御するためのブロックが入っています。


mBot2が指定された速度[RPM]で、前進/後退/右回転/左回転します。
- 上のブロックは指定秒数後に停止、下のブロックは動き続けます
- 0~200RPMの設定が可能(0は停止)


mBot2が指定された距離[cm/インチ]だけ前進/後退、指定された角度だけ左回転/右回転します。



mBot2の左右のモーターを単独で制御します。
それぞれ次の選択・設定が可能です。
・左車輪/右車輪/全て(両車輪)
・回転速度[RPM]/強さ[%]の設定
・角度の設定


mBot2の左右のモーターを個別に制御します。
回転速度[RPM]/強さ[%]を設定します。
例)mBot2を前進させる場合は、EM1にプラスの値、EM2にマイナスの値を設定します。

モーターが停止します。EM1/EM2/全て(両車輪)の選択が可能です。


モーターの回転速度[RPM]/強さ[%]、及び角度[°]を参照します。
EM1/EM2の選択が可能です。

モーターの角度計測値をゼロにリセットします。
EM1/EM2の選択が可能です。

モーターのオートロックを制御します。
オートロックとは、モータが現在の位置を維持しようとする機能で、外部から力が加わっても動かないように制御されます。
次の選択が可能です。
・左車輪/右車輪/全て(両車輪)
・(オートロック)有効/無効
『見た目』パレット
見た目パレットはCyberPiのディスプレイ表示を制御するブロックが入っています。
今回は、モーター制御の動作確認のために一部のブロックを紹介します。


指定した文字列をCyberPiのディスプレイに表示します。
mBlockを使ったmBot2のプログラミング方法を丁寧に解説していておススメです。
簡単な動作プログラム作成
mBot2のモータ制御プログラム
『旗マークを押したら、3秒間前進する』プログラムを作ってみます。

上のようにブロックを接続し、時間の設定を初期値の1秒→3秒に変更して完成です。
次に、『ジョイスティックを右に傾けたら、90°右回転する』プログラムを作ってみます。

上の様にブロックを接続し、それぞれ次の通り初期値から変更します。
- イベントブロックは「↑」→「→」に変更
- mBot2シャーシブロックは「左折」→「右折」に変更
CyberPiのディスプレイ制御プログラム
『CyberPiが起動したら、ディスプレイに「Hello」を表示する』プログラムを作ってみます。

見た目パレットの『〇を表示する』ブロックを使用します。
初期値「makeblock」を「Hello」に変更します。

【例題】mBot2を動かしてみよう
例題1:ジョイスティックで動かす
- 例題
- 解答例
ジョイスティックを上下左右に倒したときに、mBot2を各方向へ動かし、
ジョイスティックを押したときに、停止するプログラムを作ってみましょう。





「ジョイスティックが〇とき」のイベントブロックを用いて、該当のキーを選択します。
mBot2の動作は「〇RPMで前進する」ブロックを使い、それぞれの方向を定義します。
例題2:円を描いて走らせる
- 例題
- 解答例
『CyberPiのBボタンを押すとmBot2が円を描いて動き、Aボタンを押すと停止する』プログラムを作ってみましょう。
※円の大きさは問いません


- 円軌道を描かせるために、左右のモーター回転速度を個別に設定するブロックを使う
左右のモーター速度は、一方をプラス、もう一方をマイナス設定とすることでmBot2のタイヤは同一方向に回ります。
あとは、左右のモーター回転速度に差をつけることで、円を描いて走ることができます。
例題3:回転速度をディスプレイに表示する
- 例題
- 解答例
『CyberPiのBボタンを押す度にエンコーダーモータが180°回転し、モーターが回転した角度をディスプレイに表示する』プログラムを作ってみましょう。
ディスプレイ表示のイメージは次の通りです。
回転角度:180
回転角度:179
回転角度:181
・
・
・

- 最初にエンコーダモーターの角度をリセットする
- 『エンコーダモーターの角度』ブロックをディスプレイに表示させる
- 角度表示後は改行する
エンコーダモーターの角度をリセットすることで、Bボタンを押すごとに0°から計測を始めます。
ディスプレイ表示の改行有り/無しは、意図する表示となるように意識して使い分けましょう。
まとめ
今回は、mBot2の「前進」や「回転」、「停止」といった基本的な動作プログラムを作成ました。
こうした基本が、後の応用プログラムに繋がっていきますので、是非、基本を押さえるようにしてください。
次回は、mBot2のセンサー値を活用する上で欠かせない『演算』についてご紹介します。
mBlockを使ったmBot2のプログラミング方法を丁寧に解説していておススメです。
『mBotでものづくりをはじめよう』には、mBotを使用した拡張的な遊びが満載で、mBot2にも活かせます。mBotのパーツを段ボールと組み合わせてオリジナルのロボットを作るといったような拡張的な遊びが楽しめます。