Raspberry Pi 電子工作 02:LEDぐるぐる

今回は3つのLEDを光らせます。

ただ光らせてもつまらないので、指定したパターンで光らせてみようと思います。

 

 

1. 配線

f:id:kobatom5278:20201231170417p:plain

02:LED

抵抗をGround側に配線してみました。

自分は知識がないので真相不明ですが、+側に抵抗を配線するのをよく見かけます。

配線と抵抗を減らしたかっただけですが、もしかすると正しくはないかもしれません。

 

2. Pythonソースコード

GPIOのピン番号と発光パターンにタプルを使用しました。

一度定義したら変更できない、というアレです。

この2つを適宜増やすことで、発光させるLEDの数を増減でき、光らせ方も変わります。

 

# -*- coding: utf-8 -*-
# 日本語コメントをエラーとしないように、UTF-8で保存

# 使用するライブラリのインポート
import RPi.GPIO as GPIO
from time import sleep

# −−− 定数 ---
# LEDのピン番号たち
GPIOS = (18, 23, 24)
# 実行回数
LOOP_COUNT = 10
# 実行間隔
SLEEP_TIME = 0.1
# 光らせるパターン(1が光り、0が消える)
PATTERN = ((1, 0, 0), 
           (0, 1, 0), 
           (0, 0, 1),
          )

# −−− GPIOの設定 ---
# ピンの指定をGPIO番号で行う
GPIO.setmode(GPIO.BCM)
# 対象ピン(GPIO)を出力に設定
for gp in GPIOS:
    GPIO.setup(gp, GPIO.OUT)

# ループ実行
for repeat in range(LOOP_COUNT):
    # パターンをぐるぐる
    for ledSwitch in PATTERN:
        for index in range(len(GPIOS)):
            # 1なら光らせる
            if ledSwitch[index] == 1:       
                GPIO.output(GPIOS[index], GPIO.HIGH)

        # 待つ
        sleep(SLEEP_TIME)

        for index in range(len(GPIOS)):
            # 光らせていたLEDを消灯
            if ledSwitch[index] == 1:
                GPIO.output(GPIOS[index], GPIO.LOW)

# 忘れずに、後処理
GPIO.cleanup()

少し、工夫した感が出てきたかと思います。