Neste tutorial será apresentado um efeito pulsante com LED. Para isso faremos uso de uma saída PWM (Pulse Width Modulation).
Figura 1 - LED Pulsante
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. // 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.
O esquema está apresentado logo abaixo:
Figura 2 - Esquema para montagem
A seguir as fotos da minha montagem.
Figura 3 - Minha montagem
Figura 4 - Minha montagem
Depois de tudo pronto e funcionando, trago um vídeo demonstrando o funcionamento do programa.
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 !
- Arduino - Programa 07: Interrupção (parte 2)
Prosseguindo o tutorial 7 vou apresentar o segundo modo de interrupção. Este modo permite que ao interrompermos o programa e acionarmos o botão novamente, o hardware inicie de onde parou, ou seja, é realizado uma pausa no programa. Para este programa...
- Arduino - Programa 07: Interrupção (parte 1)
No tutorial de hoje vou falar sobre a interrupção do arduino. Esta função permite interromper uma tarefa que esteja sendo executada pelo arduino a qualquer momento. Uma situação do tipo pode parecer sem lógica, mas em determinado problema pode...
- Arduino - Programa 05: Efeito Sequencial Com Led
Olá, vamos ao quinto tutorial de arduino, desta vez trago o código de um efeito sequencial com LED, a ideia em si é simples, acender sequencialmente dez LED's, mas no entanto o código apresenta uma maneira simples e eficiente de acender os...
- Arduino - Programa 02: Sinal De S.o.s
Bom pessoal dando continuidade aos tutoriais de arduino trago dessa vez um programa de sinal de código morse. Para quem não sabe o código morse é um sistema de representação de letras, números e sinais de pontuação através de um sinal codificado...
- Arduino - Programa 01: Acendendo Um Led
Bom pessoal como prometido estarei iniciando hoje o primeiro tutorial de arduino, o primeiro programa me pareceu bem simples, acendendo um LED.Entretanto apesar de ser um programa bem pequeno ele não pode ser deixado de lado. Acho melhor mostrar o programa...