初歩の電子工作とデジカメの日記

電子工作備忘録とデジカメで撮影した写真のブログです。

Arduino備忘録 11 (3ledの点灯をCDSセルのアナログイン数値で切替える)

2016-07-26 16:40:24 | Arduino Uno
CDSセルの機能、性質がわかった(?)のでいよいよLEDを接続して暗くなったらLEDが点灯するArduino電子工作をやります
LEDが1個では単調なので3個のLEDを使いました


図中の右端のCDSセルからのアナログイン数値をArduino A0ポートに取り込み、3個のLEDの点灯を切替えます。
LEDの色は赤、青、緑です。



CDSセル、赤、青、緑色LED、抵抗(1kΩx4本)をブレッドボードに配置、Arduinoと結線します
LED出力ピンは
d11p・・・緑色LED
d12p・・・青色LED
d13p・・・赤色LED



CDSセルからのアナログイン数値で3個のLEDの点灯が切り替わるスケッチです。
アナログイン数値を可視化できるようにシリアルモニターも使えるようにしています。
スケッチはこちらの記事をお手本にしています。

/* CDSセル(光センサー)で読み込んだアナログ入力値の大きさでLEDの点灯を切替える
* アナログ入力値はシリアルモニターに表示させる
*/
const int red_LED = 13; // 赤LEDが接続されているピン
const int blue_LED = 12; // 青LEDが接続されているピン
const int green_LED = 11; // 緑LEDが接続されているピン


int val = 0; // アナログ入力ピンの状態がこの変数(val)に記憶される
int state = 0; // LEDの状態(0ならオフ、1ならオンとする)

void setup() {
pinMode(red_LED, OUTPUT); // LEDを出力に設定
pinMode(blue_LED, OUTPUT);
pinMode(green_LED, OUTPUT);
Serial.begin(9600); // シリアルモニターを使う

}

void loop() {
val = analogRead(0); //センサから値を取得します
Serial.println(val); // シリアルモニターに数値(val)を出力
if(val <= 900){ // valが900以下なら点灯しない
state=0;
}
if(val > 900 && val <=950){ // valが900-950の間では赤色LEDが点灯する
state=1;
}
if(val > 950 && val <= 1000){ // valが950-1000の間では青色LEDが点灯する
state=2;
}
if(val > 1000){ // valが1000以上では緑色LEDが点灯する
state=3;
}

//変化があるかどうかチェック

if (state == 0) {
digitalWrite(red_LED, LOW);
digitalWrite(blue_LED, LOW);
digitalWrite(green_LED, LOW);
} else if (state == 1) {
digitalWrite(red_LED, HIGH);
digitalWrite(blue_LED, LOW);
digitalWrite(green_LED, LOW);
} else if (state == 2) {
digitalWrite(red_LED, LOW);
digitalWrite(blue_LED, HIGH);
digitalWrite(green_LED, LOW);
} else if (state == 3) {
digitalWrite(red_LED, LOW);
digitalWrite(blue_LED, LOW);
digitalWrite(green_LED, HIGH);
}
delay(100);

}


CDSセルからのアナログイン数値(val)が900以下では、どのLEDも点灯しません。valの値が900以上、950以下で赤色LEDが点灯します。


valの値が950以上、1000以下で青色LEDが点灯します。


valの値が1000以上なら緑色LEDが点灯します。


Arduino備忘録 11