あちこちで見かけるキラキラ光るXmasツリーを眺めていたらラズパイでXmasツリーを光らせたくなりました。
100均ツリーとデコレーションライトをラズパイにつないでPythonでPWM制御したらふわふわ光っていい感じ!
若干点灯パターンに不規則性をもたせたかったのでデューティ比の上げ下げ間隔をランダムに変えています。
購入した材料
配線
3Vで駆動するLEDなので3.3Vでも多分問題なさそう。今のところ制限抵抗無しで動かしています。
配線の加工は面倒なので、みの虫クリップを使ってLEDの電池ボックスとラズパイを接続。
下記コードはGPIO21を電池ボックスの+側に、GNDを-側に接続したもので動作させています。
デコレーションライトを光らせるコード
PWM出力周波数やデューティ比の刻み値やスリープの時間はお好みで調整下さい
xmastree.py
import RPi.GPIO as GPIO
import random
from time import sleep
LED1 = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED1, GPIO.OUT)
pwm = GPIO.PWM(LED1, 60) # PWM出力周波数を60Hzで設定
pwm.start(0)
try:
print("press ctrl+c to exit program")
while True:
step_value = random.randint(1, 3) # デューティ比の刻み値を1〜3の範囲でランダムに生成
for dc in range(0, 101, step_value): # デューティ比を0〜100%まで指定の刻み値で上げる
pwm.ChangeDutyCycle(dc)
sleep(0.01)
for dc in range(100, -1, -step_value): # デューティ比を100〜0%まで指定の刻み値で下げる
pwm.ChangeDutyCycle(dc)
sleep(0.01)
except KeyboardInterrupt:
print("program exited")
pwm.stop(0)
GPIO.cleanup(LED1)