Proyecto domótico con Arduino con 4 lámpara un motor servo y 1 alarma

LHN
0

 Hola a todos,

A continuación os presento el proyecto domótico realiza íntegramente realizado por ARDUINO.

consiste en controlar mediante un mando de infrarrojos 4  lámparas un motor servo y 1 alarma.



Podéis probarlo a continuación :




El Código comentado para la programación: 

//Proyecto domótico by LHN para control de bombillas y motor de persiana mediante IR

//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 activarla alarma en el pin 4



//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: //código de frecuencia del botón 9

      if (alarma == 1)

        {

        digitalWrite(4,LOW); //si estaba encendido, lo apaga

        alarma = 0;

        }

      else  

        {

        digitalWrite(4,HIGH); //si estaba apagado, lo enciende

        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 los podéis ver en la siguiente tabla:





Publicar un comentario

0Comentarios
Publicar un comentario (0)