Objetivo

Criar um efeito aleatório de cintilação, utilizando novamente os recursos do PWM para imitar uma chama cintilante.

Observação: Este efeito poderá ser utilizado em modelos de ferromodelismo, imitando que uma casa esteja pegando fogo. Também pode se utilizar este efeito como recurso de uma lareira, efeitos especiais para filmes, teatro, maquetes e ferromodelismo.

Aplicação

Para fins didáticos, estudo do PWM (Pulse Width Modulation), valores RGB (Red, Green and Blue) e aplicações gerais com efeitos por LEDs.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v No mínimo utilizar protoboard com 830 pontos
Led Difuso 5mm Led 5mm 3

1 LEDs difuso vermelho

2 LEDs difuso amaralelo

Você poderá utilizar também LEDs de alto brilho 5mm nas mesma cores.

Resistor Resistor limitador de corrente 3

3 Resistor de 200 mΩ

Se precisar usar outros valores, calcule o resistor apropriado para o led utilizado - Calcular Resistor.

Arduino UNO R3 Arduino UNO 1  

Obs.: Utilizar também cabos de ligação e uma folha de papel A4 para criar um difusor.

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito. Veja a simulação no link --> Projeto 22 - simulação online.

Atenção:

1) Lembre-se que o LED tem polaridade: O terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa.

2) Determinamos o valor do resistor através da tabela prática: Tabela prática de utilização de leds 3mm e 5mm. Entretanto, o mais correto é sempre verificar o datasheet do fabricante do LED para você ter os exatos valores de tensão e corrente do mesmo - leia Como calcular o resistor adequado para o led.

3) Veja na imagem abaixo que a montagem do circuito foi realizada em um protoboard com linhas de alimentação separadas. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas - sabia mais em protoboard


 

Código do Projeto (sketch)

Digite o código abaixo no ambiente de desenvolvimento do Arduino. Faça a verificação e o upload.

/*******************************************************************************
*
*    Projeto 22 – Efeito de fogo com LEDs
*            http://squids.com.br/arduino
*
*******************************************************************************/
 
int ledPino1 = 9;
int ledPino2 = 10;
int ledPino3 = 11;

void setup() {
pinMode(ledPino1, OUTPUT);
pinMode(ledPino2, OUTPUT);
pinMode(ledPino3, OUTPUT);
}

void loop() {
analogWrite(ledPino1, random(120)+136);
analogWrite(ledPino2, random(120)+136);
analogWrite(ledPino3, random(120)+136);
delay(random(100));
}

Vídeo

Como o projeto deve funcionar

1. Após iniciar o programa, a mistura das cores e brilho dos 3 LEDs irá gerar um efeito que imita uma chama cintilante.

2. Este efeito se dá ajustando-se aleatoriamente o brilho de cada um dos 3 LED, graças ao PWM (Pulse Width Modulation, em português, modulação por largura de pulso) para que resultem brilhos com valores diferentes.

3. Difundindo a luz com o cilindro de papel (folha A4), você visualiza o efeito das cores vermelho e amarelo de forma uniforme e agradável. Os LEDs podem ser colocados dentro de qualquer objeto capaz de difundir a luz; outra opção é refletir a luz com um difusor reflexivo. Experimente colocar as luzes dentro de uma pequena garrafa plástica (quanto mais fino o plástico, melhor).

Observação1: Alternativamente, pode-se utilizar um Led RGB em substituição aos LEDs vermelho, verde e azul.

Observação2: Substitua os LEDs amarelos por azuis e o led vermelho por um branco para obter um efeito de arco de solda. Veja o vídeo abaixo:

 

PWM - Pulse With Modulation

Como demonstrado nos projetos Projeto 14 - Led com efeito dimmer usando potenciômetro e Projeto 18 - Efeito lâmpada pulsante, este experimento também utiliza o conceito o PWM (Pulse Width Modulation, em português, modulação por largura de pulso) no controle da luminosidade (brilho dos LEDs).

O Arduino UNO, que utilizamos no exemplo, possui 6 saídas digitais que podem ser utilizadas como PWM, sendo elas: 11, 10, 9, 6, 5 e 3.

Para saber mais sobre PWM, leia o tutorial: O que é PWM e para que serve?

Explicando o Código do Projeto

1. Primeiro declaramos as variáveis (ledPino1, ledPino2 e ledPino3).

int ledPino1 = 9;
int ledPino2 = 10;
int ledPino3 = 11;

 1.1. Observe que utilizamos variáveis tipo "float" e tipo "int". Veja na tabela abaixo as diferenças nos tipos de constantes e variáveis:

Tipo Valores Válidos para Variáveis e Constantes
char letras e símbolos: 'a', 'b', 'H', '^', '*','1','0'
int de -32767 até 32767 (apenas números inteiros)
float de -3.4 x 1038 até +3.4 x 10+38 com até 6 dígitos de precisão (2 casas depois da vírgula)
double de -1.7 x 10308 até +1.7 x 10+308com até 10 dígitos de precisão

1.2. As variáveis tipo inteiro redPin, greenPin e bluePin, se referem aos LEDs 5mm de alto brilho conectados nos pinos 9, 10 e 11 do controlador Arduino (saídas utilizada como PWM).

2. Através da estrutura void setup(), definimos:

void setup() {
pinMode(ledPino1, OUTPUT);
pinMode(ledPino2, OUTPUT);
pinMode(ledPino3, OUTPUT);
}

2.1. Definimos as variáveis ledPino1, ledPino2 e ledPino3 como saídas do controlador Arduino (OUTPUT) conectados aos pinos 9, 10 e 11 respectivamente.

3. Através da estrutura void loop(), obtemos:

void loop() {
analogWrite(ledPino1, random(120)+136);
analogWrite(ledPino2, random(120)+136);
analogWrite(ledPino3, random(120)+136);
delay(random(100));
}

3.1. O loop do programa envia um valor aleatório entre 0 e 119. Depois adicionamos 136 para obter o brilho máximo do LED, que irá variar entre 136 a 255--> leia referencia - random().

Observação 1: A função analogWrite faz uma escrita analógica, ou seja, faz a escrita da variável ValorPwm. No Arduino está predefinido que para ter 0% de PWM, basta escrever: analogWrite(pino a ser escrito, 0); do mesmo modo que, para obter 100% de PWM, basta escrever: analogWrite(pino a ser escrito, 255), ou seja, na estrutura que o Arduino entende como PWM, os valores vão de 0 (mínimo, ou seja, 0%) até 255 (máximo, ou seja,100%). Assim, dependendo da posição do eixo do potenciômetro, o led parecerá mais escuro ou mais claro, variando entre 0 e 255.

Observação 2: Experimente outros valores para a função random() e o valor de adição. Entretanto, lembre-se que a soma destes valores não poderá ser inferior a zero e nem superior a 255.

3.2. Finalmente, através da função delay() e da função random() teremos uma pausa aleatória entre 0 e 99ms. Então o loop reinicia, gerando o efeito de cintilação.

Você está preparado?

JSN Epic template designed by JoomlaShine.com