【ラズパイとLEDをPythonでコントロール】複数のLEDを点灯・消灯を繰り返すプログラム
ラズパイとLEDを繋いでPythonでコントロールする(その2)からの続きです。
Pythonで同じ処理を繰り返し実行する場合、(その2)で使った“while True”文の他に、“list”や“for”文もあります。今回は、これらを用いて、複数のLEDに対する点灯、消灯を繰り返し実行するプログラムを紹介します。
用意するもの
< 必要なツール >
- ブレットボードキット
- ブレットボード
- ジャンパー線(オスーメス)
- ジャンパー線(オスーオス)
< 必要な部品 >
- LED(赤・黄・緑)×各1
- NPNトランジスタ(2SC1815) ×3
- 抵抗 100Ω×3
- 抵抗 22kΩ×3
回路図
トランジスタのベースに接続したGPIOを“High”にすることで3色のLEDを点灯させる回路です。トランジスタのベースに電流が流れることで、それぞれのトランジスタがオンになり、コレクタ―エミッタ間に電流が流れ、LEDを明るく光らせます。GPIOからこのトランジスタをコントロールすることで、LEDを光らせるタイミングを変えたりすることができます。
配線図
プログラム
前回3色のLEDと接続するGPIOピンの番号の組合せを指定して“list”を作った上で、3秒間点灯して消灯するプログラムを書きました。
今回はその応用として別の書き方をしてみます。
led_list の部分へそれぞれのLEDのリストを入力していきます。
その後、for文を使用して、LEDのリストを読み取り、led_listの中で定義しているLEDをWAIT_TIMEで時間指定をしているのでその秒数光らせてからまたすべてのLEDを消灯させます。
以下がそのコードとなります。
3色のLEDを点滅させるPythonコード
[code]
from gpiozero import LED
from time import sleep
LED_R_PIN = 17 # Red
LED_Y_PIN = 27 # Yellow
LED_G_PIN = 22 # Green
WAIT_TIME = 1
led_list = [
LED(LED_R_PIN),
LED(LED_Y_PIN),
LED(LED_G_PIN)
]
while True:
for led in led_list:
led.on()
sleep(WAIT_TIME)
led.off()
[/code]
Pythonコードの実行
上記のコードを実行するには、
画面上の「Run」をクリックすることで実行されます。
また実行すると動作は自動では止まらないので、キーボードの「Ctrl+C」を押すことで動作が止まります。