シーケンシャルLEDフラッシャー その8
はじめに
ついにシーケンシャルLEDフラッシャー回路が完成しました。あとは、この回路を動かすArduinoのスケッチを作成するだけです。
条件出し
だいぶ前だったのですっかり忘れてしまったかもしれませんが、この回路は入力電圧で点灯するLEDの個数を制御します。LEDの点灯する個数が切り替わる電圧はICの個体によってばらつきますし、ArudinoからのPWM出力が実際にどのくらいの電圧に変換されるのはやってみなければわかりません。
というわけで、Arudinoの出力を最小値の0から最大値の255まで振って、LEDの点灯具合を確認します。面倒ですがしかたがありません。
電圧変換部の可変抵抗をちょうど中間くらいになるように設定して、Arudinoからの出力を0から少しずつあげていきます(スケッチは省略)。出力にはanalogWrite関数を使います。
私の環境では、出力36でLED1個点灯、出力67で2個点灯、120で3個点灯、169で4個点灯、235で5個点灯となりました。5個点灯はかなりぎりぎりです。可変抵抗を少し調整してもよいかもしれませんが、面倒なのでやめました。
これらの値はLEDが点灯するぎりぎりの値ですので、実際の運用では安全をみて大きめの値で制御します。ここでは、それぞれの中間点の値で制御することにしました。
LEDすべて消灯(0個点灯) 出力0
LED1個点灯 出力50
LED2個点灯 出力91
LED3個点灯 出力142
LED4個点灯 出力200
LED5個点灯 出力255
これを踏まえてスケッチを作成しました。
スケッチ
作成したスケッチがこちらです。
int LEDctl = 3;
int LEDvol[6] = {0, 50, 91, 142, 200, 255};
void setup() {
pinMode(LEDctl, OUTPUT);
analogWrite(LEDctl, 0);
delay(1000);
}
void loop() {
int i = 0;
while (i < 6) {
analogWrite(LEDctl, LEDvol[i]);
i++;
delay(1000);
}
}
3番ピンをアナログ出力として使います。条件出しで得た値を1秒毎に出力していきます。出力は小さな値から始まって順次大きな値になり、1周すると0に戻るので、消灯、LED1個点灯、LED2個点灯、LED3個点灯、LED4個点灯、LED5個点灯、消灯…を繰り返します。
おわりに
Arduinoのスケッチが完成しました。あとはArduinoにシーケンシャルLEDフラッシャー回路を接続するだけです。次回は最終回、動作確認です。