0

Como ligar LED RGB multicores?

Para um projeto mais simples, ou mais animado poderá necessitar de usar um LED RGB para poupar espaço, ou então colorir mais o seu projeto.
o nome de RGB vem de RED GREEN BLUE, sendo as cores primarias que podem depois compor qualquer cor final, se encontrarmos o correto equilibrio entre cada uma delas.
Este led RGB acaba por ser a uniao de um led vermelho, led verde e por fim um led azul:

 

Esquema de ligações:

O esquema de ligações é bastante simples, como ligar 3 leds ao Arduino.

Deveremos colocar 3 resistências de 150 Ohms (ou similar) conforme o exemplo para poupar a vida útil ao LED.

Agora vamos ao código fonte, desta vez vamos mostrar 3 exemplos diferentes para utilizar este componente.

 

Efeito fading

int red = 9; //this sets the red led pin
int green = 10; //this sets the green led pin
int blue = 11; //this sets the blue led pin

int redNow;
int blueNow;
int greenNow;
int redNew;
int blueNew;
int greenNew;

void setup()
{ //this sets the output pins
 pinMode(red, OUTPUT);
 pinMode(green, OUTPUT);
 pinMode(blue, OUTPUT);
 redNow = random(255);
 blueNow = random(255);
 greenNow = random(255);
 redNew = redNow;
 blueNew = blueNow;
 greenNew = greenNow;
}

#define fade(x,y) if (x>y) x--; else if (x<y) x++;

void loop()
{
 analogWrite(blue, blueNow);
 analogWrite(red, redNow);
 analogWrite(green, greenNow);
 redNew = random(255);
 blueNew = random(255);
 greenNew = random(255);
// fade to new colors
 while ((redNow != redNew) ||
  (blueNow != blueNew) ||
  (greenNow != greenNew))
 {
  fade(redNow,redNew)
  fade(blueNow,blueNew)
  fade(greenNow,greenNew)
  analogWrite(blue, blueNow);
  analogWrite(red, redNow);
  analogWrite(green, greenNow);
  delay(20);
 }
}

Efeito Multicor

int ledcolor = 0;
int a = 1000; //this sets how long the stays one color for
int red = 9; //this sets the red led pin
int green = 10; //this sets the green led pin
int blue = 11; //this sets the blue led pin

void setup() { //this sets the output pins

pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
}

void loop() {
int ledcolor = random(7); //this randomly selects a number between 0 and 6

switch (ledcolor) {
case 0: //if ledcolor equals 0 then the led will turn red
       analogWrite(red, 51);
       delay(a);
       analogWrite(red, 255);
       break;
case 1: //if ledcolor equals 1 then the led will turn green
       digitalWrite(green, LOW);
       delay(a);
       digitalWrite(green, HIGH);
       break;
case 2: //if ledcolor equals 2 then the led will turn blue
       digitalWrite(blue, LOW);
       delay(a);
       digitalWrite(blue, HIGH);
       break;
case 3: //if ledcolor equals 3 then the led will turn yellow
       analogWrite(red, 95);
       digitalWrite(green, LOW);
       delay(a);
       analogWrite(red, 255);
       digitalWrite(green, HIGH);
       break;
case 4: //if ledcolor equals 4 then the led will turn cyan
       analogWrite(red, 168);
       digitalWrite(blue, LOW);
       delay(a);
       analogWrite(red, 255);
       digitalWrite(blue, HIGH);
       break;
case 5: //if ledcolor equals 5 then the led will turn magenta
       digitalWrite(green, LOW);
       digitalWrite(blue, LOW);
       delay(a);
       digitalWrite(green, HIGH);
       digitalWrite(blue, HIGH);
       break;
case 6: //if ledcolor equals 6 then the led will turn white
       analogWrite(red, 155);
       digitalWrite(green, LOW);
       digitalWrite(blue, LOW);
       delay(a);
       analogWrite(red, 255);
       digitalWrite(green, HIGH);
       digitalWrite(blue, HIGH);
       break;
  }

}

Efeito aleatório

int a = 1000; //this sets how long the LED stays one color for
int red = 9; //this sets the red led pin
int green = 10; //this sets the green led pin
int blue = 11; //this sets the blue led pin

void setup()
{ //this sets the output pins
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);
}

void loop()
{
  analogWrite(blue, random(255));
  analogWrite(red, random(255));
  analogWrite(green, random(255));
  delay(a);
}

Poderão ainda ligar e desligar cada um deles individualmente da mesma forma como um LED simples, implementando código como este:

 

  digitalWrite(ledAzul,HIGH);
  digitalWrite(ledVerde,LOW);
  digitalWrite(ledVermelho,HIGH);

 

Já possuem aqui algumas dicas para fazer algo engraçado, testem isto em casa vão ver que irão surgir ideias onde implementar este tutorial.

 

—————
Todos os produtos utilizados neste artigo podem ser encontrados na Loja de Eletrónica e Robótica – ElectroFun.

Gostaram deste artigo ? Deixem o vosso comentário no formulário a baixo.

Não se esqueçam de fazer like na nossa Página no Facebook.

Podem ainda colocar as vossas dúvidas no nosso Forum da Comunidade Arduino em Portugal ou no nosso Grupo no Facebook Arduino Portugal – Qual o teu projeto?

Comments

Comentários

ArduinoPortugal.pt

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

To use BrandCaptcha you must get an API Key