« Arduinoで作ろう(57) DigisparkでLチカ | トップページ | aitendo 2022 お楽しみ福袋 »

2022年1月 2日 (日)

Arduinoで作ろう(58) DigisparkとLM35で温度計

Digispark_lm35_i2c_lcd1602_

20220102-152149

 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アドレス 0x27

float 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は他の用途に使えないみたい。なーんだ。
Attiny85pinout

 

  

| |

« Arduinoで作ろう(57) DigisparkでLチカ | トップページ | aitendo 2022 お楽しみ福袋 »

Arduino」カテゴリの記事

Digispark」カテゴリの記事

AVRマイコン」カテゴリの記事