2013年3月4日月曜日

温度センサを使った「目でわかる温度計」


こんにちは。
今回は前回に引き続き、教室で扱えなかった温度センサを使ってみたいと思います。

今回もLCDではなく、パソコンと通信してどれくらいの温度が計測されているのかを調べてみます。

ブレッドボードの15列目に、温度センサの平らな面が見えるようにして真ん中のピンを挿します。





続いてArduinoと接続します。15列目(真ん中)とArduinoのA0ピン、14列目(左)とArduinoの5V(プラス)ピン、16列目(右)とArduinoのGND(マイナス)ピンをそれぞれつなげます。



それでは、以下のプログラムを書き込み、パソコンで値を見てみましょう。
値をみるにはIDE右上の「虫眼鏡」マークのボタン(シリアルモニタ)を押します。

int data=0;
float temp=0;

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

void loop(){
  data=analogRead(0);
  temp=(data*2560.0/1023.0 - 600.0)/10.0;

  Serial.print("Temperature ");
  Serial.print(temp);
  Serial.println(" C");
  delay(100);
}

温度を見てみると大体27℃近くあるようでした。例えば温度センサをつまんでみると温度はどう変化するでしょうか?



実際にやってみると32℃以上になりました。このことを利用して、「目でわかる温度計」を作ってみましょう!



今回はフルカラーLEDを使います。まずはある温度を超えると赤に、ある温度以下だと青に光るようにしてみましょう。今回もif(){}を使います。

始めに配線です。フルカラーLEDの一番長い足が左から2番目に見えるようにして、左端の足を30列目に挿します。


次に1キロオーム(茶黒赤金)の抵抗を2本使い、30列目と25列目、32列目と40列目をそれぞれつなぎます。


最後に25列目とArduinoの10番ピン、40列目とArduinoの11番ピン、31列目とArduinoのGND(マイナス)ピンをつなぎます。



そして以下のプログラムを書き込みましょう。

int data=0;
float temp=0;

void setup() {
  analogReference(INTERNAL);
}

void loop(){
  data=analogRead(0);
  temp=(data*2560.0/1023.0 - 600.0)/10.0;

  if(temp>30.0){
    analogWrite(10,255);
    analogWrite(11,0);
  }else{
    analogWrite(10,0);
    analogWrite(11,255);
  }
}

場合分けの条件はお好みで変えてみてください。
下の動画のように温度センサを指でつまむと青→紫→赤と次第に色が変わっていっておもしろいと思います。これはセンサの値が微妙に上下しながら高くなったり低くなったりと変化していくためだと思われます。





さらに緑色(33列目)を13番ピンにつなぎ、場合分けを増やしてみたり、明るさを変えたりすると色の変化をさらに楽しめそうです。

今回はここまでにして、次回以降は応用的な作例を作っていきたいです。

0 件のコメント:

コメントを投稿