FVM Learning

Nosso maior compromisso é compartilhar conhecimentos, somos simples mas não simplórios, astuto mas não pacóvio, nos posicionamos empenhados em mostrar o caminho para desmistificação do opróbrio em legítima defesa do conhecimento compartilhado. Eng. Jemerson Marques.

domingo, 8 de dezembro de 2019

Piscando LEDs Independentes sem delay() utilizando Função millis() - Blink LEDs Without Delay

Piscando LEDs Independentes sem delay() utilizando Função millis() - Blink LEDs Without Delay

Olá a Todos!!!

Fazer LEDs piscar em alguns tipos de embarcados como os: Arduínos, os ESP8266, ou os ESP32 é bastante simples para qualquer um com conhecimento básico fazer, no entanto, temos um grande problema quando utilizamos a função delay(), que é a função básica para fazer um led Piscar, devido a essa função pausar o andamento do processamento de um microcontrolador, fazendo com que o tempo de delay mantenha os Embarcados tecnicamente parados a espera daquele tempo determinado acabar.
No post de hoje, iremos mostrar como programar os: Arduínos, os ESP8266, ou os ESP32 para piscar 1, 2, 3, 4... ou quanto de LEDs você quiser colocar, sem a utilização da função delay(), iremos utilizar a função mills(), que contará o tempo sem pausar as atividades e processamento dos microcontroladores, e através dessa básica noção é que poderemos não só fazer os LEDs piscarem, mas muitas das vezes precisamos executar uma atividade, por exemplo piscar um LED, ao mesmo tempo que precisamos fazer a leitura de algum sensor, ou pressionar um botão, ao mesmo tempo de duas atividade remanescentes, e nos embarcados, muitas vezes terminamos por utilizar a função delay, pausando nossa sketch e prejudicando o funcionamento de nosso programa, como a leitura errada do sensor ou o não funcionamento do pressionar o botão para acionar outras atividades.

Funcionamento da função Delay();

A função Delay(), pausa o programa por uma quantidade especificada de tempo (em milissegundos). Cada segundo equivale a 1000 milissegundos, e sua sintaxe é: delay(ms), cujo o parâmetro ms é o número de milissegundos para pausar o programa, e não retorna nada. 

Funcionamento da função Millis();

A unção Millis(), retorna o número de milissegundos passados desde que o embarcado começou a executar o programa. Esse número irá sofrer overflow (chegar ao maior número possível e então voltar pra zero), após aproximadamente 50 dias. sua sintaxe é: time = millis(), não tendo nenhum parâmetro e, retorna o número de milissegundos passados desde que o programa iniciou (unsigned long).

Ao compararmos as funções Delay e a função Millis, podemos visualizar claramente o modo de trabalho de cada um e o porque não devemos utilizar a função delay com projetos mais elaborados, não estamos falando de um pequeno código que sirva apenas para piscar um LED sem muito controle e leitura de sensores simultâneo e etc., estamos falando de programas que necessitam fazer leituras simultâneas, piscar LEDs e variar um PWM tendo que ficar lendo um botão para ver se foi pressionando ou não, isso é necessário realmente utilizar a função millis, pois com o delay fica impossível um código desses funcionar de forma estabilizada.

Nos nossos testes utilizamos o NodeMCU ESP8266, mas a mesma Sketch servirá tanto para o NodeMCU como para o Arduíno, como sugerido na Figura 2 abaixo, a diferença em utilizar o NodeMCU e o Arduíno, é que o NodeMCU não é necessário a utilização de resistores limitadores de corrente em série com os LEDs, devido a GPIO ou seja, a saída do NodeMCU em nível alto ser de 3.3V, que é o valor próximo de alimentação dos LEDs, e no Arduíno, a saída é de 5V, necessitando assim os resistores de limitação, e será também necessário setar a definições do número da GPIO do Arduíno pelo qual está conectado cada LED.
Fig. 2 - Esquemático de ligação dos Leds no Arduíno

A sketch do Código

A Sketch completa do código está disposto logo abaixo para poder baixar, é bem simples de entender e tem uma eficácia muito boa.

E por hoje é só, espero que tenham gostado!!!

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.

Se inscreva no nosso Blog!!! Click Aqui FVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom

Nenhum comentário:

Postar um comentário