#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,10,9,8,7);
int modo = 0;
int col = 5;
boolean cursor = true;
boolean unidad = false;
boolean minutoD = false;
boolean minutoU = false;
boolean vez = true;
const int pinBuzzer = 13;
// //
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
int num = 0;
int num1 = 0;
int num2 = 0;
int num3 = 0;
// //
#include <IRremote.h>
#define IR_PIN 2
IRrecv sensor(IR_PIN); /*Sensor es un objeto tipo IRrecv, siempre que se le quiera
llamar, debe ser de esa manera*/
void setup() {
lcd.begin(16,2);
sensor.enableIRIn();
Wire.begin();
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(__DATE__, __TIME__));}
}
void loop() {
DateTime now = rtc.now();
String HoraA = String(now.hour()) + ":" + String(now.minute())+ ":" + String(now.second());
String Horaa = String(now.hour()) + ":" + String(now.minute());
String FechaA = String(now.day()) + "/" + String(now.month()) + "/" + String(now.year());
String HoraAl = String(num1) + String(num);
String Alarma = String(HoraAl) + ":" + String((num2 * 10)+ num3);
if (HoraAl >= "18"){
HoraAl = String(((num1 * 10) + num)-12);
} //Verificar si la hora del reloj está en formato de 12 o de 24 horas//
else {
HoraAl = String((num1 * 10) + num);
}
if (Alarma == Horaa) {
lcd.noBlink();
lcd.noCursor();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("DESPIERTA");
modo = 0;
tone(pinBuzzer,440);
delay(100);
}
else {
if(sensor.decode()) {
switch (sensor.decodedIRData.command) {
case 226:
modo = ++modo;
vez = true;
break;
case 194:
modo = --modo;
lcd.noCursor();
break;
case 162:
lcd.noDisplay();
break;
}
}
sensor.resume();
switch (modo) {
case 0:
lcd.noBlink();
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Hora Actual:");
lcd.setCursor(4,1);
lcd.print(HoraA);
delay(2000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Fecha Actual:");
lcd.setCursor(4,1);
lcd.print(FechaA);
delay(2000);
break;
case 1:
if (num1 == 2) {
if (num >= 5) {
num = 4;
num2 = 0;
num3 = 0;
}
}
if (vez == true) {
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Pon la alarma:");
vez = false;}
else {
String Horas = String(num1) + String(num);
String Minutos = String(num2) + String(num3);
lcd.noCursor();
lcd.noBlink();
lcd.setCursor(5,1);
lcd.print(Horas + ":" + Minutos);
lcd.setCursor(col,1);
lcd.cursor();
lcd.blink();
delay(500);
if (cursor == true) {
switch (sensor.decodedIRData.command) {
case 144:
sensor.resume();
col = 6;
cursor = false;
unidad = true;
break;
case 104:
num1 = 0;
break;
case 48:
num1 = 1;
break;
case 24:
num1 = 2;
break;
case 168:
lcd.noBlink();
lcd.noCursor();
break;
case 152:
col = 8;
cursor = false;
minutoD = true;
break;
}
}
else {
if (unidad == true) {
switch (sensor.decodedIRData.command) {
case 224:
col = 5;
cursor = true;
unidad = false;
break;
case 104:
num = 0;
break;
case 48:
num = 1;
break;
case 24:
num = 2;
break;
case 122:
num = 3;
break;
case 16:
num = 4;
break;
case 56:
num = 5;
break;
case 90:
num = 6;
break;
case 66:
num = 7;
break;
case 74:
num = 8;
break;
case 82:
num = 9;
break;
case 152:
col = 8;
unidad = false;
minutoD = true;
break;
}
}
else {
if (minutoD == true) {
switch (sensor.decodedIRData.command) {
case 144:
col = 9;
minutoU = true;
minutoD = false;
break;
case 104:
num2 = 0;
break;
case 48:
num2 = 1;
break;
case 24:
num2 = 2;
break;
case 122:
num2 = 3;
break;
case 16:
num2 = 4;
break;
case 56:
num2 = 5;
break;
case 2:
col = 5;
minutoD = false;
cursor = true;
break;
}
}
else {
if (minutoU == true){
switch (sensor.decodedIRData.command) {
case 224:
col = 8;
minutoD = true;
minutoU = false;
break;
case 104:
num3 = 0;
break;
case 48:
num3 = 1;
break;
case 24:
num3 = 2;
break;
case 122:
num3 = 3;
break;
case 16:
num3 = 4;
break;
case 56:
num3 = 5;
break;
case 90:
num3 = 6;
break;
case 66:
num3 = 7;
break;
case 74:
num3 = 8;
break;
case 82:
num3 = 9;
break;
case 2:
col = 5;
minutoU = false;
cursor = true;
break;
}
}
}
}
}
}
break;
}
}
}