決まった時間にLEDの明るさを変える:Arduinoを使う
以前,こんなページを書いたが,これを実行中にRaspberry Piがお亡くなりになるという不幸があったので,別の方法を考えてみる。
PWM調光はArduinoで対応することにして,Raspberry Piからシリアル通信で明るさを変えるようにする。
Arduinoで明るさを変える
analogWrite()で変えられる。UnoのようにATmega328Pを搭載しているArduinoボードでは,デジタルピン3,5,6,9,10,11で使える。5,6番ポートは約980Hzで,残りは約490Hzで出力する。
Raspberry PiからArduino経由でLEDの明るさを変える
参考にしたのは次のサイト。
まず,Arduinoのプログラム。
#define LED_PIN (3)
byte val;
byte val;
void setup(){
// Serial Setting
Serial.begin(9600);
// Serial Setting
Serial.begin(9600);
// Port Setting
pinMode(LED_PIN, OUTPUT);
analogWrite(LED_PIN, 0);
}
pinMode(LED_PIN, OUTPUT);
analogWrite(LED_PIN, 0);
}
void loop(){
if(Serial.available() > 0){
if(Serial.available() > 0){
val=Serial.read();
Serial.write(val);
if(val == 'A'){
analogWrite(LED_PIN, 255);
}
Serial.write(val);
if(val == 'A'){
analogWrite(LED_PIN, 255);
}
if(val == 'B'){
analogWrite(LED_PIN, 0);
}
}
}
analogWrite(LED_PIN, 0);
}
}
}
Raspberry Piは上記サイトの設定,プログラムをそのまま利用。
決まった時間にLEDの明るさを変える
cronを利用する。
crontab -eで設定ファイルを開き,下の内容を入力。ctrl+X→Y→Enterで上書き保存して終了。
以上で,18時にLEDの明るさを変えられる(はず)。