2025年1月7日

017-1.SPIKEプライム入門-第2回「モーターを回す」

この連載では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」を使ったプログラミングの方法を紹介します。SPIKEは2020年1月にレゴ エデュケーションが発売したSTEAM教材です。マイコン搭載のブロックをプログラミングすることで、科学・技術・工学・アート・数学を学ぶことができます。プログラミングを行うにはWindowsかMacのパソコン、Androidタブレット、iPad、Chromebookのいずれかが必要です。(文/松原拓也)

◆ SPIKEのモーター

今回はSPIKEのモーターを使ってみたいと思います。 SPIKEのセットには「テクニック・Mアンギュラーモーター(Mモーター)」が2個と「テクニック・Lアンギュラーモーター(Lモーター)」が1個、合計3個のモーターが付属しています。 Lモーターのほうがサイズが大きいです。
名前の「アンギュラーモーター」は「角ばったモーター」という意味ですが、この場合、「角度制御ができるモーター」という意味も入っているような気もします。正解はよくわかりません。

SPIKEアプリを起動します。
本来ならば、「スタート」を押して、「はじめに」で使い方を覚えるべきなのですが、この方法だとモーターもセンサーも一度に学ぶことができてしまいます。
今回はモーターだけを学びたいので、「新しいプロジ...」をクリックします。

クリックすると、プログラム作成用の画面に移ります。 最初に赤いワクの部分をクリックして、プロジェクト名を変更します。

パレットの「モーター」をクリックすると、 モーター用のブロックが一覧表示されます。
「位置」 ブロックはモーターの回転軸の角度を格納しています。
「スピード」 ブロックはモーターの回転速度を格納しています。

「テクニック・ラージハブ(ハブ)」の「I/Oポート(ポート)」にLモーターを接続します。ポートはA~Fまでありますが、ここでは「A」に接続することにします。
ハブはポートに接続されているモーター(種類や角度)を自動的に検出することができます。

モーターを一回転させるプログラムです。「~スピードを~%にする」はモーターの回転速度を設定するブロックです。初期設定では75%です。速いと目で追いにくいので、「30%」にします。
実はこの他にもモーターの「パワー」という設定値があります。パワーはモーターに流す電気の量のことです。
ハブはプログラムで指定した回転速度に合うようにパワーを自動的に調節します。たとえば、回転速度が目標より遅かった場合はパワーを増やし、目標よりも速かった場合はパワーを減らすわけです。
「~を~の方向に~回す」はモーターを回転させるブロックです。ここでは時計回りに1回転させています。
回転量は「回転」「度」「秒」の設定ができます。

プロジェクトは自動的に保存されます。 プロジェクトは「マイプロジェクト」の画面で編集することができます。

作成したプロジェクトのファイルは「ドキュメント」フォルダ内の「LEGO Education SPIKE」フォルダに保存されます。
このファイルを他の人に渡せば、別のパソコンやタブレットでプログラムを実行することができます。ファイルを開くにはメニューから「ファイルを開く」を選択します。

1つのブロックで複数のモーターを回すこともできます。
これはポートAとポートCのモーターを一緒に回すプログラムです。 実行すると、MモーターとLモーターが同時に回転します。モーターの回転するスピードは自動的にコントロールされますので、回転が終わるタイミングはぴったり同じです。

◆ 制御用ブロック

さらに高度にモーターを動かします。パレットの「制御」をクリックします。
制御用のブロックが表示されます。 これを使うと、処理の停止、分岐、繰り返しなどができるようになります。

「~回繰り返す」ブロックを使ってモーターを回転させるプログラムを作りました。
実行すると、90度ずつの回転を4回繰り返します。 最終的に360度になります。

実行してみて気が付いたのですが、モーターの軸がズレていると見た目が良くないので、ぴったり0度からスタートするようにします。回転軸の0度にはしるしが付いています。何度かモーターを回していると回転軸がズレてきます。このズレは絶対的な角度として検出されていますので、0度に戻すことができます。

「~位置~に行く」ブロックを使って、回転軸を0度に戻します。
「最短経路で」とは回転方向を自動で決めるという設定です。他にも「時計回りで」「反時計回りで」の設定があります。

◆ モーター拡張

「モーター拡張」を使うと、さらに高度なモーターの制御ができるようになります。
パレットの一番下にある「機能拡張」をクリックします。 すると、このような画面が表示されますので、「モーター拡張」をクリックして画面を閉じます。

パレットに「モーター拡張」が追加されました。
「角度カウンタ」はモーターの相対的な角度です。絶対的な角度ではなく、プログラム上でリセットが可能です。使い勝手はEV3の角度センサーと同じです。
「ストール検知」はモーターに負荷がかかりすぎて回らなくなった状態(ストール)を検出するための設定です。初期設定ではストール検知はオンになっています。ストールを検出した場合、プログラムの実行を中断するようです。手で回転軸を押さえて、ストールを発生させようとしたのですが、力が強すぎて再現できませんでした。モーターが故障すると怖いので、無理してストールさせないほうがいいと思います。

「~を表示する」ブロックを使って、角度カウンタを表示するプログラムです。
実行すると、モーターが一回転します。そして、 電光掲示板のように横にスクロールしてLEDマトリックスに角度が表示されます。この場合、「363」度と表示されました。360度回ってから惰性で3度ほど回っていることがわかります。 「位置」ブロックでは360度以上になると「0度」に戻ってしまいますが、角度カウンタの場合は360度以上の角度も検出することができます。

次回はセンサーについて紹介したいと思います。

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