決まった時間にLEDの明るさを変える:Arduinoを使う

input-r.hatenablog.jp

以前,こんなページを書いたが,これを実行中にRaspberry Piがお亡くなりになるという不幸があったので,別の方法を考えてみる。

PWM調光はArduinoで対応することにして,Raspberry Piからシリアル通信で明るさを変えるようにする。

Arduinoで明るさを変える

analogWrite()で変えられる。UnoのようにATmega328Pを搭載しているArduinoボードでは,デジタルピン3,5,6,9,10,11で使える。5,6番ポートは約980Hzで,残りは約490Hzで出力する。

Arduino 日本語リファレンス

Raspberry PiからArduino経由でLEDの明るさを変える

参考にしたのは次のサイト。

karaage.hatenadiary.jp

まず,Arduinoのプログラム。

#define LED_PIN (3)
byte val;
void setup(){
  // Serial Setting
  Serial.begin(9600);
  // Port Setting
  pinMode(LED_PIN, OUTPUT);
  analogWrite(LED_PIN, 0);
}
void loop(){
  if(Serial.available() > 0){
    val=Serial.read();
    Serial.write(val);
    if(val == 'A'){
      analogWrite(LED_PIN, 255);
    }
    if(val == 'B'){
      analogWrite(LED_PIN, 0);
    }
  }
}
Raspberry Piは上記サイトの設定,プログラムをそのまま利用。

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

cronを利用する。
crontab -eで設定ファイルを開き,下の内容を入力。ctrl+X→Y→Enterで上書き保存して終了。
#毎日18時に,上記のRaspberry Piのプログラムを実行する。
00 18 * * * python /home/hoge/script1.py
以上で,18時にLEDの明るさを変えられる(はず)。