決まった時間に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でエラーになった場合のメモ - 豆腐とコンソメ)をもとにダウングレードする。
カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる (ブルーバックス)
- 作者: 金丸隆志
- 出版社/メーカー: 講談社
- 発売日: 2016/07/20
- メディア: 新書
- この商品を含むブログを見る
次いで,サポートページ(応用演習のPDF)にある手順で,Python3用にインストールしなおす。
一応,これでWiringPiをPythonでインポートできる。
WiringPi2のインストール
次にWiringPi2をインストール。手順は次のサイトにあるとおり。
ようやく,明るさを変える
参考にしたのは次のサイト。書いてあるとおりにすると,徐々に明るくなり,徐々に暗くなるようにできる。なお,wiringpiを用いる場合には管理者権限が必要なので,Terminalで「sudo idle」として開くこと。
ここで,余談。wiringpi2は入れなくても良さそうで,最初のimportでwiringpiをいれておけば上記のコードは同じように動く。
決まった時間にLEDの明るさを変える
ようやく本題。参考にしたのは次のサイト。
で,次のコードで指定した時間に明るさを(DUTY1からDUTY2へ)変えられる。
import datetime
from time import sleep
PWM_PIN = 18
DUTY1 = 600
DUTY2 = 20
wiringpi.pinMode(PWM_PIN, OUTPUT)
wiringpi.pwmSetMode(wiringpi.GPIO.PWM_MODE_MS)
wiringpi.pwmSetClock(375)
while True:
time = datetime.datetime.now().strftime("%H:%M")
if time == "00:00":
wiringpi.pwmWrite(PWM_PIN, DUTY2)
sleep(0.2)
pass
(参考)決まった時間に処理する
決まった時間に処理する方法としてはcronを使うのが一般的みたい。
Raspberry PIでLED点灯コントロール、Part5 cronとPythonでLEDをコントロール | ものづくりエクスペリメント