Proyecto domótico con Arduino con 4 lamparas, 1 motor servo y 1 alarma

 Hola a todos.

A continuación os presento el proyecto domótico realizado íntegramente mediante Arduino. Consiste en controlar mediante un mando de infrarrojos 4 lámparas, 1 motor servo y 1 alarma.

El montaje es el siguiente:

Podéis probarlo a continuación:

El código comentado para la programación es:
//Antes de nada declaramos las librerías, pines de los elementos e inicializaciones necesarias
#include <Servo.h> //incluimos la librería para control del servo motor
#include <IRremote.h> //incluimos la librería para el control IR
Servo servo; // Faltaba!!! para no discernir mayúsculas y minúsculas en servo
IRrecv sensor(9); //conectamos la señal que recibe el sensor IR al pin 9
decode_results lectura; //variable que almacena el dato del IR
//declaramos el resto de pines diferentes al infrarrojo
int led1=13;//declaramos pin para activar positivo bombilla 1
int led2=12;//declaramos pin para activar positivo bombilla 2
int led3=11;//declaramos pin para activar positivo bombilla 3
int led4=10;//declaramos pin para activar positivo bombilla 4
int alarma=4;//declaramos pin para activar positivo la alarma

//Declaramos variables para activar y desactivar el servo



int pinservo=8;//declaramos pin para enviar info al motor
int pulsomin = 1000;
int pulsomax = 2000;
void setup()

{

  servo.attach(pinservo,pulsomin,pulsomax); //comando para definir el servo servo.attach(pinservo,pulsomin,pulsomax)
  Serial.begin(9600);//iniciamos el puerto en serie del monitor
  sensor.enableIRIn();//habilitamos el sensor infrarrojo para lectura del control remoto
  servo.write(0);//inicializamos el servomotor en la posición inicial 0 grados
  pinMode(led1,OUTPUT);//establecemos el pin como dato que sale del Arduino
  pinMode(led2,OUTPUT);//establecemos el pin como dato que sale del Arduino
  pinMode(led3,OUTPUT);//establecemos el pin como dato que sale del Arduino
  pinMode(led4,OUTPUT);//establecemos el pin como dato que sale del Arduino
  pinMode(alarma,OUTPUT);//establecemos el pin como dato que sale del Arduino
  digitalWrite(13,0);//establecemos los pines que serán actividaos para escritura digital -> digitalWrite(pin,activación con 1 ó 0)
  digitalWrite(12,0);
  digitalWrite(11,0);
  digitalWrite(10,0);
  digitalWrite(4,0);

}

void loop() //algoritmo de la programación que se repitará siempre

{
  if (sensor.decode(&lectura)) //Si hay una lectura del sensor IR (Se ha pulsado el control remoto)
   {
    switch (lectura.value)
      {
      case 0xFD08F7: //código de frecuencia botón 1
      if (led1 == 1)
        {
        digitalWrite(13,LOW); //si estaba encendido, lo apaga
        led1 = 0;
        }
      else  
        {
        digitalWrite(13,HIGH); //si estaba apagado, lo enciende
        led1 = 1;
        }
      break;
      case 0xFD8877: //código de frecuencia del botón 2
      if (led2 == 1)
        {
        digitalWrite(12,LOW); //si estaba encendido, lo apaga
        led2 = 0;
        }
      else  
        {
        digitalWrite(12,HIGH); //si estaba apagado, lo enciende
        led2 = 1;
        }
      break;
      case 0xFD48B7: //código de frecuencia botón 3
      if (led3 == 1)
        {
        digitalWrite(11,LOW); //si estaba encendido, lo apaga
        led3 = 0;
        }
      else  
        {
        digitalWrite(11,HIGH); //si estaba apagado, lo enciende
        led3 = 1;
        }
      break;
 	  case 0xFD28D7:   //Corresponde al botón 4
        if (led4 == 1)
        {
          digitalWrite(10, LOW);   //Si estaba apagado lo enciende
          led4 = 0;
        }
        else
        {
          digitalWrite(10, HIGH);   //Si estaba encendido lo apaga
          led4 = 1;
        }
        break;
      case 0xFD58A7:   //Corresponde al botón 9
        if (alarma == 1)
        {
          digitalWrite(4, LOW);   //Si estaba apagado lo enciende
          alarma = 0;
        }
        else
        {
          digitalWrite(4, HIGH);   //Si estaba encendido lo apaga
          alarma = 1;
        }
        break;
      case 0xFDA857:   //Corresponde al botón 5
       for (int i = 10; i <= 13; i++) //for repite los comandos entre corchetes desde 10 hasta 13 
        {
          digitalWrite(i, LOW);    //Apaga todos los LEDs (Escribe bajo los pines)
          led1 = 0; //Asigna 0 a la lámpara 1
          led2 = 0; //Asigna 0 a la lámpara 2
          led3 = 0; //Asigna 0 a la lámpara 3
          led4 = 0; //Asigna 0 a la lámpara 4
        }
        break;
      case 0xFD6897:   //Corresponde al botón 6
        for (int i = 10; i <= 13; i++) //for repite los comandos entre corchetes desde 10 hasta 13 
        {
          digitalWrite(i, HIGH);     //Enciende todos los LEDs (Escribe alto los pines)
          led1 = 1;
          led2 = 1;
          led3 = 1;
          led4 = 1;
        }
        break;
      case 0xFD18E7:   //Corresponde al botón 7
         servo.write(180); //desplaza el motor servo al punto 180 grados
         delay(500);
        break;
      case 0xFD9867:   //Corresponde al botón 8
         servo.write(0); //desplaza el motor servo al punto 0 grados
         delay(500);
        break;
    }
    sensor.resume();    //Prepara el sensor infrarrojos para nuevas lecturas
    }    
}
 
Los códigos de las frecuencias podéis verlos en la siguiente tabla:
a:

For my remote I got the following conversion table:

KeyCode
POWER0xFD00FF
VOL+0xFD807F
FUNC/STOP0xFD40BF
│◄◄0xFD20DF
►││0xFDA05F
►►│0xFD609F
0xFD10EF
VOL-0xFD906F
0xFD50AF
00xFD30CF
EQ0xFDB04F
ST/REPT0xFD708F
10xFD08F7
20xFD8877
30xFD48B7
40xFD28D7
50xFDA857
60xFD6897
70xFD18E7
80xFD9867
90xFD58A7

Comentarios

Entradas populares