MENU

【Arduino】マイコンの光センサーで遊んでみた。

今度は、光センサーを使ってみました。
光センサーが受ける光の強さに応じて、赤、緑、青のLEDが点灯します。


そもそも光センサーてどんな構造してるの?て感じだったので、
↓の動画を見て勉強しました。
youtu.be


自分用にまとめておくと、
 

・光センサー(Cds)の特徴
 光の強さに応じて抵抗値が変化する。(抵抗値は、明るいと低くなり、暗いと高くなる)
・光センサーで得た数値をArduinoに取り込むには
 Arduinoは抵抗値を取り込むことはできないが、抵抗値を電圧に変換することで、A/D変換で取り込むことができる。
 

で、取り込んだ光センサーの数値はシリアルモニタで表示させることができるんですが

f:id:kumaGoro_95:20200814154634p:plain

こんな感じになります。(手で光を遮ったりすると数値が動きます)
この数値の動きを利用して、3色のLEDを点滅させます。

 

作成時は、↓のページを参照しました。
 
 
deviceplus.jp

 
センサーとArduinoの接続、コード等の基本の部分は参考にさせてもらい、
3色LEDの配置や、入力値に応じてLEDが点滅する部分のコードはオリジナルです。

 

配置はこんな感じです。
 
 
f:id:kumaGoro_95:20200814155550j:plain


f:id:kumaGoro_95:20200816224853p:plain 


※ Fritzingをダウンロードしたので、回路図を作成できるようになりました!!(8月16日) 
  http://fritzing.org/home/
 

int val=0; //光センサーからの入力値を格納する
int ledVal = 0; //LEDへの出力値を格納

void setup() {
  Serial.begin(9800); 
}

void loop() {
  val=analogRead(0);  //A0からセンサーの入力値を受け付ける
  ledVal = val/2;
  Serial.println(ledVal);
  //  D3に青色、D4に緑色、D5に赤色のLEDを接続
  if(ledVal < 50){    //入力値が50以下の時
    analogWrite(3,255);  //青色が点灯
    analogWrite(4,0);
    analogWrite(5,0);
  }else if(ledVal < 100){  // 入力値が51~99の時
    analogWrite(3,0);
    analogWrite(4,255);  //緑色が点灯
    analogWrite(5,0);
  }else {  //入力値が100以上の時
    analogWrite(3,0);
    analogWrite(4,0);
    analogWrite(5,255); //赤色が点灯
    }
    delay(300);
}

 

実際に動かすとこんな感じになります。
streamable.com