3つのLEDを操作する
このように配線してみてください。
# 3led点滅
import time
import board
import digitalio
# LED_PINSでどこにつなぐか指定
LED_PINS = [board.GP2,
board.GP3,
board.GP4
]
#LEDSというリストを作成
LEDS = []
for pin in LED_PINS:
# pinをDigitalInOutモードにし、アウトプット方向に設定する
digout = digitalio.DigitalInOut(pin)
digout.direction = digitalio.Direction.OUTPUT
#LEDSリストの中に加える
LEDS.append(digout)
tempo = 0.3
while True:
for i in range(len(LEDS)):
LEDS[i].value = 1
time.sleep(tempo)
LEDS[i].value = 0
実行するプログラムはこちらになります。
リストってなに?
リストとは
まずはREPLモードにします。対話モードとも呼ばれます。
>>>numbers = [1, 2, 4, 8]
>>>numbers[0]
1
numbersというリストを作ります。1,2,4,8という数を入れてみます。そしてnumbers[0]で0番目のリストの中身を表示させています。Pythonでは最初のリストは0番目です。1番目ではないことに注意してください。リストの中身を順番に見ていってください。3番めを見ると8が表示されることを確認します。
またREPLモードではfor文を使うこともできます。for文を入力したあとにピリオドが3つ並んでインデントされます。print文を打つとまたピリオドが3つ並んでインデントされます。そのときに←キーを押してインデントを消してenterキーを押すと実行されます。
>>>for i in numbers:
... print (i)
...
appendを使って要素を追加する
次はこのリストに要素を足します。4番めに16を追加します。
>>>numbers.append(16)
>>>numbers
[1,2,4,8,16]
numbersというリストに16という要素を追加することができました。
はじめのプログラムを見てください。7行目からLEDを接続するpinを指定します。13行目でLEDSという要素がないリストを作成。15行目からのfor文でdigitalioをOUTPUT方向へ設定。それをLEDSというリストに格納していきます。こうすることによってLEDS[0]にはGP2、[1]にはGP3、[2]にはGP4が格納されることになります。
リスト化することによって、24行目からのfor文の変数iを使って順番に点灯することができるようになるのです。
このプログラムの便利な点はLEDがいくつ増えようが、7行目からのGP指定さえしておけばokなのです。今みなさんがつかっているRaspberry Pi picoはGPが28個まで設定できますので、10個のLEDをまとめて制御するのも可能です。