Site icon AranaCorp

Modulação de cor com o LED RGB

O LED RGB permite a obtenção de um grande painel de cores. Ele é composto por três mini LEDs – vermelho, verde e azul (daí o nome RGB) – posicionados próximos o suficiente para que as suas luzes se misturem. Desse modo, ele é controlado como três LEDs independentes.

Um LED RGB pode ser utilizado, por exemplo, para criar uma atmosfera de iluminação em casa ou para dar informações sobre o estado de um sistema (Verde – tudo ok, Azul – processamento, Vermelho – erro).

Material

Diagrama de montagem do LED RGB

Os pinos de controle de cor (R,G,B) são ligados às saídas PWM da placa Arduino. Se usar outras saídas que não as PWM (as saídas digitais), as cores intermediárias não aparecerão e o LED irá saltar de uma cor para outra.

Geralmente, os valores de corrente suportados pelos LEDs não estão disponíveis. Não se esqueça de colocar uma resistência entre o cátodo e a terra do Arduino para proteger o LED.

Código para gestão de um LED RGB

Neste exemplo, passamos de uma cor para outra gradualmente. Para isso, variamos os valores R,G,B que enviamos para os pinos correspondentes.

Neste caso, é mais conveniente e legível utilizar uma função que atribui o valor PWM à saída correta para cada cor. Para isso, criamos a função lightRGB que toma 3 inteiros como entrada, – que são o comando pwm – , e escrevemos este valor para os pinos RGB.

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

Uma vez criada a função, ela pode ser utilizada no código principal (função loop) e controlar três saídas com uma linha de código. Aqui está o 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 um LED RGB pode parecer trivial, mas é um excelente exercício para começar a “brincar” com o Arduino. Um RGB pode não ser muito útil para a criar de efeitos de iluminação. Neste caso, é melhor optar por fitas de LED endereçáveis.

Aplicação

Fonte

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Exit mobile version