Revista Informática

25.- Lámpara LED

Publicado el 15 diciembre 2013 por Practicandoarduino @PracticaArduino

Vamos con un tutorial facilito, ya que estamos muy acostumbrados a trabajar con LEDs, la idea la saque de un tutorial que vi en y quise hacer algo parecido con lo que yo tenía y con un código más sencillo.
El efecto que conseguimos es una lámpara de 3 colores que sigue una secuencia de iluminación.

Que necesitamos:

1 Placa Arduino Uno
1 Protoboard
1 LEDs rojo
1 LEDs verde
1 LEDs azule
1 Resistencia de 1kΩ
Cables para realizar las conexiones

En realidad los colores pueden ser cualquieras, sobre gustos nada escrito, yo de hecho he usado LEDs amarillos porque los verdes que tengo iluminan muy poco.
Lo primero que hacemos es unir el Pin GND con la protoboard y conectar al GND de la protoboard la resistencia, ahora colocamos en paralelo los 3 LEDs y los conectamos a los pines digitales que queramos siempre y cuando sean pines PWM ya que vamos a jugar con el valor de intensidad lúminica(en mi caso 9,10 y 11), debería quedar algo parecido a esto:

lamparadeleds_bb

Código fuente:

 
int j=9;
int i=0;
int k=0;
int r,g,b;
int miRetardo=10;
void setup(){ 
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
}
 
void loop(){
  switch (j){
   case 9:
    enciendeAzul(miRetardo);
    if (r>0)
      apagaRojo(miRetardo);
    if (g>0)
      apagaVerde(miRetardo);
    break;
   case 10:
     enciendeVerde(miRetardo);
     if (b>0)
       apagaAzul(miRetardo);
     if (r>0)
       apagaRojo(miRetardo);
     break;
    case 11:
      enciendeRojo(miRetardo);
      if (b>0)
        apagaAzul(miRetardo);
      if (g>0)
        apagaVerde(miRetardo);
      break;
    case 12:
      apagaRojo(miRetardo);
      for (k=0;k<3;k++){
        enciendeAzul(miRetardo/10);
        if (r>0)
          apagaRojo(miRetardo/10);
        enciendeVerde(miRetardo/10);
        apagaAzul(miRetardo/10);
        enciendeRojo(miRetardo/10);
        apagaVerde(miRetardo/10);
      }
      break;
  }
  j++;
  if (j>12)
    j=9;
}
 
void enciendeAzul(int retardo){
 for (i=0;i<256;i++){
   analogWrite (9,i);
   delay(retardo);
 }
 b=255;
}
void enciendeVerde(int retardo){
 for (i=0;i<256;i++){
   analogWrite (10,i);
   delay(retardo);
 }
 g=255;
}
void enciendeRojo(int retardo){
 for (i=0;i<256;i++){
   analogWrite (11,i);
   delay(retardo);
 }
 r=255;
}
void apagaAzul(int retardo){
 for (i=255;i>=0;i--){
   analogWrite (9,i);
   delay(retardo);
 }
 b=0;
}
void apagaVerde(int retardo){
 for (i=255;i>=0;i--){
   analogWrite (10,i);
   delay(retardo);
 }
 g=0;
}
void apagaRojo(int retardo){
 for (i=255;i>=0;i--){
   analogWrite (11,i);
   delay(retardo);
 }
 r=0;
}

Primero en la zona de variables globales, declaramos las variables que vamos a usar, tenemos varios contadores, el más importante es j que se encarga de los diferentes estados de los LEDs, y luego tenemos las variables r, g y b (red, green, blue), que se encargan de almacenar el valor de intensidad lumínica que tiene cada LED.
En el void setup() configuramos cada pin como salida y en el void loop() vemos en que estado esta la variable encargada de marcar los estados de los leds, dependiendo de cada estado encenderemos y apagaremos unos determinados LEDs.
En cada ciclo se actualiza el valor de j, pero como yo considero 4 estados, al aumentar 4 veces la reseteo a su valor inicial para volver a empezar la secuencia.
Por último tenemos 6 funciones que son llamadas desde el switch case para encender (3 funciones) o apagar (3 funciones) los distintos LEDs y para modificar el valor de r, g y b.


Volver a la Portada de Logo Paperblog