Arduino UNO + LCD + 温湿度センサ

Arduino UNOと16x2のLCD、温湿度センサを使って

温度と湿度を表示できるようにしてみた。

 f:id:pgmart:20130629164718j:plain

 

メインはArduino UNO。

【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

LCDディスプレイ

SparkFun LCD-00791

16×2キャラクターLCDモジュール 赤文字/黒背景 5V

16×2キャラクターLCDモジュール 赤文字/黒背景 5V

と、それをシリアル制御できるSerLCD。

Serial Enabled LCD Backpack - SparkFun Electronics

これは、ディスプレイをシリアルで制御できるようにするモジュール。

 

まずはLCDで表示のテストから。

使い方は、ここにサンプルコードと共にあった。

Serial LCD quickstart - SparkFun Electronics

 

さらに、ここに書かれているように

SerLCD用のライブラリがあったので、これを使ってさらにシンプルに書くことができる。

Arduino Playground - SerLCD

 

温湿度センサ

DHT22/RHT03

湿度・温度センサー

湿度・温度センサー

※時期によって型番が異なるが、同一らしい

DHT22 temperature-humidity sensor + extras ID: 385 - $12.50 : Adafruit Industries, Unique & fun DIY electronics and kits

http://hirooka.pro/?p=945

 

f:id:pgmart:20130626084837j:plain

 

値を取得するコードはこちらのサイトを参考にさせていただき、あっさり取得できた。

 DHT22 / RHT03 | hirooka.pro

 

ただ、シリアル経由でPCに飛んでくるデータを見ると正しく数値は

取得できているようだが、

センサの値が何故か表示されない。

どうもsprintfでのfloatの値がうまく文字列に変換されていない。 

f:id:pgmart:20130706113642j:plain

調べてみると、Arduino Unoではsprintfでfloatは使えないらしい。

その代わり、dtostrf()という関数があることがわかった。

http://garretlab.web.fc2.com/arduino/reverse_lookup/index.html#string-float_to_string

 

スケッチ

最終的な コードはこんな感じ。