Criando efeito de chamas com Arduino

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:

 

 
 
 
 
 
 

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.

Alex da Rocha Mattos
Sobre Alex da Rocha Mattos 4 artigos
Engenheiro de Telecomunicações – Universidade do Estado do Rio de Janeiro UERJ Instagram: https://www.instagram.com/curtoecircuito/ Email:curtoeckt@gmail.com

1 Comentário

Deixe uma resposta

O seu endereço de email não será publicado.


*