ATtiny402 + LM35DZ で温度計
秋月電子通商でATtiny402の取り扱いが始まったので(1個70円),さっそく買って試してみました。
以前,ATtiny202を使ってみたのですが プログラムメモリが2KBしかなくて,なかなか使いどころが難しいなあと感じました。今回のATtiny402は,2倍の4KBあるので前回できなかった温度計を作ってみることにしましょう。
まずは,SOP8パッケージのATtiny402を秋月のSOP8→DIP変換基板を使ってDIP化します。
前回,Arduino IDEのボードマネージャで「megaTinyCore」をインストールしたので,ATtiny402もすぐに使えます。
温度センサLM35DZとI2C接続のLCD1602を接続してスケッチを書いてみます。
//温度計 LM35 + I2C_LCD1602
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define tempPin A3
LiquidCrystal_I2C lcd(0x3F, 16, 2); //I2Cアドレス 0x3F
float value;
float temp;void setup(){
pinMode(tempPin,INPUT);
Wire.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.print(temp,1); lcd.write(0b11011111); lcd.print("C");
delay(1000);
}
パソコンとの接続にはUSB-TTL変換基板を使って,UPDI(Unified Program and Debug Interface)で書き込むことにします。
Arduino IDEの設定は次のようにして書き込みます。そうすると,こんな小さなスケッチなのにプログラムメモリ4KBのうち86%が使われてしまいました。ライブラリなんか使わないで生でゴリゴリやらないとダメなんでしょうかねw
ところで,lcd.print(temp) じゃなくて,lcd.print(temp,1) と書いてやると,小数点以下を1桁にしてくれるんですね(小数点以下第2位を四捨五入)。知らなかった :D
| 固定リンク | 0