2013年3月4日月曜日

CDSを使った「暗くなったら点灯するLED」


こんにちは。
今回は教室で出来なかったセンサを使ってみたいと思います。
まずはCDSからです。

CDSを38列目と40列目に入れましょう。向きはありません。
次に10キロオーム(茶黒橙金)の抵抗を35列目と40列目に入れます。
続いて硬いジャンパワイヤ(茶色)で38列目と下の青い(マイナスの)ラインをつなげましょう。

さらに、好きな色のLEDのプラス(足が長い方)を46列目に、マイナス(足が短い方)を45列目に入れましょう。
そのあと、1キロオーム(茶黒赤金)の抵抗で45列目と青いラインをつなぎます。これでブレッドボード上の配線は終了です。




Arduinoとの接続に入ります。柔らかいジャンパワイヤを使いましょう。
ArduinoのGND(マイナス)ピンとブレッドボードの青いラインをつなぎます。
Arduinoの5V(プラス)ピンとブレッドボードの35列目(10キロオームの抵抗)をつなぎます。
ArduinoのA0ピンとブレッドボードの40列目(CDS)をつなぎます。
最後にArduinoの6番ピンとブレッドボードの46列目(LED)をつないで配線は終了です。




パソコンと接続して以下のプログラムを書き込みましょう。

int data=0;

void setup(){
}

void loop(){
  data=analogRead(0);
  data=map(data,0,1023,0,255);
  analogWrite(6,data);
}

CDSの前で手を動かしてみるとLEDがチラチラすると思います。が、変化が小さくてよくわからないと思うので、センサの値を直接見てみましょう。
教室ではLCDを使ったので課題のようにそれを使ってもよいのですが、今回はパソコンの画面で値を確認できるようにします。

プログラムを以下のようにして、書き込んでみましょう。
int data=0;

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


void loop(){
  data=analogRead(0);
  data=map(data,0,1023,0,255);
  Serial.println(data);
  analogWrite(6,data);
  delay(10);
}

書き込んだら、IDEの右上の「虫眼鏡」の印のボタン(カーソルをもっていくと「シリアルモニタ」と表示されます)をクリック!

すると数字がたくさん出る画面が出てくるはずです。これがセンサの値になります。


Serial.begin(9600); でパソコンとの通信を始めて、
Serial.println(data); でパソコンにデータを送っています。
delay(10); はデータを送る間隔をあけるためです。

電気をつけた状態で75くらい、CDSに手を近づけると170くらい、電気を消すと250くらいになりました。
つまり、センサの値が高い→周りが暗い
    センサの値が低い→周りが明るい
となります。
では、この値を使って「暗くなったら点灯するLED」を作ってみましょう!

今回の動作は、
センサの値をはかる
→センサの値が高い(周りが暗い)→LEDを点ける
 センサの値が低い(周りが明るい)→LEDを消す
です。

暗くなったときだけLEDが点けばいいので、200くらいを境目にします。
場合分けにはif(){}を使います。
プログラムは以下の通り。

int data=0;

void setup(){
}

void loop(){
  data=analogRead(0);
  data=map(data,0,1023,0,255);
  
  if(data>200){
    analogWrite(6,150); 
  }else{
    analogWrite(6,0);  
  } 
}

明るさはお好みで。明るさを調整して、電池を使うと常夜灯代わりにもなりますよ?



次回は温度センサを使ってみたいと思います。

0 件のコメント:

コメントを投稿