#include <IRremote.h> //Librería para el control remoto de infrarojos
#include <Servo.h> //Librería para el servomotor
#include <RTClib.h> //Librería para el reloj de tiempo real
#define controlRemotoInfrarojos 12 //Establecemos el PIN 12 de la placa al control remoto de infrarojos
IRrecv sensorDelControlRemoto(controlRemotoInfrarojos); //Hacemos que el receptor de infrarojos
int Led = 13; //Establecemos el PIN 13 de la placa al led
Servo servomotor; //Le damos el nombre de servomotor al servo
int girarDer = 180; //Variable que hará que el servo gire hacia la derecha
int girarIzq = 0; //Variable que hará que el servo gire hacia la derecha
RTC_DS1307 rtc; //Establecemos nuestro RTC modelo DS1307 como RTC
char diasDeLaSemana[7][12] = {"DOMINGO", "LUNES", "MARTES", "MIÉRCOLES", "JUEVES", "VIERNES", "SÁBADO"}; //Variable char que guarda los 7 dias de la semana
void setup()
{
Serial.begin(9600); //Conexión con la consola
pinMode (Led, OUTPUT); //Establecemos el led en modo de salida (Output)
sensorDelControlRemoto.enableIRIn(); //Encendemos el receptor del control remoto
Serial.println("Activa el sistema con el botón rojo"); //Mensaje que nos avisa que activemos el sistema
servomotor.write(90); //Reiniciamos la posición del servo para que esté recta
digitalWrite(Led, LOW); //Reiniciamos el led a apagado
if (! rtc.begin()) //Condicional que hace que funcione el RTC
{
Serial.flush();
abort();
}
}
void loop()
{
if (sensorDelControlRemoto.decode()) //Condicional que crea un nuevo void para el IR
{
condicionalesDelControlRemoto();
sensorDelControlRemoto.resume();
}
}
void condicionalesDelControlRemoto ()
{
switch (sensorDelControlRemoto.decodedIRData.command) //Condicionales para cada botón
{
case 162: //Botón de encendido
Serial.println(); //Enter
Serial.println("[🔛] Botón pulsado"); //Mensaje por consola
servomotor.attach(11); //Establece el pin 11 al servomotor
digitalWrite(Led, HIGH); //Enciende el led
break;
case 226: //Botón de menu
Serial.println(); //Enter
Serial.println("[Menu] Botón pulsado"); //Mensaje por consola
servomotor.detach(); //Desestablece el pin del servomotor
digitalWrite(Led,LOW); //Apaga el led
Serial.println(); //Enter
break;
case 2: //Botón de más
Serial.println(); //Enter
Serial.println("[➕] Botón pulsado"); //Mensaje por consola
servomotor.write(girarIzq); //Servo gira izquierda
Serial.println(); //Enter
break;
case 168: //Botón de reproducir
Serial.println(); //Enter
Serial.println("[▶️] Botón pulsado"); //Mensaje por consola
servomotor.write(girarDer); //Servo gira derecha
delay(1000); //1 segundo de espera
servomotor.write(girarIzq); //Servo gira izquierda
delay(1000); //1 segundo de espera
servomotor.write(girarDer); //Servo gira derecha
delay(1000); //1 segundo de espera
servomotor.write(girarIzq); //Servo gira izquierda
Serial.println(); //Enter
break;
case 152: //Botón de menos
Serial.println(); //Enter
Serial.println("[➖] Botón pulsado"); //Mensaje por consola
servomotor.write(girarDer); //Servo gira derecha
Serial.println(); //Enter
break;
case 176: //Botón de C
Serial.println(); //Enter
Serial.println("[©️] Botón pulsado"); //Mensaje por consola
servomotor.detach(); //Desestablece el pin del servomotor
Serial.println(); //Enter
break;
case 34: //Botón de test
Serial.println(); //Enter
Serial.println("[TEST] Botón pulsado"); //Mensaje por consola
DateTime now = rtc.now(); //Guarda el tiempo actual
Serial.print("Fecha y hora actual: "); //Mensaje por consola
Serial.print(diasDeLaSemana[now.dayOfTheWeek()]); //Muestra por consola el día actual
Serial.print(' '); //Espacio
Serial.print(now.day(), DEC); //Mensaje del día numérico
Serial.print('/'); //Barra espaciadora
Serial.print(now.month(), DEC); //Mensaje del mes numérico
Serial.print('/'); //Barra espaciadora
Serial.print(now.year(), DEC); //Mensaje del año numérico
Serial.print(' '); //Espacio
Serial.print(now.hour(), DEC); //Mensaje de la hora numérica
Serial.print(':'); //Dos puntos
Serial.print(now.minute(), DEC); //Mensaje del minuto numérico
Serial.print(':'); //Dos puntos
Serial.print(now.second(), DEC); //Mensaje del segundo numérico
Serial.println(); //Enter
break;
}
}