2024年12月27日
016-1.EV3で楽しむMakeCode入門-第2回「モーターを動かす」
マイクロソフトが無償で提供している「Microsoft MakeCode(メイクコード)」というプログラムの開発環境を使ってレゴ マインドストームEV3のプログラミングを行う方法を紹介します。MakeCodeはインターネットに接続されたWebブラウザで動作します。画面上のブロックを組み合わせるだけで、直観的にプログラムを作成することができます。MakeCodeの公式サイトはこちらです。(文/松原拓也)
◆ ファイルの読み込みとプロジェクトの削除

前回の記事で説明が抜けていた情報を紹介します。
まず、ファイルの読み込み方です。ファイルを読み込むには、ホーム画面で「読み込む」ボタンを押します。読み込むことができるのはuf2ファイルのみです。一度読み込むとマイプロジェクトの1つとして登録されます。

マイプロジェクトに登録されたプログラムはクリックするだけで開くことができます。この機能は非常に便利なのですが、プログラムが増えすぎたり、古すぎるプログラムが表示されてしまうと見た目が悪くなってしまいます。

そこで、見栄えを良くするため、不要なプロジェクトを削除します。削除するにはメニューから「プロジェクトを削除」を選択するだけです。
◆ モーターの回転/停止

ここからが本題です。モーターを回してみたいと思います。 インテリジェントブロックEV3にLモーターを接続します。

モーター関連のブロックの一覧です。たくさんの種類があります。
モーターを単純に回したり止めたりするだけではなく、決まった角度だけ回すことができます。さらに、加速を付けて回したり、ブレーキをかけて止めたりすることができます。EV3ソフトウェアと同等の機能を備えています。

ポートAのLモーターを1秒間だけ回転させるプログラムです(motor1)。これよりももっと上手なモーターの回し方があるのですが、 今回はひとまずこの方法で回します。
「実行」ブロックを使ってモーターを回して、「停止」ブロックを使ってモーターを停止させます。モーターを回す時間は「停止1000ms」ブロックを使って調節することにします。

画面左側にあるのが「シミュレータ」です。シミュレータは常に動作しています。
インテリジェントブロックの中央ボタンをクリックすると、 モーターが1秒だけ回転します。「50%」という表示はモーターのパワーを表しています。

プログラムを実行すると、このとおりです。
中央のボタンを押すと、モーターが1秒だけ正転します。うまく動きました。

なお、プログラムを再度実行したいという場合、左から2番目のタブの「BrkProg_SAVE」からファイルを選んで実行します。
◆ ロボットを前進させるプログラム

続いて、ロボットを動かしてみたいと思います。
Lモーターを2つ用意して、ポートAとポートDにそれぞれ接続します。

ロボットを20cm前進させるプログラムを作ります。

ロボットを20cm前進させるプログラムがこちらです(motor2)。
ここでは2つのモーターを回す必要がありますので、「操作」ブロックを使うことにします。この「操作」ブロックは「回転率」というパラメータを使って、2つのモーターの回転する割合を変化させることができます。回転率が0の場合は、まっすぐ進みます。 ブロックの右端にある「+」のマークをクリックすると、 さらに細かい設定ができるようになります。 ここでは「1.136」回転に設定して、20cmぶんモーターが回転するようにします。

プログラムを実行すると、ロボットが20cm前進して止まりました。成功です。
◆ ロボットをせん回させるプログラム

続いて、ロボットを360度せん回させるプログラムを作ります。

こちらがせん回するプログラムです(motor3)。
「タンク」ブロックを使います。パラメータは「1.696」回転としました。
「タンク」ブロックは2つのモーターを一度に回すためのブロックです。機能としては「操作」ブロックに似ています。
「操作」ブロックは回転率を限界に設定すると片方のモーターが停止してしまうため、その場せん回させることができませんが、「タンク」ブロックはモーターを逆転できるので、その場せん回をさせることができます。

プログラムを実行すると、ポートAのモーターが正転して、ポートDのモーターが逆転します。
これによって、ロボットが反時計回りに360度せん回します。

モーターをぴったり停止させたい場合、「設定~ブレーキ」ブロックを使って、パラメータをオンに設定します。これで、モーターが停止する際にブレーキがかかるようになります。 逆にブレーキがオフの場合、モーターは惰性で回転しながら停止します。
モーターのパワーが25%くらいの場合、回転にいきおいが付いていないので、ブレーキのオン/オフを切り替えてもあまり動きに違いが出ません。ブレーキはモーターのパワーが大きい場合に使いましょう。
今回作成したプログラム(MakeCode)
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。