Installing “Mu” Editor for CircuitPython.
前回の続きです。前回の内容は、小中学生の皆さんがいきなり挑戦するのは難しいと思いますので、御両親か、電子工作に詳しい方にセットアップして貰うのが良いでしょう。
さて。一度 CircuitPython をインストールすると、それ以外には、パソコン(Raspberry Pi でも良いです)と「シリアル通信ソフト」(ターミナルソフト, ターミナルエミュレータなどとも呼びます)さえあれば、いろんなことができるのですが、それではちょっと荷が重いと思いますので、Python 専用のテキストエディタをインストールしてみましょう。
テキストエディタというのは、ワープロに似ていますが、文章を書くためのソフトではなくて、コンピュータのプログラムを入力したり編集したりするためのソフトです。CircuitPython 推奨のエディタは Mu(ミュー)と呼ばれるエディタなので、それをインストールしましょう。Mu エディタでは、Python を初めて勉強する人が便利なように、Python の構文(こうぶん。書き方のルール)をちゃんと覚えていない場合でも、入力の候補を手助けしてくれるような機能が備わっています。
インストールの方法について、詳しい説明はこちらにありますので、ここではポイントを絞って説明したいと思います。
Mu エディタのインストール
まず、こちらのサイトからソフトをダウンロードします。Windows か macOS かの別に注意してダウンロードしましょう。
なお、Raspberry Pi(ラズパイ)に Mu をインストールする場合には、こちらの説明が参考になります。
ダウンロード後、インストールしたら、さっそく起動します。しばらく待っていると、こんな画面が表示されると思います。
選択肢の中から CircuitPython を選んで、OK ボタンをクリックします。もし、次のようなダイアログ(繋がっている CircuitPython デバイスが見つかりません)が表示されたら、CircuitPython の動くマイコンボードを USB ケーブルでパソコンに接続して、OK ボタンをクリックしましょう。
すると、こんな画面になるはずです。
再び「L チカ」
それでは、前回と同様に「L チカ(LED 点滅)」をやってみましょう。
画面の「ここにコードを書いてね」という部分を削除して、以下のコードをコピペします。
import board
import digitalio
import time
pin_name = board.LED # Sparkfun ボード用に変更済
led = digitalio.DigitalInOut(pin_name)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
time.sleep(0.1)
led.value = False
time.sleep(0.1)
次のような画面になるはずです。(ここでは、文字を拡大して表示しています。)
そうしたら、画面上の「保存」というボタンをクリックします。保存先を聞かれるので、CIRCUITPY というドライブ(USB メモリ)に code.py
という名前で保存します。
もし、「上書きしても良いか(Do you want to replace it?)」というメッセージが出たら、Repace というボタンをクリックします。(まだ、ソフトの全体が日本語化されていない印象ですね。)
すると、CircuitPython は自動的にリセットされ、プログラムが動作を始めます。LED がチカチカしているのが分かりますね?
プログラムを修正してみる
これだけでは面白くないので、プログラムを修正してみましょう。
Mu エディタの中で、上の 10〜13行目の time.sleep()
の値を変更してみましょう。例えば、次のようにです。
led.value = True
time.sleep(1.0)
led.value = False
time.sleep(0.5)
変更が終わったら「保存」します。すぐにマイコンボードの動作が変わるのが分かるでしょう。
プログラムを安全に保存しておく
なお、作ったプログラムをマイコンボード上ではなく、パソコン上に保存しておきたい場合もあるでしょう。その場合は、ドライブ CIRCUITPY を Windows のエクスプローラ(macOS ならばファインダ)などで開いて、ファイルをコピーし、パソコン上のハードディスクなどの好きな場所にペーストすれば OK です。CircuitPython 上のプログラムは、何らかのトラブルで消えてしまうことがあるかも知れないので、このように保存しておくと安心です。
文字の表示と REPL について
上記のプログラムで LED の点滅ができるようになりましたが、何か文字の表示ができると嬉しいですね。パソコンのプログラミングの世界では、そのような文字表示の基本的なプログラムのことを、Hello, World などと呼ぶことがあります。
さっそく、Hello, World をしてみましょう。上記の「L チカ」のプログラムを消すのはもったいないので、これを書き換えて使うことにします。プログラムを次のように修正します。(スクロールすると全体が見られます。)
import board
import digitalio
import time
pin_name = board.LED # Sparkfun ボード用に変更済
led = digitalio.DigitalInOut(pin_name)
led.direction = digitalio.Direction.OUTPUT
print("Hello, World!\n") # 追加した行
ct = 0 # 追加した行
while True:
print("ct =", ct) # 追加した行
led.value = True
time.sleep(1.0)
led.value = False
time.sleep(0.5)
ct += 1 # 追加した行
4行ぶんを追加しています。どこに追加したか分かりますね?
まず、Mu エディタのメニューから「シリアル」というボタンをクリックします。すると、画面の下に CircuitPython REPL という画面(ペイン)が表示されます。続いて、「保存」ボタンをクリックしましょう。そうすると、REPL のペインに次のような表示が出てくるはずです。ここでは、ct = 7
の表示の後で、Control キーを押しながら c キーを押しています。(これを、Ctrl-C と略して呼びます。)
表示がでないときは、もう一度「保存」ボタンをクリックしてみてください。そして、適当なタイミングで Ctrl-C してみてください。
もし Ctrl-C で止まらないときは、一度、マイコンボード上のリセットボタンを押してみてください。画面上でエラーになると思いますが、そのときは OK ボタンを何度かクリックしてみてください。セーブ(保存)したファイルが消えてしまうなどのトラブルがないとは言えないので、通常は、できるだけリセットボタンを押さないほうが良いでしょう。
次のような画面になると思います。このような画面(やりとり)を、CircuitPython では REPL(リプル)と呼びます。
画面にあるように、何かキーを押してみましょう。すると、Python 言語のプロンプトが出ます。
Adafruit CircuitPython 6.3.0 on 2021-06-01; SparkFun SAMD21 Mini Breakout with
samd21g18
>>>
Python とお話しする
せっかくですので、Python と少し「お話し」をしてみましょう。>>>
の表示を Python のプロンプトと呼びますが、その直後に次のように入力してみましょう。print(3 + 5)
と入力し終わったら、最後にリターンキーを押します。(「>>>
」は入力しなくて良いです。また、文字は全て半角で入力します。+ 記号や、後の = 記号の両端のスペースは省略できますが、見やすさのためには省略しないほうがお勧めです。)
>>> print(3 + 5)
次のように表示されれば成功です。
>>> print(3 + 5)
8
Python を簡単な計算機として利用できますね。
参考(TIPS): 画面上部のテキストエディタでプログラムを書いているとき、スペースを省略して書いた後に、画面上の「Tidy」ボタンをクリックすると、プログラムコードが読みやすくなるように、自動的にスペースを調整してくれます。
さらに、次を試してみましょう。行の最後では、毎回リターンキーを押してください。
>>> import board
>>> import digitalio
>>> led = digitalio.DigitalInOut(board.LED)
>>> led.direction = digitalio.Direction.OUTPUT
>>> led.value = True
>>> led.value = False
led.value = True
とすると LED が点灯し、led.value = False
とすると LED が消灯するはずです。つまり、先ほどセーブしたプログラムと同じことを、REPL からも実行できる訳ですね。最後の 2行を何度か実行してみてください。パソコンキーボードのカーソルキー「↑」を押すと、最後に入力した行が表示されますので、何度も繰り返しタイプしなくて大丈夫です。
ちなみに、簡単な実験ならば REPL は便利ですが、実行した内容は自動的に保存されたりしないので、まとまったことをするのならば、プログラムを書いて保存、実行したほうが良いでしょう。
今日はここまで!
お問い合わせはお気軽に!