miércoles, 8 de enero de 2020

Sketch de un foquito led RGB en la placa arduino


Este ejemplo nos permite aplicar el uso del foquito led RGB. Este diodo tiene integrado a 3 foquitos led de color Rojo, Verde y Azul. Podemos combinar estos colores primarios para visualizar los que falta.
Por ejemplo al ejecutar el sketch podemos apreciar como como se combinan los colores primarios para apreciar los siguientes colores: rojo, verde, azul, amarillo, cyan, morado y blanco.
Luego durante unos 7.67 segundos se visualizará un matiz de colores que inicia en el rojo y termina en el mismo rojo. Les recomiendo ver el video.
Materiales usados:
  • 01 Placa arduino uno
  • 01 led RGB
  • 03 resistores de 330 ohmios
  • cables para conectar.



const int ROJO_PIN = 9;
const int VERDE_PIN = 10;
const int AZUL_PIN = 11;
void setup()
{
pinMode(ROJO_PIN, OUTPUT);
pinMode(VERDE_PIN, OUTPUT);
pinMode(AZUL_PIN, OUTPUT);
}
void loop()
{
unicosColores();
maticesColores();
}
void unicosColores()
{
// Apaga todos los leds:
digitalWrite(ROJO_PIN, LOW);
digitalWrite(VERDE_PIN, LOW);
digitalWrite(AZUL_PIN, LOW);
delay(1000);
// Rojo:
digitalWrite(ROJO_PIN, HIGH);
digitalWrite(VERDE_PIN, LOW);
digitalWrite(AZUL_PIN, LOW);
delay(1000);
// verde:
digitalWrite(ROJO_PIN, LOW);
digitalWrite(VERDE_PIN, HIGH);
digitalWrite(AZUL_PIN, LOW);
delay(1000);
// azul:
digitalWrite(ROJO_PIN, LOW);
digitalWrite(VERDE_PIN, LOW);
digitalWrite(AZUL_PIN, HIGH);
delay(1000);
// amarillo:
digitalWrite(ROJO_PIN, HIGH);
digitalWrite(VERDE_PIN, HIGH);
digitalWrite(AZUL_PIN, LOW);
delay(1000);
// Cyan:
digitalWrite(ROJO_PIN, LOW);
digitalWrite(VERDE_PIN, HIGH);
digitalWrite(AZUL_PIN, HIGH);
delay(1000);
// morado:
digitalWrite(ROJO_PIN, HIGH);
digitalWrite(VERDE_PIN, LOW);
digitalWrite(AZUL_PIN, HIGH);
delay(1000);
// blanco:
digitalWrite(ROJO_PIN, HIGH);
digitalWrite(VERDE_PIN, HIGH);
digitalWrite(AZUL_PIN, HIGH);
delay(1000);
// Apaga todos los leds:
digitalWrite(ROJO_PIN, LOW);
digitalWrite(VERDE_PIN, LOW);
digitalWrite(AZUL_PIN, LOW);
delay(1000);
}
void maticesColores()
{
int x;
for (x = 0; x < 768; x++)
{
verRGB(x);
delay(10);
}
}
void verRGB(int color)
{
int intensidadRojo;
int intensidadVerde;
int intensidadAzul;
if (color <= 255)
{
intensidadRojo = 255 – color;
intensidadVerde = color;
intensidadAzul = 0;
}
else if (color <= 511)
{
intensidadRojo = 0;
intensidadVerde = 255 – (color – 256);
intensidadAzul = (color – 256);
}
else
{
intensidadRojo = (color – 512);
intensidadVerde = 0;
intensidadAzul = 255 – (color – 512);
}
analogWrite(ROJO_PIN, intensidadRojo);
analogWrite(AZUL_PIN, intensidadAzul);
analogWrite(VERDE_PIN, intensidadVerde);
}

No hay comentarios:

Publicar un comentario