決まった時間にLEDの明るさを変える

Raspberry PiでLEDの明るさを,決まった時間に変えることを試してみる。

明るさを変える

明るさはPWM調光で変える。その前に,精度の高いPWM信号を生成するのに,WiringPiというツールを使う。

WiringPiのインストー

まず,この書籍のp209に書いてある手順で,Python2用にWiringPi-Pythonをイン ストールする。

(追記)「Raspbianのカーネルと呼ばれるソフトウェアがバージョン4.9になると、書籍のままのインストールコマンドではWiringPi-Python正常動作しなくなります」ので,サポートページ(http://raspibb1.blogspot.jp/)に記載の方法でインストールする。が,rpi-updateを行うと,wiringpiにエラーが出るので,このページ(WiringPiでエラーになった場合のメモ - 豆腐とコンソメ)をもとにダウングレードする。

次いで,サポートページ(応用演習のPDF)にある手順で,Python3用にインストールしなおす。

bluebacks.kodansha.co.jp

一応,これでWiringPiをPythonでインポートできる。 

WiringPi2のインストー

次にWiringPi2をインストール。手順は次のサイトにあるとおり。

hombre-nuevo.com

ようやく,明るさを変える

参考にしたのは次のサイト。書いてあるとおりにすると,徐々に明るくなり,徐々に暗くなるようにできる。なお,wiringpiを用いる場合には管理者権限が必要なので,Terminalで「sudo idle」として開くこと。

blog.kakakikikeke.tk

ここで,余談。wiringpi2は入れなくても良さそうで,最初のimportでwiringpiをいれておけば上記のコードは同じように動く。

決まった時間にLEDの明るさを変える

ようやく本題。参考にしたのは次のサイト。

raspberrypi.stackexchange.com

で,次のコードで指定した時間に明るさを(DUTY1からDUTY2へ)変えられる。

import wiringpi
import datetime
from time import sleep
OUTPUT = 2
PWM_PIN = 18
DUTY1 = 600
DUTY2 =  20
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(PWM_PIN, OUTPUT)
wiringpi.pwmSetMode(wiringpi.GPIO.PWM_MODE_MS)
wiringpi.pwmSetClock(375)
wiringpi.pwmWrite(PWM_PIN, DUTY1)
try:
    while True:
        time = datetime.datetime.now().strftime("%H:%M")
        if time == "00:00":
            wiringpi.pwmWrite(PWM_PIN, DUTY2)
    sleep(0.2)
except KeyboardInterrupt:
    pass
wiringpi.pwmWrite(PWM_PIN, 0)

(参考)決まった時間に処理する

決まった時間に処理する方法としてはcronを使うのが一般的みたい。

make.bcde.jp

Raspberry PIでLED点灯コントロール、Part5 cronとPythonでLEDをコントロール | ものづくりエクスペリメント