O projeto destina-se a iniciantes no mundo da eletrônica embarcada. Serão utilizadas as saídas PWM do Arduino para variar aleatoriamente a luminosidade de LEDs, criando um efeito de cintilação característico das chamas. As aplicações ficam a cargo da imaginação de cada um. Que tal criar um ambiente romântico com velas artificiais? Ou então uma fogueira falsa para enfeitar um cenário de festa junina?
Montando o Projeto
Conecte os LEDs amarelo, vermelho e amarelo respectivamente, com os seus resistores limitadores de corrente, nos pinos digitais 9, 10 e 11 do Arduino como no esquemático abaixo:
A montagem prática do protótipo é bem simples e pode ser vista na imagem abaixo:
Componentes Utilizados:
- Arduino UNO;
- 3x Resistores de 220 ohm;
- 1x LED difuso vermelho 5mm;
- 2x LEDs difusos amarelos 5mm;
- Protoboard 400 pontos;
- Jumpers.
Desenvolvendo o código
Abra a IDE do Arduino e digite o código abaixo:
// Efeito de Chamas #define ledPin1 9 #define ledPin2 10 #define ledPin3 11 void setup() { pinMode(ledPin1,OUTPUT); pinMode(ledPin2,OUTPUT); pinMode(ledPin3,OUTPUT); } void loop() { analogWrite(ledPin1,random(120)+136); analogWrite(ledPin2,random(120)+136); analogWrite(ledPin3,random(120)+136); delay(random(100)); }
Pressione o botão “Verificar” no topo do IDE para garantir que não haja erros no seu código. Não havendo erros, clique no botão “Carregar“ para fazer o upload do seu código para o seu Arduino. Pronto! Você já deve ser capaz de visualizar o circuito funcionado.
Mergulhando no projeto
Software
Primeiramente, declararemos os valores dos pinos digitais que iremos conectar os LEDs. Para isso, utilizaremos as diretivas “Define”. Neste projeto, utilizaremos os pinos 9 (LED amarelo), 10 (LED vermelho) e 11(LED amarelo).
#define ledPin1 9 #define ledPin2 10 #define ledPin3 11
A seguir, definimos os pinos digitais como saídas.
void setup() { pinMode(ledPin1,OUTPUT); pinMode(ledPin2,OUTPUT); pinMode(ledPin3,OUTPUT); }
Depois disso, o loop principal envia um valor aleatório entre 0 e 120 e adicionamos 135 a esse valor para obtermos o brilho do LED nos pinos PWM 9, 10 e 11. Utilizamos esse valor pelo fato do brilho máximo ocorrer em 255.
void loop() { analogWrite(ledPin1,random(120)+136); analogWrite(ledPin2,random(120)+136); analogWrite(ledPin3,random(120)+136);
Por fim, utilizamos um delay com valor aleatório entre 0 e 100ms.
delay(random(100));
Experimente variar os limites utilizados para os valores aleatórios para adequar da melhor maneira o seu projeto. Obtive resultados muito interessantes, fazendo com que 1 LED amarelo não alcançasse o seu valor máximo de luminosidade (255).
Hardware
Lembre-se que o LED possui polaridade e que o terminal mais comprido tem polaridade positiva e que o lado do chanfro tem polaridade negativa.Os resistores limitadores de corrente devem ser utilizados para garantir a corrente máxima suportada pelo LED não seja ultrapassada. Utilize a especificação do componente para entender os valores utilizados para os resistores.
O Projeto apresenta melhores resultados se a iluminação dos LEDs for difundida ou refletida em outras superfícies.
Conclusão
Um projeto básico e com componentes de fácil obtenção no mercado. Porém, o mesmo introduz conceitos importantes para diversos projetos, como a utilização de valores aleatórios e o PWM.
Fique a vontade para sugestões e questionamentos. Abraços!
Referências
McRoberts, Michael Arduino básico / Michael McRoberts; [tradução Rafael Zanolli]. — São Paulo : Novatec Editora, 2011.
Ótimo projeto para iniciantes.
Muito obrigado por divulgar isso gratuitamente.
Olá Milton, que bom que gostou do nosso projeto! Acesse o nosso GitHub e veja vários outros projetos: https://github.com/omegacomponenteseletronicos
Qualquer dúvida é só falar! Abraço.