2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

100均Xmasツリーをラズパイで光らせてみた

Last updated at Posted at 2018-12-18

あちこちで見かけるキラキラ光るXmasツリーを眺めていたらラズパイでXmasツリーを光らせたくなりました。
100均ツリーとデコレーションライトをラズパイにつないでPythonでPWM制御したらふわふわ光っていい感じ!
若干点灯パターンに不規則性をもたせたかったのでデューティ比の上げ下げ間隔をランダムに変えています。

購入した材料

  • ミニチュアツリー(ダイソー)
    IMG_5169.JPG

  • デコレーションライト(ダイソー) ※電池2本で動き、常時点灯のもの
    deco.JPG

配線

3Vで駆動するLEDなので3.3Vでも多分問題なさそう。今のところ制限抵抗無しで動かしています。
配線の加工は面倒なので、みの虫クリップを使ってLEDの電池ボックスとラズパイを接続。
下記コードはGPIO21を電池ボックスの+側に、GNDを-側に接続したもので動作させています。
IMG_5186.JPG

デコレーションライトを光らせるコード

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)

それでは、良いクリスマスを!
IMG_5108.JPG

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?