Fig. 1: Protótipo de controlador LED RGB baseado em Arduino
RGB-LED é amplamente utilizado para gerar luzes de cores diferentes em decoração de interiores, eletrodomésticos, automóveis, etc.
Este artigo trata do Arduino para obter várias cores com LED RGB e mostrar a transição de uma cor para outra.
A saída PWM de um Arduino, é uma ferramenta importante para obter a variedade de cores, seja Rosa, Ciano, Magenta, Laranja, Roxo, etc.
Um LED RGB é um LED de quatro terminais com um pino comum (digamos, cátodo) e três outros pinos (ânodo) para LEDs Vermelho, Verde e Azul.
Fig. 2: Diagrama de pinos e circuito interno do LED RGB
O primeiro passo, obter um LED RGB e testá-lo. Para isso precisamos conectar a alimentação de 5V ao LED simples através de resistores (330ohms).
Agora que temos as cores VERMELHO, VERDE e AZUL individualmente, é hora de misturar essas três cores básicas.
Obtenha um Arduino (qualquer placa básica com pelo menos 3 saídas PWM). Eu usei um Atmega8.
Conecte seu Arduino, faça as conexões adequadas, conforme mostrado no diagrama de circuito abaixo.
Prosseguindo, agora é hora de controlar o LED. Faremos isso através do Arduino-IDE.
Vá para Arduino-IDE, selecione o tipo de placa, no menu ‘Ferramentas’. Selecione a porta COM, no menu 'Porta serial'.
Depois disso, copie o esboço abaixo e faça upload dele.
Trabalhando:
Agora, vamos entender como isso funciona. O 'escrita analógica 'função do Arduino torna isso possível.
Cada pino de saída digital do Arduino pode fornecer uma tensão de 0 ou 5V, mas o pino PWM possui um recurso complementar. Pode fornecer vários valores de tensão entre 0V-5V.
Digamos que escrevemos,
analogWrite(led_vermelho,50); //red_led refere-se ao pino 9 (pino PWM)
Isso fornecerá uma tensão = (5/255)*50 V = 0,98 V no pino 9.
Se escrevermos:
analogWrite(led_azul,100); //blue_led refere-se ao pino 10 (pino PWM)
Isso fornecerá uma tensão = (5/255) * 100 V = 1,96 V no pino 10
Neste experimento, o que fazemos é criar um loop for para fornecer valores entre 0-255 em cada pino do LED com algum atraso (em milissegundos).
para(int i=0;i<=255;i+=3)
{
analogWrite(redPin,255-i); // escreve (255-i) no redPin
analogWrite(pinoverde, i); // escreve I no greenPin
atraso(100); //espera por 100uS
}
Figura 3: Imagem mostrando LED RGB sendo controlado pelo Arduino
Código fonte do projeto
###
int redPin = 10;
int greenPin = 11;
int bluePin = 9;
void colourTransition ;
void setup
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop
{
colourTransition ;
}
void colourTransition
{
for(int i=0;i<=255;i+=3)
{
analogWrite(redPin,255-i);
analogWrite(greenPin, i);
delay(100);
}
for(int i=0;i<=255;i+=3)
{
analogWrite(greenPin,255-i);
analogWrite(bluePin, i);
delay(100);
}
for(int i=0;i<=255;i+=3)
{
analogWrite(bluePin,255-i);
analogWrite(redPin, i);
delay(100);
}
}
###
Diagramas de circuito
Controlador de LED RGB baseado em Arduino, diagrama de circuito |