Arduino - Programa 08: LED Pulsante
Eletrônica

Arduino - Programa 08: LED Pulsante


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 !

    Até o próximo !



    loading...

    - 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...



    Eletrônica




    



    .