Attiny85とAQM0802A(LCD)のI2C接続

Attiny85とAQM0802A(LCD)のI2C接続

以前に、ブレッドボード上でArduinoにAQM0802を接続して文字を表示できたので、今度はAttiny85での表示。

Arduino UNO,Nanoだと"Wire.h"を読み込むんだがAttinyでI2Cを扱うには、”TinyWireM"を読み込む。
またLCDで提供されているST7032.hの中身とかも変更する必要がある。

そこは自分でやらなくても、非常に先人の方々がまとめてくれている。(こことか)

・はまった点症状
AttinyにちゃんとISPから書き込みができているのに液晶に何も映らない。
かと言って同じスケッチをNanoに書き込み”Wire”に戻してあげて接続すると動く。
つまり、スケッチが悪い訳でもないし、液晶が壊れている訳でもない。

VCCのラインにスイッチを設けてやって、スイッチをなぜかダブルクリックすると液晶が映る。一度映ると消える事はないが、たまに映らない事があり不安定・・・
なぞのままである。

でAttinyが表示器を手にいれられた。

でスケッチを書き換えて温度計としてみる。
サーミスタのテストをしたときのスケッチとマージして、Attiny85で計測して表示する。


26度付近の室温を示して、サーミスタを手でつまむと34度とかまですぐ上昇。
温度表示まではできた。



//this is a test for attiny85 thermistor
//measured temperature is displayed on LCD AQM0802A
 //  PB5[  ]VCC
 //  PB3[  ]PB2 SCL
 //  PB4[  ]PB1
 //  GND[  ]PB0 SDA

#include <TinyWireM.h>
#include <ST7032.h>
ST7032 lcd;


const int PIN_ANALOG_INPUT = 4;
const float V5V = 5.0;//measured voltage +5V pin.
const float R10k = 9980;//measured R R10k.
const float B = 3500;//measured voltage R10k.
const float R0 = 200000;//themistor @ 25 dgree

void setup() {
  // put your setup code here, to run once:
  // set up the LCD's number of columns and rows:
  lcd.begin(8, 2);
  lcd.setContrast(10);
  // Print a message to the LCD.
  lcd.print("Temp(C)=");
 // pinMode(3, OUTPUT);
  pinMode(PIN_ANALOG_INPUT, INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
  int i = analogRead(A2);
  float Vm = i * V5V/ 1023.0;

  float Rth=R10k*Vm/(V5V-Vm);
  float invT=1/B*log(Rth/R0)+1/(273.15+25);
  float Ta=1/invT;
  float Td=Ta-273.15;

  lcd.setCursor(0, 1);
  lcd.print(Td);
  delay(500);
}





コメント

このブログの人気の投稿

Attiny85 FuseRest

HS101 STM32の自作お手軽オシロスコープ