Código escenas RGB

LHN
0

 Buenas tardes,

A continuación os presento el desarrollo de un proyecto de Arduino capaz de crear distintas escenas con un LED  RGB. Las escenas serán controladas mediante un control remoto de infrarrojos ( IR)

Podéis simularlo a continuación:



Antes un esquema de colorimetría RGB:














Después de ver este esquema realizaremos  el algoritmo mezclando los colores para crear 7 escenas: 

  • El botón 1 dará luz roja
  • El botón 2 dará luz verde
  • El botón 3 dará luz azul
  • El botón 4 dará luz roja + verde =amarillo
  • El botón 5 dará luz roja + azul = morado
  • El botón 6 dará luz verde + azul = cían
  • El botón 7 dará luz verde + azul + rojo = blanca

El botón 0 apagará las 3 luces.

El montaje y los elementos podéis verlo a continuación;












El código de programación es el siguente:

// C++ code for IR para controlar escenas en un LED domótico by LHN

#include <IRremote.h> //incluimos en el programa la librería para IRremote

int red=9; //Designamos el numero entero 9 para la palabra RED

int green=13; //Designamos el numero entero 13 para la palabra GREEN

int blue=10; //Designamos el numero entero 10 para la palabra BLUE


int RECV_PIN = 11; //Designamos el numero entero 11 para la señal del IR


IRrecv irrecv(RECV_PIN); //Asignamos la palabra IRrecv al pin que lleva la señal IR


decode_results results; //Asignamos la palabra decode_result al código que llega en la señal IR


void setup() //definimos los pines de entrada y salida (el montaje)

{

  pinMode(red, OUTPUT); // Asignamos el pin del LED rojo como salida

  pinMode(green, OUTPUT); // Asignamos el pin del LED verde como salida

  pinMode(blue, OUTPUT); // Asignamos el pin del LED azul como salida

  

  pinMode(RECV_PIN, INPUT); // Asignamos el pin del IR como entrada

  

  Serial.begin(9600); //Comenzamos el monitor en serie a 9600 baudios

  Serial.println("Enable IRin"); //Comienza la escritura de los datos del IR en el monitor en serie

  irrecv.enableIRIn(); //Comando para habilitar funcionamineto del sensor IR

 Serial.println("Enabled IRIin"); //Escritura ya comenzada del IR del monitor

}


void loop()//comenzamos el bucle de programación

{

  if (irrecv.decode(&results))

    {

    Serial.println(results.value, HEX);

    irrecv.resume();

   

  if (results.value==0xFD30CF) //Si recibimos el valor 0 

  {

    digitalWrite(red, LOW); //rojo sin activar

  digitalWrite(green, LOW);//verde sin activar

  digitalWrite(blue, LOW);//azul sin activar

}

  

  else if (results.value==0xFD08F7) //Si recibimos el valor 1 

  {

    digitalWrite(red, HIGH); //rojo activo

  digitalWrite(green, LOW);//verde sin activar

  digitalWrite(blue, LOW);//azul sin activar

}

  else if (results.value==0xFD8877) //Si recibimos el valor 2 

  {

    digitalWrite(red, LOW); //rojo sin activar

  digitalWrite(green, HIGH);//verde activo

  digitalWrite(blue, LOW);//azul sin activar

}

  else if (results.value==0xFD48B7) //Si recibimos el valor 3 

  {

    digitalWrite(red, LOW); //rojo sin activar

  digitalWrite(green, LOW);//verde sin activar

  digitalWrite(blue, HIGH);//azul activo

}

   else if (results.value==0xFD28D7) //Si recibimos el valor 4 

  {

    digitalWrite(red, HIGH); //rojo activo

  digitalWrite(green, HIGH);//verde activo

  digitalWrite(blue, LOW);//azul sin activar

}  

  else if (results.value==0xFDA857) //Si recibimos el valor 5 

  {

    digitalWrite(red, HIGH); //rojo activo

  digitalWrite(green, LOW);//verde sin activar

  digitalWrite(blue, HIGH);//azul activo

}  

  else if (results.value==0xFD6897) //Si recibimos el valor 6 

  {

    digitalWrite(red, LOW); //rojo sin activar

  digitalWrite(green, HIGH);//verde activo

  digitalWrite(blue, HIGH);//azul activo

}

  else if (results.value==0xFD18E7) //Si recibimos el valor 7 

  {

    digitalWrite(red, HIGH); //rojo activo

  digitalWrite(green, HIGH);//verde activo

  digitalWrite(blue, HIGH);//azul activo


}


  }


delay(100); //retraso de 100 msg antes de volver recomenzar el bucle


}



Publicar un comentario

0Comentarios
Publicar un comentario (0)