CQ出版の「Arduinoでちょっと未来を作る」に温度センサーLM35DZを使用したLCD表示の温度計の記事があったので,試してみた。
LM35DZは,1℃が10.0mVで比較的簡単に換算できるデバイスのようだ。
配線は単純そのもの。

動作電圧はデータシートでは,4~20Vとなっていますが,3.3Vでも動きます
あとで師匠たちに教えていただきたいので,動作成功したスケッチも掲げておく。本のままではエラーがたくさん出たのだ。

*********************************
#include<LiquidCrystal.h>
/*LM35DZ 温度計 20110626
アナログデータ温度センサーの値を読み取る。
読み取った値から電圧を求め,温度に換算してLCDモジュールに書き出す。
*/
LiquidCrystal LCD(10,9,8,7,6,5,4);
int ANIN=1; //温度センサ入力用のアナログポート用のアドレス
int indata=0; //
float temp=0;
int wr_data=48;
char wr_da2='A';
void setup() //初期化処理
{
pinMode(11,OUTPUT);
LCD.begin(2,16);
}
void loop() //メイン処理部分
{
indata = analogRead(ANIN); //温度センサの出力を読み取る
temp=5.000*indata/1024*100; // 基準電圧5Vを実数表示(float)の5.000と表示し
//浮動小数点演算を行う。基準電圧×センサ入力(Indata)/1024でVの
//単位で表示される。1℃/0.01Vを100倍して℃表示にする
digitalWrite(11,HIGH); //
LCD.clear(); //またはLCD162.home()を使用。以前の文字が残る時はclear
LCD.print(" indata="); //表示
LCD.print( indata); //
LCD.setCursor(0,1); //
LCD.print(" temp="); //表示
LCD.print( temp); //
LCD.print(" w="); //次のWriteの例の見出し 表示
LCD.write(wr_data); //dataを1バイト分書き出す
LCD.write(' '); //キャラクタースペースを出力
LCD.write(wr_da2); //1文字データを出力
delay(500); //0.5secのウェイト
wr_data++; //++はインクリメントを示し,変数wr_dataを+1する
wr_da2=wr_da2+1; //上記の++はこの式と同じインクリメントを示す
digitalWrite(11,LOW);
delay(500);
}
***********************************
長くてすみません。
Arduinoへの配線は黄色いところ。まずどこが動作しなかったかというと,LCDを認識させるのに,textでは <LCD162.・・・・・・>となっていたのだが,コンパイルするとみなエラー。そこで,昨日の<hello world>同様に,<LCD>だけとした。ヴァージョンアップの影響か?でも,このtext意外とミスプリが多い気がする。
それから数字が5.0000と5.000と二つ出てきたが,これは小数点以下のことだからどっちでもよかった。
あとは,まだ訳が分かっていないが,大文字と小文字の表記の原則について,これから勉強。
RWを昨日は,GNDとしたが,今日はpin9。
スペリングの間違いも結構あったし,つい「;」をつけるのを忘れる。
それから,ここが未解決なんだけれど,
LCD.print(" w="); //
LCD.write(wr_data); //
LCD.write(' '); //
LCD.write(wr_da2); //
の「" w="」は固定文字表示と分かったが,不要な「W=● ●」と出てしまう。ここの書き方がいまいち分からない。書かなくていいのなら書かなくてもいいか?・・・と思い,削除したら。もちろん,消える。ということは,どんな意味がこのスケッチにあるのか?
こんなところかな。
まあ,一応,スケッチをまねして書いて動作試験は成功でした。

arduinoの結線の様子。pinコードは電話線の単線コード

センサー部分。LEDは動作確認用。

pinコードは長めに作っておいて正解でした。

私にはこの<w=・・・>は余分だと思うが,どうして入れているのか分からない。

消してしまえばこの通り,すっきりするが・・・
LM35DZは,1℃が10.0mVで比較的簡単に換算できるデバイスのようだ。
配線は単純そのもの。

動作電圧はデータシートでは,4~20Vとなっていますが,3.3Vでも動きます
あとで師匠たちに教えていただきたいので,動作成功したスケッチも掲げておく。本のままではエラーがたくさん出たのだ。

*********************************
#include<LiquidCrystal.h>
/*LM35DZ 温度計 20110626
アナログデータ温度センサーの値を読み取る。
読み取った値から電圧を求め,温度に換算してLCDモジュールに書き出す。
*/
LiquidCrystal LCD(10,9,8,7,6,5,4);
int ANIN=1; //温度センサ入力用のアナログポート用のアドレス
int indata=0; //
float temp=0;
int wr_data=48;
char wr_da2='A';
void setup() //初期化処理
{
pinMode(11,OUTPUT);
LCD.begin(2,16);
}
void loop() //メイン処理部分
{
indata = analogRead(ANIN); //温度センサの出力を読み取る
temp=5.000*indata/1024*100; // 基準電圧5Vを実数表示(float)の5.000と表示し
//浮動小数点演算を行う。基準電圧×センサ入力(Indata)/1024でVの
//単位で表示される。1℃/0.01Vを100倍して℃表示にする
digitalWrite(11,HIGH); //
LCD.clear(); //またはLCD162.home()を使用。以前の文字が残る時はclear
LCD.print(" indata="); //表示
LCD.print( indata); //
LCD.setCursor(0,1); //
LCD.print(" temp="); //表示
LCD.print( temp); //
LCD.print(" w="); //次のWriteの例の見出し 表示
LCD.write(wr_data); //dataを1バイト分書き出す
LCD.write(' '); //キャラクタースペースを出力
LCD.write(wr_da2); //1文字データを出力
delay(500); //0.5secのウェイト
wr_data++; //++はインクリメントを示し,変数wr_dataを+1する
wr_da2=wr_da2+1; //上記の++はこの式と同じインクリメントを示す
digitalWrite(11,LOW);
delay(500);
}
***********************************
長くてすみません。
Arduinoへの配線は黄色いところ。まずどこが動作しなかったかというと,LCDを認識させるのに,textでは <LCD162.・・・・・・>となっていたのだが,コンパイルするとみなエラー。そこで,昨日の<hello world>同様に,<LCD>だけとした。ヴァージョンアップの影響か?でも,このtext意外とミスプリが多い気がする。
それから数字が5.0000と5.000と二つ出てきたが,これは小数点以下のことだからどっちでもよかった。
あとは,まだ訳が分かっていないが,大文字と小文字の表記の原則について,これから勉強。
RWを昨日は,GNDとしたが,今日はpin9。
スペリングの間違いも結構あったし,つい「;」をつけるのを忘れる。
それから,ここが未解決なんだけれど,
LCD.print(" w="); //
LCD.write(wr_data); //
LCD.write(' '); //
LCD.write(wr_da2); //
の「" w="」は固定文字表示と分かったが,不要な「W=● ●」と出てしまう。ここの書き方がいまいち分からない。書かなくていいのなら書かなくてもいいか?・・・と思い,削除したら。もちろん,消える。ということは,どんな意味がこのスケッチにあるのか?
こんなところかな。
まあ,一応,スケッチをまねして書いて動作試験は成功でした。

arduinoの結線の様子。pinコードは電話線の単線コード

センサー部分。LEDは動作確認用。

pinコードは長めに作っておいて正解でした。

私にはこの<w=・・・>は余分だと思うが,どうして入れているのか分からない。

消してしまえばこの通り,すっきりするが・・・