Raspberry PiでPWM制御を使ってLEDを点滅

f:id:mittsun1979:20150208212122j:plain

※本サイトを参考にして被った損害、怪我、事故、障害、不都合、不利益等に関して責任は一切負いません。

PWM制御を行うと、点灯時間と消灯時間を調整してLEDの光を明るく見せたり暗く見たりできる。
下記のサイトを参考に(模倣)した。
raspberry-gpio-python / Wiki / PWM

GPIO17, 18, 22, 23のそれぞれに100ΩとLED(アノード)を直列に接続し、LED(カソード)をGNDへ。
4個のLEDが順々に徐々に明るくなって、徐々に暗くなっていく。

#!/usr/bin/python
import time
import os
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
DEBUG = 0

# 使用するGPIO
GPIO17 = 17 
GPIO18 = 18 
GPIO22 = 22 
GPIO23 = 23 

# GPIOの設定
GPIO.output(pin1, False)
GPIO.output(pin2, False)
GPIO.output(pin3, False)
GPIO.output(pin4, False)

GPIO.setup(GPIO17, GPIO.OUT)
GPIO.setup(GPIO18, GPIO.OUT)
GPIO.setup(GPIO22, GPIO.OUT)
GPIO.setup(GPIO23, GPIO.OUT)


p17 = GPIO.PWM(GPIO17, 60)
p18 = GPIO.PWM(GPIO18, 60)
p22 = GPIO.PWM(GPIO22, 60)
p23 = GPIO.PWM(GPIO23, 60)
p17.start(0)
p18.start(0)
p22.start(0)
p23.start(0)

try:
	while 1:
		# 徐々に明るく
		for dc in range(0, 101, 20):
			p17.ChangeDutyCycle(dc)
			time.sleep(0.01)
		for dc in range(0, 101, 20):
			p18.ChangeDutyCycle(dc)
			time.sleep(0.01)
		for dc in range(0, 101, 20):
			p22.ChangeDutyCycle(dc)
			time.sleep(0.01)
		for dc in range(0, 101, 20):
			p23.ChangeDutyCycle(dc)
			time.sleep(0.01)

		# 徐々に暗く
		for dc in range(100, -1, -20):
			p17.ChangeDutyCycle(dc)
			time.sleep(0.01)
		for dc in range(100, -1, -20):
			p18.ChangeDutyCycle(dc)
			time.sleep(0.01)
		for dc in range(100, -1, -20):
			p22.ChangeDutyCycle(dc)
			time.sleep(0.01)
		for dc in range(100, -1, -20):
			p23.ChangeDutyCycle(dc)
			time.sleep(0.01)
except KeyboardInterrupt:
	pass
p17.stop()
p18.stop()
p22.stop()
p23.stop()

GPIO.cleanup()

クリスマスイルミネーション作りたいね。