CircuitPython 10行プログラミング (1) 準備
CircuitPythonのプログラムをコーディングするのにMuエディタを使います。執筆時点のバージョンは1.02です。最初、ハードウェアはAdafruitのマイコン・ボードTrinket M0を使います。I/Oポートの多いAdafruit Grand Central M4 Express featuring the SAMD51が入手できるようになったら、そちらを使う予定です。
Muエディタを立ち上げた後、最初に「モード」で、CircuitPythonを選択します。
●シリアル・ポートを通してモニタできる
Trinket M0とPCをUSBケーブルでつなぎます。Muでプログラムを保存するのはストレージに見えているTrinket M0で、名称はCIRCUIYPYです。USBケーブルを通して保存がすむと、Trinket M0にリセットがかかり、Pythonインタプリタが動きます。
プログラムが動いてprint()が実行されたときは、USBでつないだCOMポートを通して、Muのシリアルコンソールに表示ができます。COMポートは自動で探してきます。
メニュのシリアルをクリックすると、画面下にシリアルモニタが出ます。
print("Hello, world!") |
と入力して「保存」をクリックすると、main.pyというファイル名で、CIRCUIYPYというドライブのルートにCOMポート経由で保存され、画面下のシリアル・モニタに出力 Hello, world! が出ます。文法はPython3だと思われます。Python3を小さい容量のマイコンで動かすようにしたのがMicroPythonで、その傍流がCircuitPythonだと思われます。
Pythonはライブラリが豊富です。CircuitPythonにもAdafruitのオリジナルのライブラリがありますが、Trinket M0のディスク容量は小さいので、まとめて読み込んで利用はできません。
●インデントに慣れる
Pythonは、C言語などのように{ }は使わず、インデントを多用します。通常TABではなくスペースが四つです。「Hello, world!」をずっと表示し続けるプログラムです。
While 1: の:を忘れたと仮定します。「チェック」ボタンをクリックすると、文法チェックと、Pythonのコーディング・ルールからの逸脱を指摘してくれます(この画面では何も指摘されていない)。
実用的な、CPUの温度を調べるコマンドを利用します。ライブラリmicrocontrollerはCircuitPython特有のようです。
連続してシリアル通信を使っていると、エディタの反応速度が落ちるので、標準ライブラリにあるtimeモジュールに入っているsleep()で待ち時間2秒を追加します。
ライブラリmicrocontrollerは、もうひとつ周波数の情報が得られます。48MHzで動いていたんですね。
Muのプロッタ描画機能を使うように、温度の出力を修正します。Pythonのコメントは#を使います。C言語のような /* */ は ''' ''' で複数行にわたってコメントアウトできます。
10行プログラムの予定でしたが、5,6行で終わってしまいました。Pythonはインタプリタなのでコンパイル作業がなく、main.pyという固定したファイル名を実行するように仕組みが作られているので、CircuitPythonは使い勝手がとても良いと感じました。
(※)CircuitPythonはAdafrit社が中心となって進めている言語です。ハードウェアは同社のものやいくつか他社の製品もサポートされているようです。イントロは、ここから読めます。現在バージョン3.xで、もうすぐBLEをサポートした4.xになる予定です。
(※)Muは1.0であったデバッグ機能が1.0.2で削られました。もうすぐ1.1が出るようなので、復活するのを期待しましょう。