2025年6月30日
026-1.SPIKEプライム Python入門(SPIKE App3)-第1回「非同期処理の実験をする」
この記事では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」と専用アプリ(SPIKEアプリ)を使った、Pythonのプログラミング方法について紹介します。(文/松原拓也)
◆ SPIKEアプリのバージョンについて
SPIKEのプログラミングに使用する公式のアプリのことを「SPIKEアプリ(SPIKE App)」と言います。 SPIKEアプリではPythonという言語を使ってプログラムを作成することができます(厳密にはMicroPythonです)。
原稿執筆時点で、SPIKEアプリの最新バージョンは3.5.1です。このバージョン3のSPIKEアプリを「SPIKE App3」と呼びます。そして、バージョン2のSPIKEアプリは「SPIKEアプリ2」または「SPIKEアプリLegacy(レガシー)」と呼びます。SPIKEアプリはバージョンによって仕様が大きく違っています。
SPIKEアプリ2は今でも公式サイトから入手可能です(バージョン2.0.10)。SPIKEアプリはWindow版、macOS版、Webブラウザ版などがあります。この記事ではWindowを使用しています。Webブラウザ版はバージョン3のみです。 バージョン2のサポートは2023年で終了しています。このため、バージョン2→バージョン3への移行が必要となります。
ラージハブのハブOS(ファームウェア)もバージョンごとに動作が違います。ラージハブに電源を入れた時、バージョン2の場合はライトが白色に光ります。バージョン3の場合はライトが緑色に光ります。
SPIKEアプリ3を使用すると、ラージハブにはバージョン3専用のハブOSが書き込まれます。バージョン3専用のハブOSではバージョン2のプログラムは実行できません。バージョン2のプログラムを実行したい場合には、ハブOSをバージョン2に戻さないといけません。ハブOSを戻す方法については、次のページで紹介されています。
https://afrel.co.jp/product/spike/technology-spike/basic/software-basic/54122/
◆ 非同期処理の実験
Pythonでファイルを新規作成すると、自動生成されるプログラムがこちらです。
「async」「await」は非同期処理を行うための構文です。非同期処理は複数の処理を並列的に行う機能のことです。
「async def 関数名():」と記述すると、非同期処理用の関数を定義することができます。この関数をコルーチンと呼びます。
「await 関数()」と記述すると、処理が終わるまで待つことができます。待っている間に別の処理を行うことができます。
MicroPythonで非同期処理を管理するには通常、「uasyncio」というモジュールを使います。 しかし、SPIKEアプリの場合は「runloop」というモジュールを使います。「runloop.run(関数名())」と記述すると、関数を実行します。
以上の技術を応用すると、「センサーを読みながらモーターを動かす」というようなロボットを作ることができます。
今回作成したプログラム
非同期処理のプログラムを実行中の様子
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。