//-----------------Este código lo tomé de la librería RTClib--------------
//-----------------------------LIBRERIAS----------------------------------
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <RTClib.h>
//-----------------------CREACIÓN DE LOS OBJETOS--------------------------
LiquidCrystal_I2C lcd(0x27, 16,2);
RTC_DS1307 rtc;
//-------------------------VARIABLES GLOBALES------------------------------
#define PULSADOR1 12
//--------DEFINICIÓN DEL ARREGLO CON LOS DÍAS DE LA SEMANA---------------
char daysOfTheWeek [7][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
//[7]: cantidad de días que componen la semana
//[4] : cantidad de caracteres que componen cada día, ej. "Sun" tiene tres
//caracteres. Se suele poner uno de más.
//-------------------------------------------------------------------------
//------------------------------------------------------------------------
//---------------------------SETUP---------------------------------------
void setup() {
//Inicializa el puerto serial
Serial.begin(9600);
//Inicializa el display lcd
lcd.init();
lcd.backlight();
pinMode(PULSADOR1, INPUT_PULLUP);
// attachInterrupt(digitalPinToInterrupt(PULSADOR1), isr_boton1, FALLING);
//Si falla la conexión del módulo RTC
if (!rtc.begin()){
Serial.println("Couldn´t find RTC"); //Imprime mensaje de error
Serial.flush();
}
}//Fin SETUP
//-------------------------------LOOP-----------------------------------
void loop() {
RTC();
}//Fin LOOP
//----------------------------FUNCIÓN RTC-------------------------------
void RTC(){
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
/*
DateTime now = rtc.now();:
Esta línea de código crea una instancia de la clase DateTime llamada now
y la inicializa con la fecha y hora actual obtenida del reloj en tiempo
real (RTC). Esto significa que now contendrá la fecha y hora actuales
después de ejecutar esta línea.
*/
DateTime now = rtc.now();
//Imprime en el monitor serial
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
//Imprime en el display lcd
lcd.setCursor(0,0);
lcd.print(now.year(), DEC);
lcd.print('/');
//Corrige el error de la falta del cero en la decena
if(now.month() >= 10){
lcd.print(now.month(), DEC);
}else{
lcd.print('0');
lcd.print(now.month(), DEC);
}//Fin corrección
lcd.print('/');
lcd.print(now.day(), DEC);
lcd.print(" ");
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(" ");
lcd.setCursor(8,1);
//Corrige el error de la falta del cero en la decena
if(now.hour() >= 10){
lcd.print(now.hour(), DEC);
}else{
lcd.print('0');
lcd.print(now.hour(), DEC);
}//Fin corrección
lcd.print(':');
//Corrige el error de la falta del cero en la decena
if(now.minute() >= 10){
lcd.print(now.minute(), DEC);
}else{
lcd.print('0');
lcd.print(now.minute(), DEC);
}//Fin corrección
lcd.print(':');
//Corrige el error de la falta del cero en la decena
if(now.second() >= 10 ){
lcd.print(now.second(), DEC);
}else{
lcd.print('0');
lcd.print(now.second(), DEC);
}//Fin corrección
delay(1000);
//--------------------------------CORRECCIÓN FECHA-----------------------------------
int pulsador1 = digitalRead(PULSADOR1);
int cont = 0;
if (pulsador1 == LOW){
cont++;
switch(cont){
case 1:
if(cont == 1){
Serial.println("SUN");
Serial.println(now.day(), DEC);
lcd.setCursor(0,13);
lcd.print("SUN");
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(now.day(), DEC);
}break;
case 2:
if(cont == 2){
Serial.println("MON");
Serial.println(now.day(), DEC);
lcd.setCursor(0,13);
lcd.print("MON");
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(now.day(), DEC);
}break;
case 3:
if(cont == 3){
Serial.println("TUE");
Serial.println(now.day(), DEC);
lcd.setCursor(0,13);
lcd.print("TUE");
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(now.day(), DEC);
}break;
case 4:
if(cont == 4){
Serial.println("WED");
Serial.println(now.day(), DEC);
lcd.setCursor(0,13);
lcd.print("WED");
lcd.print(now.day(), DEC);
}break;
case 5:
if(cont == 5){
Serial.println("THU");
Serial.println(now.day(), DEC);
lcd.setCursor(0,13);
lcd.print("THU");
lcd.print(now.day(), DEC);
}break;
case 6:
if(cont == 6){
Serial.println("FRI");
Serial.println(now.day(), DEC);
lcd.setCursor(0,13);
lcd.print("FRI");
lcd.print(now.day(), DEC);
}break;
case 7:
if(cont == 7){
Serial.println("SAT");
Serial.println(now.day(), DEC);
lcd.setCursor(0,13);
lcd.print("SAT");
lcd.print(now.day(), DEC);
}break;
default:;
}
}
}//Fin función RTC
//------------------------FUNCIÓN PULSADOR------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//DateTime now = rtc.now();
//lcd.print('ZZZ');
//lcd.print(now.month(), DEC);
/*
void isr_boton1(){
DateTime now = rtc.now();
int leerPin12 = digitalRead(PULSADOR1);
if(leerPin12 == LOW){
lcd.print('ZZZ');
lcd.print(now.month(), DEC);
}
}
*/