【Lesson4】流れるLEDライト LED Flowing Lights

0
1609

今回は8個のLEDを使って、順番に点灯・消灯を行い、流れるように点灯させるプログラムを実行します。

今回もLEDのアノード(+)側には3.3Vの電圧をかけてある状態で、カソード(-)側をコントロールします。Lesson1での考え方と同様で、多くの書籍はアノード側の電圧を3.3V(HIGH)にするか、0V(LOW)にするかを考えますが、今回はその逆だという事をお忘れなく。

使用する部品

  • Raspberry Pi 3 Model B × 1
  • 電源アダプター5V 2.5A × 1
  • ブレットボード × 1
  • LED × 8
  • 抵抗 220Ω × 8
  • ジャンプワイヤー(オス/オス) × 9

※これらの部品はFabshopがふるさと納税で提供している「ふるさと納税Raspberry Piスターターキット」もしくは当サイトで購入可能な「Raspberry Pi スターターキット」の電子工作キットに同梱されています。

実体配線図

プログラムのコピーと保存

ラズベリーパイメニューから「プログラミング」-「Geany」を選んでクリックします。

メニューバーから「ファイル」→「新規」をクリックします。

【Lesson1】のときと同じように、この下にある「LED Flowing Lightsのプログラム」の枠右上に並んだアイコンの内、右から2番目のアイコンをクリックします。(マウスをアイコンに近づけると”Copy”の表示が現れます)

すると、プログラムの文字列が全て選択されるので、「Ctrl」と「C」キーを同時に押してコピーします。

import RPi.GPIO as GPIO
import time

pins = [11, 12, 13, 15, 16, 18, 22, 7]

def setup():
    GPIO.setmode(GPIO.BOARD)
    for pin in pins:
        GPIO.setup(pin, GPIO.OUT)
        GPIO.output(pin, GPIO.HIGH)  

def loop():
    while True:
        for pin in pins:
            GPIO.output(pin, GPIO.LOW)
            time.sleep(0.5)
            GPIO.output(pin, GPIO.HIGH)

def destroy():
    for pin in pins:
        GPIO.output(pin, GPIO.HIGH)
    GPIO.cleanup()

if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt:
        destroy()

今回のプログラムのポイントは、8つのLEDポートがあって、どれも同じような動作をする場合に、GPIOポートのピン番号を1つ1つ変数に入れて管理するのではなく、リストとして一括でデータの管理をします。LEDにつなぐポート番号は

pins =[ 11, 12, 13, 15, 16, 18, 22, 7]

のようにpins というリストとして扱います。def setup() の部分で、

for pin in pins :  とありますが、リストに入っているポート番号ごとに:(セミコロン)以下を繰り返しセットアップしています。リストの最後まで繰り返し設定します。LEDのポートは出力ポートになるので、すべてのポートをGPIO.OUTにして、初期値はGPIO.HIGHにしておくことで、カソード側が3.3Vになって、電位差が生まれずにLEDが光らない状態になるという事です。

loop関数内では、やはりfor文を使ってHIGHだったカソード側をLOW(0V)に変えていきます。0.5秒たったらポートをHIGHに戻すことでLEDが消え、forループの最初に移動して次のpin番号を光らせて、また0.5秒後に消すという作業を繰り返していく事で、横に流れていきます。

あとは、今までと殆ど同じです。

新たに開いたタブ「untitled×」の1行目にマウスカーソルを置いて右クリックして出てくるメニューから「貼り付け」を選択します。

Geanyのメニューバーから「ファイル」→「別名で保存」をクリックします。

新たに「ファイルを保存」画面が現れるので、左ペインの「デスクトップ」をクリックします。

「ファイルを保存」画面の1番上の項目「名前:」の入力欄に拡張子”.py”でプログラム名を入力し、「保存」ボタンをクリックします。

プログラムの実行

Geanyの画面に戻って、ツールバーの紙飛行機のようなアイコンをクリックします。

新たに「ターミナル」画面が開き、LEDの点灯が左右に流れるように移動しながら繰り返します。「Ctrl」と「C」キーを同時に押すとプログラムが停止します。