/**
Simple Serial-like debug interface example
for the Franzininho DIY (ATtiny85 chip) on the Wokwi simulator.
by Anderson Costa with ❤ for the Wokwi community
TinyDebug Library by Uri Shaked https://github.com/wokwi/TinyDebug
Visit https://wokwi.com to learn about the Wokwi Simulator
Visit https://franzininho.com.br to learn about the Franzininho
*/
#include <TinyWireM.h>
#include <TinyDebug.h>
#define DS1307_ADDR 0x68
#define LED1 PB1
uint8_t seconds;
uint8_t minutes;
uint8_t hours;
uint8_t dayOfWeek;
uint8_t day;
uint8_t month;
uint16_t year;
void setup() {
Debug.begin();
TinyWireM.begin();
pinMode(PIN1, OUTPUT);
delay(2000);
}
void loop() {
uint8_t wireRet = 0;
TinyWireM.beginTransmission(DS1307_ADDR); // Reset DS1307 register pointer
TinyWireM.send(0x00);
wireRet = TinyWireM.endTransmission();
if (wireRet) { // Report any send esrrors
Debug.print("SendError: ");
Debug.println(wireRet, DEC);
delay(1500);
}
// Request 7 bytes from DS1307
TinyWireM.requestFrom(DS1307_ADDR, 7);
seconds = bcdToDec(TinyWireM.receive() & 0x7F);
minutes = bcdToDec(TinyWireM.receive());
hours = bcdToDec(TinyWireM.receive());
dayOfWeek = TinyWireM.receive();
day = bcdToDec(TinyWireM.receive());
month = bcdToDec(TinyWireM.receive());
year = bcdToDec(TinyWireM.receive()) + 2000;
Debug.print("Current time: ");
Debug.print(hours);
Debug.print(":");
Debug.print(minutes);
Debug.print(":");
Debug.println(seconds);
Debug.print("Current date: ");
Debug.print(day);
Debug.print("/");
Debug.print(month);
Debug.print("/");
Debug.println(year);
Debug.println();
digitalWrite(LED1, HIGH);
delay(500);
digitalWrite(LED1, LOW);
delay(500);
}
// Convert binary coded decimal to normal decimal numbers
uint8_t bcdToDec(uint8_t value) {
return ((value / 16 * 10) + (value % 16));
}