Revista Informática

25.- Lámpara LED25.- LED Lamp

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.



style="display:inline-block;width:728px;height:15px"
data-ad-client="ca-pub-3868159888315364"
data-ad-slot="7639712738">

Lets go with an easy, as we are very used to working with LEDs, i took the idea of a tutorial I saw on < / a > and I wanted to do something similar with what I had and with a simpler code.
The effect we get is a 3 color lamp with a lighting sequence .

We need:

1 Plate Arduino Uno
1 Breadboard
1 Red LED
1 Green LED
1 Blue LED
1 Resistance of 1kΩ
Cables for connections

Actually the colors can be any , in fact I ‘ve used yellow because green LEDs that I have give very little light .
The first thing we do is attach the GND Pin with the breadboard and connect the resistance to the breadboard GND lane, now we put 3 LEDs in parallel and connect them to digital pins you want provided they are always PWM pins as we will play with the value of light intensity ( in my case 9,10 and 11) , it should be something like this :

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;
}

First in the global variables , we declare the variables that we use , we have several counters , the most important is j which is responsible for the different states of the LEDs, and then, we have the variables r , g and b (red , green, blue ), which are responsible for storing the value of light intensity of each LED .
In void setup () we configure each pin as output and in void loop () we see in wich state is the variable responsible for marking the states of the LEDs , depending on the state we will light on or we light off a certain LEDs.
In each cycle the value of j is updated , but as I consider 4 states , when i increase it 4 times i have to reset to its initial value to restart the sequence.
Finally we have 6 functions that are called from the switch case to light on( 3 functions ) or light off ( 3 functions ) the various LEDs and modify the value of r , g and b .



style="display:inline-block;width:728px;height:15px"
data-ad-client="ca-pub-3868159888315364"
data-ad-slot="7639712738">


Volver a la Portada de Logo Paperblog