EV3_Micropython

MicroPythonでEV3を動かしてみよう!

2022年4月5日に書いた記事「EV3をPythonでプログラミング~環境構築」にて、EV3をMicroPythonでプログラミングするための準備を紹介しました。見てくれている方が思いのほか多いようですので、今回は実際にMicropythonでEv3を動かしてみましょう

これまでEV3ソフトウェアでプログラミングを作っていて、はじめてテキスト言語(MicroPython)でプログラミングしてみる方を対象に書いています。

EV3をPythonでプログラミング~環境構築 昨年販売終了となったレゴマインドストームEV3。 販売は終了したものの、ロボコンの世界ではまだ現役と言ってよいでしょう。そんなEV...
MicroPythonでEV3のタッチセンサーを使ってみよう! MicroPythonでレゴマインドストームEV3をプログラミングすることについては、「EV3をPythonでプログラミング~環境構...

プロジェクトの作成

Visual Studio Code(VS Code)を起動して、以下の手順でプロジェクトを新規作成します。

  1. 左のメニューの「EV3 MicroPython」のアイコンを選択し、「Create a new project」をクリックする。
  2. プロジェクト名入力し(英数半角文字のみ使用可能)、保存するフォルダーを選択する(フォルダーの新規作成で先に入力したプロジェクト名のフォルダを作成)。
  3. 新規プロジェクトが作成されてmain.pyファイルが自動で作成される。

ロボットを「3秒間、まっすぐ前進」させてみよう!

「3秒間、まっすぐ前進」プログラムを「EV3ソフトウェア(ビジュアルプログラミング)」と「Micro Python(テキストプログラミング)」で、それぞれ作ってみましょう。移動のスピードは問いませんが、ロボットの左側モーターはポートB、右側モーターをはートCに接続しているものとします。

EV3ソフトウェア

EV3ソフトウェアでは、タンクまたはステアリングを使って、以下のようにプログラミングすることができます(プログラム例ではタンクを使用)。簡単ですね。

EV3ソフトウェアでのプログラム例

Micro Python

今度は、同じ動作のプログラムをMicroPythonで作ってみましょう。

#!/usr/bin/env pybricks-micropython
from pybricks.ev3devices import Motor
from pybricks.parameters import Port
from pybricks.tools import wait

motor_left = Motor(Port.B)
motor_right = Motor(Port.C)

motor_left.run(360)
motor_right.run(360)
wait(3000)
motor_left.stop()
motor_right.stop()

1行目
Shebang(シバンまたはシェバン)と呼ばれ、Unix系システムにおいて、ファイルに書かれたプログラム文をどうやって実行するかを指定しています。EV3 MicroPythonではこれがないと動きませんので、必ず記述しましょう。

2~4行目
必要なモジュール(関数や」クラスなどをまとめたもの)をインポートします。

6~7行目
モーターを出力ポートBに接続し、それをプログラムの中で「motor_left」という名前で扱うことを記述しています。同様にもう一つのモーターをポートCに接続し、「motor_rightという真苗で扱うことを記述しています。

9~10行目
「run(360)」でモーターを回転させています。( )内の数値は角速度(度/秒)です。

11行目
「wait(3000)」でプログラムを停止させています。( )内の停止させる時間(ミリ秒)です。この間、モーターは動き続けます。

12~13行目
「stop()」でモーターを停止させています。
※ 「stop()」は「ブレーキなし」ですので、モーターは惰性で回転を続けます。「ブレーキあり」としたい場合は「stop()」を「brake()」に変えてください。

EV3ソフトエアのタンクブロックは、ブレーキの種類を選択できるようになっていること(プログラム画像の赤枠部分)からも分かりますが、実は、「モーターを動かす」、「モーターを停止する」、という2つの命令を含んでいるのです。一方、Pythonのプログラム例の「run」は、「モーターを動かす」命令のみで、「モーターを停止する」命令は含まれません、したがって、「stop()」がないと、ロボットは3秒たっても停止してくれません、明かりのスイッチをオンにして電気を点けたら、スイッチをオフにしないと電気は消えないのと同じです。

まとめ

今回は、MocroPythonでEV3のモーターを動かしてみました。EV3センサーを扱えるのはもちろん、その他サードパーティ製センサーもリファレンスの対応センサ一覧にあるものは使用可能です。また、各種I2Cデバイス等も使用できますので、EV3ソフトウェアからMicroPythonを使ったプログラミングへ移行し、テキスト言語に挑戦してみましょう。