#include #include #include // Pines del chip I2C al LCD: // (addr,en,rw,rs,d4,d5,d6,d7,BackLight, BLstatus) LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address [0x27 o 0x3F] RTC_DS3231 reloj; bool alarma = true; DateTime fecha; void setup() { Serial.begin(9600); lcd.begin(20,4); if(!reloj.begin()) { Serial.println("Modulo RTC no encontrado!!"); while(1); // 1 = true - blucle infito si no hay modulo } //reloj.adjust(DateTime(__DATE__, __TIME__)); // Descomentar para ajustar fecha y hora } void loop() { fecha = reloj.now(); getFecha(); lcd.clear(); lcd.home(); mostrarHora(); delay(1000); } /* if(fecha.hour() == 13 && fecha.minute() == 00) { if(alarma == true) { Serial.println("Alarma 1 PM"); alarma = false; } } getFecha(); delay(1000); if(fecha.hour() == 12 && fecha.minute() ==30) { alarma = true; } } */ void getFecha() { Serial.print(fecha.day()); Serial.print("/"); Serial.print(fecha.month()); Serial.print("/"); Serial.print(fecha.year()); Serial.print(" "); Serial.print(fecha.hour()); Serial.print(":"); Serial.print(fecha.minute()); Serial.print(":"); Serial.println(fecha.second()); } String getHora(char var) { switch (var) { case 'h': if(fecha.hour() < 10) { return ('0'+(String)fecha.hour()); break; } else { return (String)fecha.hour();break; } case 'm': if(fecha.minute() <10) { return ('0'+(String)fecha.minute()); break; } else { return (String)fecha.minute();break; } case 's': if(fecha.second() <10) { return ('0'+(String)fecha.second()); break; } else { return (String)fecha.second();break; } } } void mostrarHora() { lcd.print("La hora es: "); lcd.print(getHora('h')); lcd.print(":"); lcd.print(getHora('m')); lcd.print(":"); lcd.print(getHora('s')); lcd.setCursor(0, 1); }