温度をとってパソコンに渡す
XBeeが簡単にいったので気をよくして、温度センサに手を出す。
スイッチサイエンスさんが出されてる "Prototyping Lab Kit Vol.2" というのを入手しています。しかしこれは書籍「Prototyping Lab ―『作りながら考える』ためのArduino実践レシピ」が無いといけない。しかしまだ買ってなかったりする…。
それは今のところはともかく、このキットに LM35DZ という温度センサがあります。
これを使って、温度を取ってXBee経由でパソコンに飛ばす、というのをやってみました。
ピン配置、コードともに、全面的に
http://pscmpf.blogspot.com/2008/12/arduino-lm35-sensor.html を参照。
LM35DZ 一本でどうにかなります。
材料
- LM35DZ
- ジャンパ線 * 3
- ブレッドボード * 1
本体に温度センサをつなげる
Vs, Vout, GND の配置も参照サイトにあるので、その通りに繋げる。Vsは5Vでつなげました。
コード
http://pscmpf.blogspot.com/2008/12/arduino-lm35-sensor.html をほぼまるうつし。
とりあえず確認したいだけなので、もとプログラムを一か所変更して、シリアルへの出力には println() を使用。
//declare variables float tempC; int tempPin = 0; void setup() { Serial.begin(9600); //opens serial port, sets data rate to 9600 bps } void loop() { tempC = analogRead(tempPin); //read the value from the sensor tempC = (5.0 * tempC * 100.0)/1024.0; //convert the analog data to temperature // Serial.print((byte)tempC); //send the data to the computer Serial.println(tempC); delay(1000); //wait one second before sending new data }
これをコンパイル、アップデートしてやります。
"Serial Monitor" を開くと、1秒に1回、温度らしきものがずらずらっと出てきます。
なんで 5 かけて 1024 で割ってか
5.0 * tempC * 100.0 / 1024.0 について。
analogRead() の返り値が 0-5V を 0-1023 に変えたものなんだそうです。
http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=1874
"5.0 * tempC / 1024.0" で、返り値を電圧にしていると。
LM35DZは、温度係数が 10.0 mV/C と秋月さんのサイトに書かれてました。なので、Vに 100.0 をかけると、気温が出ます。