Olá a Todos!
Fazer LEDs piscar em alguns tipos de embarcados como os: Arduíno, os ESP8266, ou os ESP32, não são tarefas complexas de se fazer, e qualquer um com conhecimento básico consegue fazer.
Mas, o que precisamos entender é que, há um problema ao utilizamos a função delay(). Essa função básica para fazer um led Piscar, pausa o andamento do processamento de um microcontrolador, fazendo com que o tempo de delay mantenha o Microcontrolador tecnicamente parado, a espera do delay acabar.
Você pode se interessar também!
- Unit DualMCU: A Poderosa Placa de Desenvolvimento com ESP32 e Raspberry Pi RP2040!
- Como Ler Valores Analógicos ADC Usando NodeMCU ESP8266 - IDE Arduíno!
- Como Hackear Circuito Módulo Relé para funcionar com ESP8266 & ESP32 com 3.3V
- Como utilizar o Botão Flash do NodeMCU ESP8266
- Alarme de Segurança com Sensor PIR e ESP8266 - Sensor de Movimento
No post de hoje, mostraremos como programar os: Arduíno, ESP8266, ESP32, para piscar 1, 2, 3, 4… ou quanto de LEDs você quiser colocar, sem a utilização da função delay().
Utilizaremos a função mills(), que diferente da função delay(), contará o tempo sem pausar as atividades e processamento do microcontrolador.
E através dessa básica noção é que poderemos não só fazer os LEDs piscarem, mas também executarmos atividades, como, por exemplo: piscar um LED, enquanto fazemos a leitura de algum sensor ou porta.
Podemos também pressionar um botão, enquanto o LED pisca, ou que outras atividades de leitura de sensores não sejam interrompidas.
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 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 para 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 o modo de trabalho de cada um, e o porquê não devemos utilizar a função delay com projetos mais elaborados.
Ao compararmos as funções Delay e a função Millis, podemos visualizar o modo de trabalho de cada um, e o porquê 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âneos, etc.
Estamos falando de código que precisem fazer leituras simultâneas, piscar LEDs, 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.
No nosso exemplo, utilizamos o NodeMCU ESP8266, mas a mesma Sketch servirá tanto para o NodeMCU como para o Arduíno, como sugerido na Figura 2 abaixo.
No nosso exemplo, 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 à saída do NodeMCU em nível alto ser de 3.3V. Essa tensão para alguns LEDs principalmente os brancos, funcionam sem problemas.
No Arduíno, a saída é de 5V, necessitando assim os resistores de limitação, e será também necessário setar a definição 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 |
O Sketch do Código
O Sketch completa do código está disposto logo abaixo para poder baixar, é bem simples de entender e tem uma eficácia ótima.
E por hoje é só, espero que tenham gostado!
Qualquer dúvida, digita nos comentários que logos estaremos respondendo.
Se inscreva no nosso Blog! Clique Aqui - FVM Learning!
Forte abraço.
Deus vos Abençoe!
Shalom!
link para sketch está quebrado..
ResponderExcluirOlá @JOÃO HENRIQUE1
ExcluirO link foi testado, e está funcionando.
Verifica por favor!
Forte abraço!