fbpixel
Etiquetas: , ,

El LED RGB proporciona una amplia gama de colores. Se compone de tres mini LED, rojo, verde y azul (de ahí su nombre RGB); lo suficientemente cerca para que sus luces se mezclen. Por lo tanto, se pilota de la misma manera que tres LED independientes.

Por ejemplo, se puede usar para crear un ambiente de luz en el hogar o para proporcionar información al usuario sobre el estado de un sistema (Verde: todo está bien, Azul: procesamiento, Rojo: hay un error).



Equipo

  • Arduino x1
  • M/M cables x3
  • Breadboard x1
  • Resistencia 220 Ohm x1
  • RGB LED x1


Diagrama LED RGB

Los pines de control de color (R, G, B) están conectados a las salidas PWM de la placa Arduino. Si utiliza otras salidas que no sean las salidas PWM (las salidas digitales), los colores transitorios no aparecerán y el LED saltará de un color a otro.

arduino-led-rgb-schematics Modula el color con el LED RGB

En general, los valores de corriente admitidos por los LED no están disponibles. No olvide colocar una resistencia entre el cátodo y la tierra del Arduino para proteger el LED y la salida del Arduino.



Código de gestión para un LED RGB

En este ejemplo, nos movemos de un color a otro gradualmente. Para esto, variamos los valores R, G, B que enviamos a los pines correspondientes.

En este caso, es más práctico y legible usar una función que asigne el valor PWM a la salida correcta para cada color. Para hacerlo, creamos la función lightRGB que toma 3 enteros como entradas, que son el comando pwm, y escribimos este valor en los pines RGB.

void lightRGB(int r, int g, int b){
  analogWrite(RED, r);
  analogWrite(GREEN, g);
  analogWrite(BLUE, b);
}

Una vez creada la función, se puede usar en el código principal (en función de bucle) y controlar tres salidas con una línea de código. Aquí está el código completo.

// Pins
#define BLUE 3
#define GREEN 5
#define RED 6

#define delayTime 10 // fading time

int MAX_LUM = 255;
int redVal,greenVal,blueVal;

void setup()
{
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
  digitalWrite(RED, HIGH);
  digitalWrite(GREEN, LOW);
  digitalWrite(BLUE, LOW);
}

void loop()
{    
  redVal = MAX_LUM; // choose a Val between 1 and 255 to change the color.
  greenVal = 0;
  blueVal = 0;
  
  for(int i = 0; i < MAX_LUM; i += 1) // fades out red bring green full when i=255
  {
    redVal -= 1;
    greenVal += 1;
    lightRGB(redVal, greenVal, blueVal);
    delay(delayTime);
  }
  
  redVal = 0;
  greenVal = MAX_LUM;
  blueVal = 0;
  
  for(int i = 0; i < MAX_LUM; i += 1) // fades out green bring blue full when i=255
  {
    greenVal -= 1;
    blueVal += 1;
    lightRGB(redVal, greenVal, blueVal);
    delay(delayTime);
  }
  
  redVal = 0;
  greenVal = 0;
  blueVal = MAX_LUM;
  
  for(int i = 0; i < MAX_LUM; i += 1) // fades out blue bring red full when i=255
  {
    // The following code has been rearranged to match the other two similar sections
    blueVal -= 1;
    redVal += 1;
    lightRGB(redVal, greenVal, blueVal);
    delay(delayTime);
  }
}

void lightRGB(int r, int g, int b){
  analogWrite(RED, r);
  analogWrite(GREEN, g);
  analogWrite(BLUE, b);
}

Controlar un LED RGB parece trivial, pero es un gran ejercicio al comenzar a jugar con Arduino. Un RGB puede ser de poca utilidad para crear efectos de luz. En este caso, es posible que deba utilizar adressable LED strips.



Solicitud

  • Cambia el color del LED de acuerdo con la temperatura ambiente
  • Cree una lámpara que cambie de color controlado por control remoto IR


Fuente

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código