CIrcuitPythonとは
CIrcuitPythonとはMicroPythonから派生した教育向け、初心者向けの開発言語です。Adafruit Industriesが開発を支援しており、各種マイクロコントローラーに対応しています。
Adafruit industriesによって様々なハードウエアのライブラリが管理されているのも便利な点です。ArduinoやmicroPythonではまずどのライブラリを使えばいいのか?を調べるだけでかなり時間がかかってしまいますからね。プログラミングが初めてという方にもつまづきポイントは少ないほうがいいです。
CircuitPythonでPythonの基本を学ぶ
いまプログラミング業界でPythonはとても注目されています。機械学習、人工知能などそのあたりはPython一色といっても過言ではないでしょう。そんなPythonをもとにしたCircuitPythonで遊ぶことでPythonの基本を知ることにつながり、やがて本格的なプログラマーを目指そうとしたときにとても役に立ちます。
Maker Pi RP2040とは
Maker Pi RP2040はCytron社製のマイクロコントローラでRP2040というチップを採用しています。
13個のBlue LED、プログラマブルボタン、DCモーターシールド、サーボモーターシールド、ブザー、フルカラーのNeoPixelも搭載されています。これがわずか12ドルで売られているから驚きです。Arduinoなんかでこれらをフルセットで揃えようとすると、3倍以上の価格が必要になってきますからね。
これを使ってCircuitPythonの解説をしていきましょう。
開発環境
まずは
このページからUF2ファイルをダウンロードして、Maker Pi RP2040に書き込みます。現在はCircuitPython 8.02でした。そうするとUSBファイルストレージCIRCUITPYとして認識されます。
そこにテキストエディタで〇〇.pyというファイルを作成してcode.pyという名前でCIRCUITPYに書き込むとプログラムが実行されます。私はVisual Studio Codeというエディタを使って、CircuitPythonを書いています。code.pyという名前でCIRCUITPYに書き込むと、またはRSTボタンを押すとすぐにこのプログラムが実行されます。
LedBlink.py
#Maker Pi RP2040 LEDを光らせるサンプルプログラム
import board
import time
import digitalio
# LED 初期化
led = digitalio.DigitalInOut(board.GP0)
# Maker Pi RP2040はオンボードでLEDを搭載しています。
# GP0-GP7 and GP16,GP17,GP26,GP27,GP28
# どれでも選べます
led.direction = digitalio.Direction.OUTPUT
# LEDを操作
led.value = 1 #1で光ります
time.sleep(0.5) # 0.5秒待って
led.value = 0 #0で消します
time.sleep(0.5) #0.5秒待ちます
LEDが光りましたか?一度だけなので見逃さないように注意してください。もう一度上書きするとまた光ってくれると思います。
importはモジュールの読み込み
import boardで使えるpinをアクティブにします。REPLモードで
>>>import board
>>>dir(board)
[‘class‘, ‘name‘, ‘A0’, ‘A1’, ‘A2’, ‘A3’, ‘BUZZER’, ‘GP0’, ‘GP1’, ‘GP10’, ‘GP11’, ‘GP12’, ‘GP13’, ‘GP14’, ‘GP15’, ‘GP16’, ‘GP17’, ‘GP18’, ‘GP19’, ‘GP2’, ‘GP20’, ‘GP21’, ‘GP22’, ‘GP26’, ‘GP26_A0’, ‘GP27’, ‘GP27_A1’, ‘GP28’, ‘GP28_A2’, ‘GP3’, ‘GP4’, ‘GP5’, ‘GP6’, ‘GP7’, ‘GP8’, ‘GP9’, ‘LED’, ‘M1A’, ‘M1B’, ‘M2A’, ‘M2B’, ‘NEOPIXEL’, ‘RGB’, ‘VBATT’, ‘VOLTAGE_MONITOR’, ‘board_id’]
と使えるpinを明示してくれます。
import timeで時間を操作する
import timeによってtime.sleepという関数が使えるようになります。17行目time.sleepの中の数字を変えてみましょう。1にすると一秒間、100にすると1分40秒点灯します。
digitalioの使い方
import digitalioでデジタルなオン・オフを扱えるようになります。8行目led という変数にGP0のdigitalIOを設定します。14行目led.directionでOUTPUTを選択します。センサーやボタンはINPUTを使います。
led.value = 1で点灯。=0で消灯します。
while True: は一生やってろ!
17行目にwhile True:を入れてみてください。これは以下のプログラムをずーっと続けなさいという命令です。以下の行はインデント(4文字分のスペース)が必要になります。led.valueに1を代入すると点灯、0を代入すると消灯。time.sleep(0.5)は0.5秒間おやすみということです。このタイミングを自分の好きなように光らせましょう。音楽に合わせて光らせるのもいいですね。