Controle de luz de LED RGB
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.
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.
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().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | // 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.