Arduinoで作ろう(58) DigisparkとLM35で温度計
Digisparkに温度センサLM35DZをつないで温度計を作ってみました。表示装置は,I2C接続のLCDです。
ブレッドボード上にパーツを配置し始めてから気がついたのですが,普通のブレッドボードは端にある電源ラインの穴とパーツを配置する部分の穴が少しズレてるんですね。サンハヤトの SAD-101はズレてないので,Digisparkを使うならこれがオススメです。
I2C接続のLCD1602を使うには,C:\Users\USER\AppData\Local\Arduino15\packages\digispark\hardware\avr\1.0.0\
libraries\DigisparkLCD の中にあるライブラリ LiquidCrystal_I2C.h を使うようですが,本家Arduinoのライブラリにも LiquidCrystal_I2C.h があって同名なので,これがあるとうまくコンパイルが通りません。一時的に本家の方をリネームして衝突を回避しました。
// 温度計 LM35DZ + I2C_LCD1602
#include <TinyWireM.h>
#include <LiquidCrystal_I2C.h>
#define tempPin A2
LiquidCrystal_I2C lcd(0x27, 16, 2); //I2Cアドレス 0x27float value;
float temp;void setup(){
pinMode(tempPin,INPUT);
TinyWireM.begin();
lcd.init();
lcd.backlight();
}void loop(){
value=analogRead(tempPin);
temp = (value*500)/1023;
lcd.setCursor(0,0);
lcd.print("temperature:");
lcd.setCursor(9,1);
lcd.print(temp); lcd.write(0b11011111); lcd.print("C");
delay(1000);
}
あと2つヘンなことがあります。まず,LM35の出力を接続できるはずのDigisparkのアナログinputのA0からA3のうち,A2しか使い物になりませんでした。A0とA3だとデタラメな数字がLCDに表示されます。なんで?
もうひとつ,Digisparkが完全に起動した後にA2にLM35出力を接続しないと ちゃんと測定できないのです。この2つのトラブルで5時間くらい時間を無駄にしました...。僕が買ったのが,中華製のパチもんDigisparkだからかなあ?
【追記】
Amazonのカスタマーレビューを見たら少しわかってきました。
中華パチもんDigisparkは,P5がRESETに割り当てられてるみたいですね。試しにP5をGNDにちょんと触ったらリセットがかかりました。
あと,DigisparkをUSB端子につないでるときは P3とP4は他の用途に使えないみたい。なーんだ。
| 固定リンク | 0
「Arduino」カテゴリの記事
- 大型7セグLEDを4個使った表示装置(2022.01.23)
- Arduinoで作ろう(61) Digisparkで7セグLED温度計(2022.01.16)
- Arduinoで作ろう(60) Digisparkでデジタル時計(2022.01.10)
- Arduinoで作ろう(59) DigisparkのP5を使えるようにした(2022.01.08)
- Arduinoで作ろう(58) DigisparkとLM35で温度計(2022.01.02)
「Digispark」カテゴリの記事
- Digisparkのファームウエア修復(2022.01.14)
- Digisparkのヒューズリセット(2022.01.12)
- Arduinoで作ろう(60) Digisparkでデジタル時計(2022.01.10)
- Arduinoで作ろう(59) DigisparkのP5を使えるようにした(2022.01.08)
- Arduinoで作ろう(58) DigisparkとLM35で温度計(2022.01.02)