#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define ds3231_adr 0x68
void setup()
{
Wire.begin();
lcd.init(); // initializacija LCD-a
lcd.backlight();
Serial.begin(9600);
lcd.setCursor(2,0);
lcd.print(":");
lcd.setCursor(5,0);
lcd.print(":");
}
uint8_t currentTime[6]={100,100,100,100,100,100};
void readTime()
{
Wire.beginTransmission(ds3231_adr);
Wire.write(0x00);
byte I2Cerror = Wire.endTransmission();
if (I2Cerror)
{
Serial.print("I2C error :");
Serial.println(I2Cerror);
return;
}
Wire.requestFrom(ds3231_adr, 3);
// while(Wire.available() != 3) ;
byte secondsBCD = Wire.read();
byte minutesBCD = Wire.read();
byte hoursBCD = Wire.read();
uint8_t sec1 = (secondsBCD & 0x0F);
uint8_t sec10 = (secondsBCD >> 4) ;
uint8_t min1 = (minutesBCD & 0x0F);
uint8_t min10 = (minutesBCD >> 4) ;
uint8_t hour1 = (hoursBCD & 0x0F);
uint8_t hour10 = (hoursBCD >> 4);
if (sec1 != currentTime[5]) {
currentTime[5]=sec1;
lcd.setCursor(7,0);
lcd.print(sec1);
}
if (sec10 != currentTime[4]) {
currentTime[4]=sec10;
lcd.setCursor(6,0);
lcd.print(sec10);
}
if (min1 != currentTime[3]) {
currentTime[3]=min1;
lcd.setCursor(4,0);
lcd.print(min1);
}
if (min10 != currentTime[2]) {
currentTime[2]=min10;
lcd.setCursor(3,0);
lcd.print(min10);
}
if (hour1 != currentTime[1]) {
currentTime[1]=hour1;
lcd.setCursor(1,0);
lcd.print(hour1);
}
if (hour10 != currentTime[0]) {
currentTime[0]=hour10;
lcd.setCursor(0,0);
lcd.print(hour10);
}
Serial.print(hoursBCD,HEX);Serial.print(":");
Serial.print(minutesBCD,HEX);Serial.print(":");
Serial.print(secondsBCD,HEX);
Serial.print("\n");
}
void loop()
{
readTime();
delay(100);
}