PicoにCircuitPythonをインストール
このページからUF2ファイルをダウンロード。BOOTSELボタンを押しながらパソコンと接続して、Picoにドラッグすれば完了です。インストールが完了すると、Raspberry Pi PicoはCIRCUITPYというドライブ名を持ったストレージデバイスとして認識されます。
Picoの特徴
Picoの特徴はなんといっても自由に使えるGPIOピンが20本以上あることです。LEDをたくさんコントロールするときに最適です。また大きさはMaker Pi RP2040に比べて1/5のサイズです。
CircuitPythonでPWM出力を試してみる
PWMとはPulse With Modurationの略語です。特定の周波数でオンとオフを繰り返し、その比率によって電力を調整することができます。
#CircuitPythonでPWM出力するサンプルプログラム
import time
import board
import pwmio
# LED setup for board.GP0
led = pwmio.PWMOut(board.GP0, frequency=1000, duty_cycle=0)
while True:
for i in range(100):
# PWM LED up and down
if i < 50:
led.duty_cycle = int(i * 2 * 65535 / 100) # 明るくする
else:
led.duty_cycle = 65535 - int((i - 50) * 2 * 65535 / 100) # 暗くする
time.sleep(0.01)
pwmio.PWMOut()
GP0ピンにPWMOutをセットします。frequency(周波数)は1000に設定します。つまり1khzですね。duty_cycleは65535を100%として計算されます。100%とはつまりデジタル的にオンの状態です。50%の出力のためには32768のduty_cycle(デューティー比)になりますね。
13行目のintは小数点の’ある数字(float)を整数(int)にするための関数です。
ねんのためfor文if文あたりも解説しておきましょう。まずfor文では0から100までの数字を発生させます。50未満のときはその数に2をかけて、さらに65535をかけてそれを100で割ります。その数をduty比にします。50以上になったら今度は暗くするために65535から数をどんどん引いてduty比を0に近づけていくのです。
3つのLEDをPWMで操作する
#Raspberry Pi Pico CircuitPythonで3つのLEDをPWM制御
import time
import board
import pwmio
import random
LED1 = pwmio.PWMOut(board.GP0, frequency=1000, duty_cycle=0)
LED2 = pwmio.PWMOut(board.GP1, frequency=1000, duty_cycle=0)
LED3 = pwmio.PWMOut(board.GP2, frequency=1000, duty_cycle=0)
while True:
LED1.duty_cycle = random.randrange(2000,30000)
LED2.duty_cycle = random.randrange(1000,30000)
LED3.duty_cycle = random.randrange(1000,30000)
time.sleep(float(random.random()))
random関数
random.randrange(2000,3000)で2,000から30,000の間の整数を発生させます。そしてtime.sleep内のrandom.random()は0.01から1.00までの少数を発生させます。wait時間もランダムにして機械的な動きからしぜんなゆらめきになったでしょうか?