El contenido de esta página es complemento de un video. EL cual pueden encontrar al final de la misma.
La idea es controlar la intensidad, encendido y apagado de tiras LED RGB para utilizarlas como luces para ambientar algún lugar determinado. Para ello utilizaremos transistores como mediadores entre el Arduino y la tira LED. Esto se debe a que el Arduino no puede manjar el voltaje y la corriente que las tiras LED necesitan.
A continuación dejo una tirada de imágenes del armado de las lámparas y conexión de las tiras LED visto en el video, no ahondaremos en eso.
Una vez que tenemos las lámparas terminadas y comprobamos que funcionan podemos pasar a armar la parte que corresponde a los transistores y hacen de intermediario entre el Arduino y las tiras LED. Un dato IMPORTANTE es el siguiente: el Arduino funciona a 5 voltios y los transistores y las tiras LED funcionan a 12 voltios por lo que vamos a necesitar dos tipos de fuentes, una para cada uno.
En la imagen anterior vemos la conexión básica la cual ya es suficiente para realizar trabajos de iluminación interesantes. Veamos el código, un repaso general no mucho más que eso:
Código básico: lo llamare colores_fijos_nofade
int ledPin1 = 9;
int ledPin2 = 10;
int ledPin3 = 11;
void setup() {
}
void loop() {
analogWrite(ledPin1, 45);
delay(25);
analogWrite(ledPin2, 100);
delay(25);
analogWrite(ledPin3, 5);
delay(25);
}
Las variables ledPin1, ledPin2, ledPin3 se les asignan los pines físicos del Arduino, esos que van a los transistores, ustedes luego pueden agregar más.
Ahora dentro del Loop tenemos, y solo tomo una parte, ya que como verán se repiten con los cambios correspondientes.
analogWrite(ledPin1, 45);
En ROJO: establecemos que vamos a dar una orden de salida sobre el "PIN NARANJA"
En NARANJA: establecemos sobre el PIN que vamos a trabajar, en este caso ledPin1 , variable a la le habíamos asignado el PIN físico 9.
En VERDE: pasamos un valor entre 0 y 255, cero corresponde a LED apagado / sin brillo y 255 corresponde al máximo brillo.
De esta manera cambiando los valores que se pasan a la salida podemos activar o desactivar un color o también activarlos con una intensidad deseada.
El "delay(25);" no tendría importancia, solo lo colocamos para dar comprensión para lo que sigue.
Con lo visto anteriormente podemos realizar este efecto, utilizando bucles "for" vamos a ir incrementando la intensidad asta 255 y la vamos a disminuir de 255 a 0. Aplicamos esto a cada salida por intervalos, es decir, a cada color de manera independiente, no en simultaneo:
int ledPin1 = 9;
int ledPin2 = 10;
int ledPin3 = 11;
void setup() {
}
void loop() {
// fade in desde el minimo al máximo en un incremento de 5 puntos:
for (int fadeValue1 = 0 ; fadeValue1 <= 255; fadeValue1 += 5) {
analogWrite(ledPin1, fadeValue1);
delay(50);
}
// fade out desde el máximo al mínimo decreciendo de 5 puntos:
for (int fadeValue1 = 255 ; fadeValue1 >= 0; fadeValue1 -= 5) {
analogWrite(ledPin1, fadeValue1);
delay(50);
}
// fade in desde el minimo al máximo en un incremento de 5 puntos:
for (int fadeValue2 = 0 ; fadeValue2 <= 255; fadeValue2 += 5) {
analogWrite(ledPin2, fadeValue2);
delay(50);
}
// fade out desde el máximo al mínimo decreciendo de 5 puntos:
for (int fadeValue2 = 255 ; fadeValue2 >= 0; fadeValue2 -= 5) {
analogWrite(ledPin2, fadeValue2);
delay(50);
}
// fade in desde el minimo al máximo en un incremento de 5 puntos:
for (int fadeValue3 = 0 ; fadeValue3 <= 255; fadeValue3 += 5) {
analogWrite(ledPin3, fadeValue3);
delay(50);
}
// fade out desde el máximo al mínimo decreciendo de 5 puntos:
for (int fadeValue3 = 255 ; fadeValue3 >= 0; fadeValue3 -= 5) {
analogWrite(ledPin3, fadeValue3);
delay(50);
}
}
En este caso el " delay(50);" nos va a dar la velocidad de transición. La pueden ajustar a gusto.