Neste tutorial será apresentado um efeito pulsante com LED. Para isso faremos uso de uma saída PWM (Pulse Width Modulation).
Este programa traz uma aplicação com iluminação, ou seja, se antes o LED era aceso e apagado, agora veremos uma maneira de ajustar o brilho. Entretanto, neste tutorial veremos uma introdução às saídas PWM do arduino, e como ela será aplicada neste exemplo. Abaixo o programa que apesar de pequeno contém muita informação.
Analisando este código, que apesar de pequeno contém informações muito importantes. Como de costume, não estenderei o tutorial analisando comandos já apresentados.
No Inicio deste programa declaramos a variável sinVal como float, ou seja, ela armazenará números fracionários (com vírgula). Em void loop() utilizamos o comando for para incrementar x graus a cada delay de 25ms. Em seguida temos que converter o ângulo em graus para radianos, pois o arduino e a maioria dos outros microcontroladores trabalham com ângulos em radianos. Observe que a conversão é realizada dentro da função sin() que calcula o valor do seno. Outro ponto a destacar é a ordem das operações separadas pelos parênteses, o que retorna cada operação de forma adequada, ou seja, as operações são realizadas do termo mais interno para o externo. Efetuando primeiro a divisão e em seguida a multiplicação.
Atente-se em como a multiplicação é feita (não utilizamos x e sim *), isso porque x tem significado literal em um programa. Continuando, em seguida o valor do ângulo é convertido para uma variável do tipo byte, que armazena de 0 a 255 valores. Isso implica que o valor obtido do seno estará compreendido entre -1 e 1. Como foi definido no loop for que x vai de 0 a 179, o valor de seno vai até 1. O que implica que não temos como aplicar um seno de um angulo maior na saída, e obtermos um sinal negativo de tensão.
Em seguida acionamos uma saída PWM, que para o arduino uno são os pinos 3, 5, 6, 9, 10 e 11. Observe a sintaxe do comando a seguir: analogWrite(porta, estado); essa é a sintaxe do comando para utilizar o PWM. Com esse comando podemos obter uma saída analógica por uma porta digital. O que acontece é que o arduino aciona a porta digital em alta frequência, o que é imperceptível a olho nu. Isso é feito pela variação do tempo em que a porta permanece acionada e desligada. Este tempo é chamado de largura de pulso (também conhecido como: duty cicle; razão cíclica; ciclo de trabalho ou ciclo ativo).
Como a variável ledVal é convertida para inteiro ela é aplicada na saída analógica e controla a razão cíclica do PWM. Logo o incremento no valor em x traz um aumento no seno que implica o controle da saída PWM. Faça o teste você mesmo para alguns valores de seno entre 0 e 180 e confira o crescimento e o decrescimento da função.
Logo após o último ângulo o programa espera 25ms segundos e entra em loop, apresentando este efeito pulsante com LED.
Os componentes necessários para montagem são:
A seguir as fotos da minha montagem.
Depois de tudo pronto e funcionando, trago um vídeo demonstrando o funcionamento do programa.
Figura 1 - LED Pulsante |
// Programa 07 – LED pulsante
int ledPin = 11;
float sinVal; // armazena um valor ponto flutuante (fracionário)
int ledVal;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
for (int x=0; x<180; x++) { // define o angulo em graus
// converte graus para radianos e, então, obtém o valor do seno
sinVal = (sin(x*(3.1416/180)));
ledVal = int(sinVal*255); // converte o fracionário em inteiro
analogWrite(ledPin, ledVal);
delay(25);
}
}
Analisando este código, que apesar de pequeno contém informações muito importantes. Como de costume, não estenderei o tutorial analisando comandos já apresentados.
No Inicio deste programa declaramos a variável sinVal como float, ou seja, ela armazenará números fracionários (com vírgula). Em void loop() utilizamos o comando for para incrementar x graus a cada delay de 25ms. Em seguida temos que converter o ângulo em graus para radianos, pois o arduino e a maioria dos outros microcontroladores trabalham com ângulos em radianos. Observe que a conversão é realizada dentro da função sin() que calcula o valor do seno. Outro ponto a destacar é a ordem das operações separadas pelos parênteses, o que retorna cada operação de forma adequada, ou seja, as operações são realizadas do termo mais interno para o externo. Efetuando primeiro a divisão e em seguida a multiplicação.
Atente-se em como a multiplicação é feita (não utilizamos x e sim *), isso porque x tem significado literal em um programa. Continuando, em seguida o valor do ângulo é convertido para uma variável do tipo byte, que armazena de 0 a 255 valores. Isso implica que o valor obtido do seno estará compreendido entre -1 e 1. Como foi definido no loop for que x vai de 0 a 179, o valor de seno vai até 1. O que implica que não temos como aplicar um seno de um angulo maior na saída, e obtermos um sinal negativo de tensão.
Em seguida acionamos uma saída PWM, que para o arduino uno são os pinos 3, 5, 6, 9, 10 e 11. Observe a sintaxe do comando a seguir: analogWrite(porta, estado); essa é a sintaxe do comando para utilizar o PWM. Com esse comando podemos obter uma saída analógica por uma porta digital. O que acontece é que o arduino aciona a porta digital em alta frequência, o que é imperceptível a olho nu. Isso é feito pela variação do tempo em que a porta permanece acionada e desligada. Este tempo é chamado de largura de pulso (também conhecido como: duty cicle; razão cíclica; ciclo de trabalho ou ciclo ativo).
Como a variável ledVal é convertida para inteiro ela é aplicada na saída analógica e controla a razão cíclica do PWM. Logo o incremento no valor em x traz um aumento no seno que implica o controle da saída PWM. Faça o teste você mesmo para alguns valores de seno entre 0 e 180 e confira o crescimento e o decrescimento da função.
Logo após o último ângulo o programa espera 25ms segundos e entra em loop, apresentando este efeito pulsante com LED.
Os componentes necessários para montagem são:
- 1 LED;
- 1 resistor de 150 Ohm;
- Fios e jumpers;
- 1 Arduino.
Figura 2 - Esquema para montagem |
Figura 3 - Minha montagem |
Figura 4 - Minha montagem |
Este tutorial termina por aqui, qualquer dúvida deixe seu comentário. O programa também pode ser baixado, clique aqui e escolha o programa que desejar.
Se gostou, ajude o blog, compartilhe, curta nossa fan page e se inscreva no nosso canal para ficar por dentro de mais novidades !
Até o próximo !
EmoticonEmoticon