2009/07/23

Arduinoに温度センサーを付けてみた

昨日到着したArduinoに温度センサーを付けてみました。
Arduino + Temp. Sensor

コードはシンプルにこんな感じ↓。

/*
Read Analog Input and Send it to Serial Port
*/

double firstSensor = 0; // first analog sensor
int ledPin = 13; // LED Pin
int analogPin = 0; // Analog Input Pin

void setup()
{
// start serial port at 9600 bps:
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
}

void loop()
{
digitalWrite(ledPin, HIGH); // turn the ledPin on
firstSensor = analogRead(analogPin); // read analog input:
firstSensor = firstSensor * 5 / 1024 * 10000;

Serial.println(firstSensor, DEC);
// delay 1000ms to let the ADC recover:
delay(1000);
}

setup()が起動時に走るイニシャライズ関数で、loop()がメイン関数だと思えばよいです。1秒毎に温度センサーを読んで、それをシリアルポートで送ってモニターに表示します。

温度センサー(LM35)は摂氏温度に較正されていて、10℃/mVの出力する仕様です。なので、25℃だと250mVを出力します。アナログポートからの入力はMax 5Vを10bit A/D変換された値なので、5/1024をアナログポートから読んだ値に掛けてあげると、mVに変換されます。シリアルモニターに小数点を表示させる方法がすぐでてこなかったので、10,000倍して25℃を2500と表示することで、1/100℃まで確認できるようにしました。


ブレッドボードにセンサーを設置して、Arduinoと接続して実験してみました。シリアルモニター上に、温度が表示されてます。指で触ってあげると、温度が上昇していくのがわかりますね。性能的には0.005℃くらいの分解能をもっているはずなので、まあそれなりに信用できる温度だと思います。

ここまでくるのに大体30分くらいでしょうか。最初、温度センサーの端子の極性が間違っててつまづきましたが、それがなかったら20分くらいでできましたね。う〜ん、すごく簡単。今度はこれをTwitterで表示するPerlスクリプトでも書いてみようか。距離センサーを接続してみるのもいいかな。

<関連記事>
Arduinoの開発環境構築はすげぇ簡単
64bit版LinuxのArduino開発環境を立ち上げる方法
パナソニックのホームベーカリーを使ってみた

<追伸>
なんだかもうArduinoに首っ丈です。やっぱり開発環境が優れてるってのはいいですね。紙と鉛筆だけでも絵はかけるが、ちゃんとした道具があるとよりいっそう素敵な絵を書く意欲が生まれる、ってのと同じだと思います。プロセッサーのスピードは大したことないので、そんなにすごい演算とかはできませんが、簡単なアプリケーションだったら楽勝ですね。まあ、Arduinoの話題を出しても女性にはモテないと思うが、心意気くらいはわかって欲しいものだねぇ。Arduinoに興味が湧いた女性は、Twitter(ヒウィヒヒー)で @HSDigital Arduino とつぶやきましょう。