#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
#define LED1 25 // pisca a cada hora
#define LED2 26 // pisca a cada 10 minutos
#define LED3 27 // pisca a cada minuto
int lastMinute = -1;
int lastTenMinutes = -1;
int lastHour = -1;
void setup() {
Serial.begin(115200);
Wire.begin();
if (!rtc.begin()) {
Serial.println("⚠️ RTC não encontrado!");
while (1);
}
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // use 1x para ajustar o relógio
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
Serial.println("✅ Sistema iniciado. Aguardando mudança de tempo...");
}
void loop() {
DateTime now = rtc.now();
int currentMinute = now.minute();
int currentTenMinute = currentMinute / 10;
int currentHour = now.hour();
// Pisca LED3 e mostra hora a cada minuto
if (currentMinute != lastMinute) {
blinkLED(LED3);
lastMinute = currentMinute;
Serial.print("🕒 Hora atual: ");
printTime(now);
}
// Pisca LED2 a cada 10 minutos
if (currentTenMinute != lastTenMinutes) {
blinkLED(LED2);
lastTenMinutes = currentTenMinute;
Serial.println("🔸 LED2: dezena de minuto mudou!");
}
// Pisca LED1 a cada hora
if (currentHour != lastHour) {
blinkLED(LED1);
lastHour = currentHour;
Serial.println("🕐 LED1: hora mudou!");
}
delay(1000); // verifica a cada segundo
}
void blinkLED(int pin) {
digitalWrite(pin, HIGH);
delay(200);
digitalWrite(pin, LOW);
}
void printTime(DateTime now) {
// Mostra formato HH:MM:SS DD/MM/YYYY
char buffer[25];
sprintf(buffer, "%02d:%02d:%02d %02d/%02d/%04d",
now.hour(), now.minute(), now.second(),
now.day(), now.month(), now.year());
Serial.println(buffer);
}