#include <stdio.h>
#include <Wire.h>
#include <Arduino.h>
#define DEVICE_ADDRESS 0x3E // address of AQM1602XA-GBW-IIC
#define AHT25_ADDRESS 0x38 // address of ATH25
char line0[] = "AQM1602XA-GBW-II";
char line1[] = " yoshikon.com ";
char test0[] = "1234567890123456";
char test1[] = "6543210987654321";
void setup(void){
Wire.setClock(115200);
Wire.begin();
init_LCD();
writeLCDclear();
delay(100);
writeCommand(0x02);
for(int i=0; i<15; i++){writeData(test0[i]);}
delay(100);
for(int i=0; i<15; i++){
writeCommand(0x40 + 0x80 + i);
writeData(test1[i]);
}
delay(500);
}
loop(){
readData();
delay(700);
delay(700);
}
void readData(void){
long int x;
byte digraw[8];
char humidi[15];
char data_t[] = "Temp:";
char data_h[] = "Humi:";
uint32_t hum_raw, temp_raw, hhh, ttt;
float T;
float H;
char t_data[7];
char h_data[7];
int tempp;
int humm;
int t;
int tt;
int i;
Wire.beginTransmission(AHT25_ADDRESS);
Wire.write(0xAC);
Wire.write(0x33);
Wire.write(0x00);
Wire.endTransmission();
delay(80);
Wire.requestFrom(AHT25_ADDRESS, 7);
for(i = 0; i < 7; i++){digraw[i] = Wire.read();}
hum_raw = ((uint32_t)digraw[1] << 12) | ((uint32_t)digraw[2] << 4) | (((uint32_t)digraw[3] >> 4) & 0x0F);
temp_raw = (((uint32_t)digraw[3] & 0x0F) << 16 ) | ((uint32_t)digraw[4] << 8) | (uint32_t)digraw[5];
H = (hum_raw / 1048576.0 * 100);
T = (temp_raw / 1048576.0 * 200 ) - 50;
sprintf(tempera, "T:%2.1fdC H:%2.1f%s ", T, H, "%");
sprintf(TTT, "%2.1f", T);
sprintf(HHH, "%2.1f", H);
//writeCommand(0x02);
//for(int i = 0; i < sizeof(tempera); i++){writeData(tempera[i]);}
delay(10);
}
void writeCommand(char t_command){
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(0x00);
Wire.write(t_command);
Wire.endTransmission();
delay(10);
}
void writeData(char t_data){
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(0x40);
Wire.write(t_data);
Wire.endTransmission();
delay(10);
}
void writeLCDclear(){
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(0x20);
Wire.write(0x01);
Wire.endTransmission();
}
void init_LCD(void){
delay(100);
writeCommand(0x38); // FUNCTION SET
delay(20);
writeCommand(0x39); // IS=1กกกก
delay(20);
writeCommand(0x14); // INT OSC FREQUENCY
delay(20);
writeCommand(0x73); // CONTRAST SET 0,1,2,3
delay(20);
writeCommand(0x56); // CONTRAST SET 4,5
delay(20);
writeCommand(0x6C); // F0LLOWER CONTROL
delay(20);
writeCommand(0x38); // IS=0
delay(20);
writeCommand(0x0C); // Display ON
delay(20);
writeCommand(0x01); // Clear Display
delay(20);
writeCommand(0x06); // Entry Mode
delay(20);
}