Semana 3 Led RGB - NestorPlasencia/hackspace-electronica GitHub Wiki
LED RGB
Imagina colocar un led rojo, un led verde y un led azul, en una misma cápsula, pues un led RGB es eso, 3 leds de los colores primarios en uno solo.
Los colores son el resultado de la proporción de brillo con que se enciende cada uno de tres leds, pudiendo así obtener toda una gama de colores. Como, morado, celeste y amarillo.
Recuerdas que un led tiene dos terminales cátodo y ánodo, si unimos los 3 cátodos que van conectados a tierra, de cada uno de los 3 leds en la cápsula, el resultado será un LED de cátodo común. Con esto se reduce el número de terminales de 6 a solamente 4.
Continuando con el proyecto anterior de Circuits.io
Sacamos el led monocromático y la conexión a Arduino.
En +Components
, adicionamos un LED RGB
Lo colocamos en el protoboard de tal forma Unimos el terminal del cátodo común a GND.
Copiamos el resistor de 220 ohm y los colocamos unidos a los terminales R, G y B del LED.
Ahora unimos el resistor del terminal R a pin 11, el resistor del terminal B al pin 9, y por último el resistor del terminal G al pin 10. Estos 3 terminales tienen la propiedad de funcionar como salida digital PWM.
En +Components
, adicionamos esta vez dos Potentiometer
, polarizamos sus terminales exteriores con 0V y 5V, y los terminales medios a las entradas analógicas A1 y A2
Recordemos que deseamos regular el brillo de cada uno de los 3 leds internos, para lograrlo la única diferencia con el ejercicio anterior es que ya no es solo es un led sino son 3. Por ello nos ayudaremos del uso de los arrays.
En la declaración de variables, convertimos las variables en arrays de tres elementos cada uno.
int led[3] = 11;
int pot[3] = 0;
int brillo[3] = 0;
Los valores para el array led son los pines a los cuales conectamos los pines del led RGB.
int led[3] = {11,10,9};
Los valores para el array pot son los pines analogicos a los cuales conectamos los potenciomentros.
int pot[3] = {0,1,2};
En el array brillo inicializamos los valores con el número 0.
int brillo[3] = {0,0,0};
Bucle FOR
El bucle for se usa para repetir un bloque de sentencias encerradas entre llaves un número determinado de veces. La declaración for tiene tres partes separadas por ';',
for (inicialización; condición; expresión){
Instrucciones;
}
- La inicialización de una variable local se produce una sola vez, esta variable será usada como un contador.
- La condición se testea cada vez que se termina la ejecución de las instrucciones dentro del bucle. Si la condición sigue cumpliéndose, las instrucciones del bucle se vuelven a ejecutar. Cuando la condición no se cumple, el bucle termina.
- En la expresión se modifica al contador inicializado, incrementando o disminuyendo su valor.
Para acceder a cada uno de los elementos del array usaremos un bucle for que realice un recorrido por los índices de 0 a 2.
for(int i=0;i<=2;i++){}
El bucle inicia con el índice 0, con la expresión i++ esta variable local incrementa su valor en 1 en cada ciclo de ejecución; es así que, cuando la variable i sea igual a 3 el bucle habrá terminado.
En el bloque de configuraciones incluimos la función pinMode
dentro de un bucle for, y agregamos al array led el índice del recorrido.
void setup () {
for(int i=0;i<=2;i++){
pinMode(led[i],OUTPUT);
}
}
Con esto habremos declarado todos los pines del array led como salidas digitales.
En void loop incluimos las dos sentencias utilizadas en el ejemplo anterior dentro de un bucle for idéntico al declarado en void setup.
Agregamos los índices a los arrays led, pot y brillo
for(int i=0;i<=2;i++){
brillo[i] = analogRead(pot[i])/4;
analogWrite(led[i],brillo[i]);
}
Ahora se modifica el brillo de cada led Rojo Verde y Azul, proporcional al porcentaje de cada uno de los potenciómetros.
En Code Editor
ejecutamos la simulación con Upload and Run
.
Si colocamos el primer potenciómetro el color resultante será rojo, agregamos el verde y tendremos amarillo, quitamos el rojo y quedara solo verde, aumentamos el azul y tendremos cyan, quitamos el verde y quedara solo azul, aumentamos el rojo y tendremos magenta. Y así una gran cantidad de combinaciones y colores.