Conteúdo sugerido

blob_gZ2T6aAaDb.blob?auto=compress%2Cfor

Nesse post mostraremos 4 formas de Piscar o Led, sendo 3 delas usando o "Delay(tempo)", e uma faremos o projeto Pisca Led usando "Millis()" e posteriormente, em outro momento, usaremos a "Interrupção por Timer". O objetivo não é ensinar como piscar o Led e sim os comandos, funções e lógicas de programação que podemos usar com o Arduíno.

Caso tenha interesse em conhecer outros projetos acesse nosso canal no YouTube através do link: https://www.youtube.com/sandromesquitaroboticamente


PISCA LED TRADICIONAL

indice_RMJF6Vf3vX.png?auto=compress%2Cfo

Este é o programa inicial do Arduíno, o famoso "Olá Mundo" da programação é feito com o piscar Led no Arduino. Essa saudação entre o Arduíno e o meio exterior é feita comumente usando essa #LógicaDeProgramação onde se escreve um passo a passo de cada estado estado do Led.

A primeira linha, int LED=13; declara ao Arduíno que a variável LED é do tipo inteira e esta ligada na porta 13 do Arduíno. Já dentro da função voidsetup() o comando pinMode(LED, OUTPUT); configura a porta 13 do Arduíno como uma porta de saída, tendo em vista que por padrão de fábrica todas as portas são configuradas como entrada, logo se faz necessário o uso desse comando. Até esse ponto será padrão para os 3 modos de controle da atividade de piscar o Led, a partir da função voidloop() é que difere uma lógica da outra.

No voidloop() temos 4 linhas de programação escrita, o comando digitalWrite(LED, HIGH); que eleva a porta 13 do Arduíno para nível lógico alto (5v) ligando o Led, em seguida o camando delay(1000); para a programação por 1 segundo mantendo o estado do Led ligado por esse período de tempo, logo o Led se apaga pois o comando digitalWrite(LED, LOW); baixa o nível lógico da porta para 0 (0v) e novamente espera 1 segundo com o comando delay(1000);


PISCA LED USANDO INVERSÃO DO STATUS

indice2_ViOeUf4RRq.png?auto=compress%2Cf

Nessa lógica de piscar o Led, usamos uma programação mais refinada e com isso economizamos uma linha de programação e a aparência do programa parece ser mais agradável e organizada, ela funciona assim: a variável estado recebe valor inicial zero nas declarações de variáveis no inicio do programa (nível lógico baixo) e como ela esta escrita no segundo parâmetro do comando digitalWrite(LED, estado); ele irá receber o valor que esta carregado nessa variável, ou seja desligar o Led, após esse comando o programa espera 1 segundo no delay(1000); e em seguida inverte o sentido da variável estado com o comando !estado e em seguida carrega esse novo valor invertido na variável estado com o comando estado=!estado assim quando chegar novamente no digitalWrite(LED, estado); o Led inverterá seu estado de desligado para ligado, por exemplo.


PISCA LED USANDO LEITURA DO STATUS DO LED

indice3_PNTtzp57Gp.png?auto=compress%2Cf

A terceira forma de realizar o projeto de piscar o Led, e para isso iremos aprender a usar o comando digitalRead(); que é quem realizada a leitura em uma determinada porta digital do Arduino. A diferença desse programa para os dois mostrados anteriormente é que dentro do comando digitalWrite(LED, !digitalRead(LED)); no lugar da variável estado usa-se o comando de leitura da porta digital digitalRead();, ou seja, o Arduíno verifica o estado atual da porta e inverte o estado dela, de 0 para 1 por exemplo, toda vez que entrar na função usando o comando ! antes do digitalRead(LED); sempre esperando um segundo a cada execução dessa linha. Esse programa fica mais enxuto e inteligente sendo considerado um programa bem escrito.


PISCA LED USANDO A FUNÇÃO MILLIS

47dc6dfebc40e3bc270816bb62152534.jpg

Um programa de piscar um LED pode ser usado com o comando delay, o problema é que todo o código para na linha desta função, assim se houvesse a necessidade de monitorar sensores enquanto o led esta apagado por exemplo (parado no delay de 1 segundo), não seria posivel e problemas teriamos caso fosse uma informação importante e contante desta leitura do sensor por que o comando delay deixa o microcontrolador "dormindo" sem fazer nada, não executa comandos e nem verifica se um sensor está sendo acionado por algum evento.

Deste modo, é importante trocar o uso do delay pelo uso da função milis() que retorna um número do tipo inteiro longo, com a quantidade de milisegundos passados desde que o Arduino foi ligado. A lógica da programação precisa calcular o tempo que já se passou desde o último evento controlado até o instante atual. Se esse tempo passado corresponder ao intervalo desejado o programa deve mudar de estado. 

 Revisando os comandos que aprendemos nesse post :

  • digitalWrite(porta, estado): responsável por escrever em uma porta digital
  • digitalRead(porta); responsável por ler em uma porta digital
  • delay(atraso); responsável por realizar um atraso no programa
  • pinMode(porta, modo); responsável por configurar a porta do Arduino com saida
  • millis(); função responsável por contar o tempo a cada 1 milissegundos



REDE SOCIAL 

https://www.youtube.com/Sandromesquitaroboticamente
https://roboticmente.blogspot.com/  
https://www.instagram.com/sandro.robots/  
https://web.facebook.com/roboticament/  

Atividades recentes