ラズパイとLEDを繋いでPythonでコントロールする(その3)

0
2502

【ラズパイと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」を押すことで動作が止まります。

動作例