2024年12月23日

015-1.EV3で楽しむスクラッチ3.0-第2回「スクラッチでモーターを動かす」

ここでは「スクラッチ(Scratch)」を使ってレゴ マインドストームEV3のプログラミングを行う方法を紹介します。スクラッチとはMITメディアラボという研究施設のライフロングキンダーガーテングループによって開発されているプログラムのツールです。スクラッチの特徴としては、教育向けに作られていて親しみやすいこと、無償で使えること、Webブラウザでも動作すること、直観的にプログラムが作れることなどがあります。(文/松原拓也)

◆ スクラッチ

今回はEV3のLモーターを動かしてみたいと思います。
赤いワクで囲んだ部分がモーターに関連するブロックです。 全部で4種類あります。EV3ソフトウェアで使っているブロックと比べると、かなり種類が少ないです。

インテリジェントブロックEV3とLモーターを用意します。モーターは出力ポートAに接続します。

パソコンのWebブラウザを使い、スクラッチの公式ページ(https://scratch.mit.edu/)を開きましょう。詳しい操作方法は第一回目の連載記事で紹介しています。
これはモーターを回すだけのプログラムです。キーボードのスペースキーを押したイベントに応じて、「モーター~をこちら向きに~秒間回す」というブロックを実行します。モーターの回転は時間で制御します。 角度で回転を制御するブロックは存在しないようです。

プログラムを実行しました。 キーボードのスペースキーを押すと、1秒間だけ矢印の方 向に回転します。ブロック内にある「こちら向き」というのは正転のことだとわかりました。

パソコンの画面には「モーターの位置」が表示されます。 スペースキーを何度か押して、値を見たところ「194」→「349」→「238」→「119」と変化しました。
おそらく位置というのは回転軸の角度のことで、角度が360度を超えると0度に戻る仕様だと思います。
そのため、実際には、、、
194
↓+155度増える
349
↓+249度増える
238(実際は238+360度)
↓+241度増える
119(実際は119+360+360度)
、、、こういう意味ではないかと思います。しかし、角度の増える量にばらつきがあるのが気になります。

◆ 「こちら向き」と「あちら向き」

先ほどは「こちら向き」のブロックを使いましたので、今度は「あちら向き」のブロックも使います。
このようなプログラムを作りました。

プログラムを実行した様子がこちらです。
カーソルキーの「→」キーを押すと、青色の矢印の方向に1秒間だけ回転します。これが「こちら向き」です。
カーソルキーの「←」キーを押すと、赤色の矢印の方向に1秒間だけ回転します。これが「あちら向き」です。

◆ 車型ロボットを走らせる

続いて、2つのモーターを使った車型ロボットを動かしてみたいと思います。
モーターは右タイヤ側を出力ポートA、左タイヤ側を出力ポートDに接続します。

最初に思いついたプログラムがこちらです。
実はこのプログラムは失敗作なのですが、どこがおかしいか気が付きますでしょうか?

このプログラムではキーボードのカーソルが押されたら2つのモーターを回しています。
たとえば、カーソルキーの「↑」が押されたら、ポートAとポートDのモーターを「こちら向き」に1秒間回転させています。

このモーターを回すブロックは処理が完了するまで抜け出ることがありません。1秒間モーターを回すと、次のブロックが実行されるまでには1秒待たないといけません。
そのため、写真のように2つのモーターが順番に回ってしまいます。そのため、ロボットがまっすぐ進んでくれません。同時にモーター回してくれるブロックが存在しません。これは、困りました。

◆ 車型ロボットを走らせる(対策版)

このままだと車型ロボットを走らせることができません。
あまり良い解決策ではないのですが、対策したプログラムを作ってみました。モーターの回転時間をできるだけ短くして、交互に回しています。

実行してみました。ヨチヨチ歩きみたくなっていますが、一応走らせることができました。「↑」キーを押すと前進します。「→」キーを押すと右せん回、「←」キーを押すと左せん回します。
スクラッチ3.0では一度に1つのモーターしか回せない。つまり、2つのモーターを同時に回せないということがわかってしまいました。現時点ではこうした対策方法しかありませんが、将来的にはバージョンアップして、ブロックの種類が増えてくれたら嬉しいです。

今回作成したプログラム(スクラッチ3.0用)

当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。