Projeto 7 – Troque a cor das luzes

No projeto anterior, fizemos um LED RGB piscar sem parar com cores diferentes. Neste projeto você que irá comandar como o LED irá variar a sua cor. Para dar os comandos para a placa Arduino, iremos utilizar um potenciômetro.

Potenciômetro

No Projeto 1, falamos um pouco sobre o que é um resistor e nesse projeto iremos utilizar um resistor variável chamado potenciômetro. Diferente de um botão que é digital e tem um valor de 0 ou 1, o potenciômetro varia o seu valor conforme a rotação de sua haste e, por isso, deve ser conectado em uma porta analógica do Arduino.

O potenciômetro é bastante usado em controles de volume, intensidade de lâmpadas e etc. Veja na figura abaixo o seu funcionamento interno.

O projeto 7 consiste em controlar as cores do LED RGB ao rotacionar o potenciômetro.

Material necessário

1x LED RGB 5mm
1x Potenciômetro 10K ohm
3x Resistor 220 ohm
1x Protoboard
9x Jumper Macho-macho
1x Cabo USB
1x Placa Uno

Montagem do circuito

A montagem do LED RGB é a mesma do projeto anterior. Adicione o potenciômetro ligando um pino em 5 V, outro em GND e seu pino central em uma porta analógica do Arduino. Não se preocupe com o lado, assim como um resistor comum, o potenciômetro não tem lado positivo ou negativo, ou seja, tanto faz o lado que é conectado ao circuito. O único cuidado que se deve ter ao colocar o potenciômetro na protoboard é o encaixe, que tem que apertar um pouco.

Programa Projeto 7 – Troque a cor das luzes

Para ler o valor de um potenciômetro ou qualquer componente que tenha um sinal variável fazemos uso da função analogRead() que transforma a rotação do potenciômetro em valores de 0 a 1023.

O programa consiste em alternar as cores do LED RGB conforme o potenciômetro é rotacionado, lendo o valor do mesmo através da função analogRead().

//   Projeto 7 - Troque a cor das luzes


int led_R = 7; // pino LED Vermelho (R)
int led_G = 6; // pino LED Verde (G)
int led_B = 5; // Pino LED Azul (B)
int pot = A0;

int valorPot;

void setup()
{
  pinMode(led_R, OUTPUT);
  pinMode(led_G, OUTPUT);
  pinMode(led_B, OUTPUT);
  apagaLed();
}

void loop()
{
  valorPot = analogRead(pot); // lê o valor do potenciômetro (de 0 a 1023)
  if(valorPot >= 0 && valorPot <= 256) // menor que 256 apaga o LED
  {
    apagaLed();  
  }
  if(valorPot > 256 && valorPot <= 512) // entre 256 e 512, acende vermelho
  {
    acendeVermelho(); 
  }
  if(valorPot > 512 && valorPot <= 768) // entre 512 e 768, acende verde
  {
    acendeVerde();
  }
  if(valorPot > 768 && valorPot <= 1023) // entre 768 e 1023, acende azul
  {
    acendeAzul();
  }        
}

void acendeVermelho()
{
  digitalWrite(led_R, LOW);
  digitalWrite(led_G, HIGH);
  digitalWrite(led_B, HIGH);
}

void acendeVerde()
{
  digitalWrite(led_R, HIGH);
  digitalWrite(led_G, LOW);
  digitalWrite(led_B, HIGH);
}

void acendeAzul()
{
  digitalWrite(led_R, HIGH);
  digitalWrite(led_G, HIGH);
  digitalWrite(led_B, LOW);
}

void apagaLed()
{
  digitalWrite(led_R, HIGH);
  digitalWrite(led_G, HIGH);
  digitalWrite(led_B, HIGH);
}

Possíveis erros

Caso o projeto não funcione verifique alguns dos possíveis erros:

  • Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a conexão;
  • Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
  • Verifique se o terminal positivo do LED RGB está na posição correta, ligado ao 5 V do Arduino;
  • Verifique se os pinos do potenciômetro estão totalmente inseridos nos furos da protoboard;
  • Verifique se o código carregou na placa através da IDE Arduino.

Desafios

Veja abaixo alguns desafios que você pode tentar!

  • Faça uma mistura de cores rotacionando o potenciômetro;
  • Utilize os conceitos do projeto 3 sobre o controle do brilho do LED fazendo o controle da intensidade das cores através da rotação do potenciômetro.

Alguma dúvida, comentário ou algo que queira acrescentar? Entre no tópico do nosso fórum!