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が点灯します。 |