raspberrypi フルカラーLEDをpigpio

フルカラーLEDをpigpioで動作

接続
LED 1—-Grenn  2—-Blue  3—-common  4—-Red
R   220Ω    220Ω            220Ω 
PI   27      22      GND     18

レンジを256にしPWMで32ステップづつ発光させて、全色表示

GPIOのモード pi.set_mode(pins[i], pigpio.OUTPUT)
GPIOのON  pi.write( pins[i], pigpio.HIGH)
周波数の設定 pi.set_PWM_frequency(pins[i],FREQ )
レンジ幅の設定pi.set_PWM_range(pins[i],RANGE)
出力     pi.set_PWM_dutycycle(pins[i], 0)

0から255まで32ステップで実行
for r in range(0,255,32):

#!/usr/bin/env python3
import pigpio 
import time
pi = pigpio.pi()
pins = {'Red':18, 'Green':27, 'Blue':22}
FREQ = 2000# 周波数
RANGE = 256# レンジ

#初期処理 出力、HIGH ,周波数とレンジをセット
def setup():
        for i in pins:
            pi.set_mode(pins[i], pigpio.OUTPUT)
            pi.write( pins[i], pigpio.HIGH)
            pi.set_PWM_frequency(pins[i],FREQ )
            pi.set_PWM_range(pins[i],RANGE)
            #サイクル0をセット
            pi.set_PWM_dutycycle(pins[i], 0)
#終了処理           
def destroy():	
	# サイクル0をセット ストップ
    for i in pins:
        pi.set_PWM_dutycycle(pins[i], 0)
    pi.stop()

# If run this script directly, do:
if __name__ == '__main__':
        setup() #初期処理
        while True:
            try:
                #0から255まで32ステップで実行
                for r in range(0,255,32):
                        pi.set_PWM_dutycycle(pins['Red'], r)
                        for g in range(0,255,32):
                                pi.set_PWM_dutycycle(pins['Green'], g)
                                for b in range(0,255,32):
                                        pi.set_PWM_dutycycle(pins['Blue'], b)                               
                                        time.sleep(0.3)

            except KeyboardInterrupt:
                destroy()

 終了後にエラーが発生する 
 tryの場所の問題で修正後のソースは

# If run this script directly, do:
if __name__ == '__main__':
        setup() #初期処理
          try:
           while True:

                #0から255まで32ステップで実行
                for r in range(0,255,32):
                        pi.set_PWM_dutycycle(pins['Red'], r)
                        for g in range(0,255,32):
                                pi.set_PWM_dutycycle(pins['Green'], g)
                                for b in range(0,255,32):
                                        pi.set_PWM_dutycycle(pins['Blue'], b)                               
                                        time.sleep(0.3)

          except KeyboardInterrupt:
                destroy()
カテゴリー iot