RaspberryPi Zero お約束のLEDチカチカ

流れ的にRasPiのGPIO使ってLEDチカチカさせておきます。
使ったパーツ
抵抗4.7kΩ x 10 / バーLED(OSX10201-R) VF:2.1V
(3.3-2.1)/4700 = 0.255mA のはず。

ジャンパーワイヤー適当にぶっ刺してます。

ソースコード(Python)※各LEDのGPIOはPIN番号です。

import RPi.GPIO as GPIO
import time

P_OFF       = 0
P_ON        = 1
P_55        = 2
P_AA        = 3
P_HIGH      = 4
P_LOW       = 5

# LED 10bit
Pattern = [
    0b0000000000,
    0b1111111111,
    0b0101010101,
    0b1010101010,
    0b1000000000,
    0b0000000001,
]

bar = [ 31,33,35,37,26,40,38,36,24,32 ];    # BAR-LED : Use GPIO(PIN.#)
########################################################################
# GPIO INIT.
GPIO.setmode(GPIO.BOARD)
GPIO.setup(bar, GPIO.OUT)
GPIO.output(bar,GPIO.LOW)  
########################################################################
def outLED(flg,wt):
    global bar
    sb = 0x001
    for i in bar:
        if(flg & sb):
            GPIO.output(i,GPIO.HIGH)
        else:
            GPIO.output(i,GPIO.LOW)
        sb <<= 0x001;
    time.sleep(wt)
########################################################################
# init pattern demo
for pt in Pattern:
    outLED(pt,0.5)
# flash demo
for lp in range(30):
    outLED(Pattern[P_ON ],0.05)
    outLED(Pattern[P_OFF],0.05)
# shift demo
ptn = Pattern[P_LOW]
lrf = 0;
for lp in range(9*6+1):
    outLED(ptn,0.05)
    if lrf == 0:
        ptn <<= 0x001 if ptn == Pattern[P_HIGH]: lrf = 1 else: ptn >>= 0x001
        if ptn == Pattern[P_LOW]:
           lrf = 0
outLED(Pattern[P_OFF],1)
# 55-AA Demo
for lp in range(20):
    outLED(Pattern[P_55],0.1)
    outLED(Pattern[P_AA],0.1)
outLED(Pattern[P_OFF],1)

GPIO.cleanup()
print("Prog.End")
# EOF

コメント

タイトルとURLをコピーしました