Lição 14/31-1: Arduino Millis (sem delay) e funções map | SunFounder Robojax
Este guia apresenta a função millis() do Arduino, uma ferramenta fundamental para projetos baseados em tempo que exigem execução de código não bloqueante. Ao contrário de delay(), que interrompe todo o programa, millis() rastreia o tempo decorrido desde que a placa foi iniciada, permitindo que seu Arduino execute múltiplas tarefas de forma eficaz. Você pode usar esta técnica para construir:
- Piscadores de LED não bloqueantes que funcionam enquanto outro código é executado.
- Eventos temporizados acionados por sensores ou botões, como uma luz que desliga 5 segundos após o pressionamento de um botão.
- Sistemas simples de registro de dados que gravam valores de sensores em intervalos regulares.
- Sistemas de interface de usuário que respondem a entradas sem congelar.
Entendendo a Função millis()
A função millis() é um comando integrado do Arduino que retorna o número de milissegundos desde que a placa Arduino começou a executar o programa atual. Ela começa em zero na inicialização e incrementa a cada milissegundo. Você pode chamar esta função em qualquer ponto do seu código para obter o valor atual de "tempo de atividade". Por exemplo, após 1 segundo, ela retorna 1000; após 5 segundos, retorna 5000. A principal vantagem é que ela não pausa seu código, então você pode verificar o tempo enquanto outras tarefas continuam em execução.
Por que Evitar delay()?
A função delay() é uma maneira simples de pausar um programa, mas é uma função bloqueante. Quando você chama delay(5000), o Arduino para de executar todo o outro código por 5 segundos, congelando quaisquer componentes conectados. Isso é problemático para projetos que precisam responder a entradas ou atualizar saídas continuamente. Usar millis() permite que você verifique se um determinado período de tempo passou sem interromper o resto do seu programa, tornando-a ideal para multitarefa.
Hardware Necessário
- Placa Arduino (Uno, Mega, etc.)
- Cabo USB para programação e alimentação
Guia de Conexões
Este exemplo não requer conexões externas. O Arduino só precisa estar conectado ao seu computador via USB para carregar o código e visualizar a saída do monitor serial.
Explicação do Código
Este primeiro exemplo é uma demonstração simples de como millis() funciona. O código inicializa o monitor serial e imprime o valor de millis() em um loop infinito.
void setup() {
Serial.begin(9600);//inicializa o monitor serial
Serial.println("Introdução ao millis");
delay(2000);
}
void loop() {
Serial.println(millis());
}
A função setup() inicia a comunicação serial a 9600 baud e imprime uma mensagem de boas-vindas. O delay(2000) aqui é apenas para demonstração, para mostrar que millis() começa a contar a partir do momento em que o programa é executado. A função loop() imprime continuamente o valor atual de millis(). Quando você abre o Monitor Serial, verá o tempo em milissegundos aumentando rapidamente. Isso ilustra que millis() é um contador que nunca para, fornecendo uma referência de tempo contínua para o seu programa.
Este é o bloco de construção fundamental. No vídeo, o instrutor demonstra como usar este valor para acionar ações após um período definido, como verificar se 5000 milissegundos (5 segundos) se passaram antes de executar um bloco de código específico. Isso é feito armazenando o valor atual de millis() em uma variável e depois comparando-o no loop principal.
Acionar um LED com um valor percentual usando a função map() é abordado em Lição 14/31-4: Exemplo 1 de map() na codificação Arduino.
Demonstração do Projeto ao Vivo
No vídeo, o instrutor carrega este código e abre o Monitor Serial. Você pode ver que a saída começa após o atraso inicial de 2 segundos, mostrando um valor próximo de 1999. Os números então aumentam rapidamente, demonstrando a contagem contínua de milissegundos. Esta visão ao vivo confirma que a função está funcionando e fornece uma compreensão visual clara de como o tempo é rastreado.
Projetos relacionados deste vídeo
- Lição 14/31-2: Exemplo 2 de millis() na codificação Arduino com evento
- Lição 14/31-3: Exemplo 3 de millis() na codificação Arduino com botão de pressão
- Lição 14/31-4: Exemplo 1 de map() na codificação Arduino
- Lição 14/31-5: Exemplo 2 de map() na codificação Arduino
Capítulos
- [00:00] Introdução ao millis()
- [01:19] O que é millis() e por que usá-lo
- [03:06] Demonstração prática do millis()
- [05:46] Usando millis() para acionar um evento temporizado
- [08:29] Exemplo com um botão de pressão
- [12:14] Exemplo avançado de temporização com botão de pressão
- [17:20] Introdução à função map()
- [19:47] Exemplo de código para map() com um LED
- [22:41] Criando uma função map personalizada
/*
Lesson 14/31: Arduino coding millis() example 1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Example-1 of using millis() with Arduino
* Written by Ahmad Shamshiri on July 27, 2019
* in Ajax, Ontario, Canada
* Watch video instructio for millis() :https://youtu.be/u2HsiTS8niQ
*/
void setup() {
Serial.begin(9600);//initialize serial monitor
Serial.println("Introduction to millis");
delay(2000);
}
void loop() {
Serial.println(millis());
}// loop end
Common Course Links
Common Course Files
Coisas que você pode precisar
-
AmazonasSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazonas
-
Amazonas
-
Amazonas
-
Amazonas
Recursos e referências
-
DocumentaçãoDocumentação para o Kit de Aprendizado 3 em 1 IoT/Carro Inteligente/SunFounderdocs.sunfounder.com
-
Externo
Arquivos📁
Bibliotecas do Arduino (zip)
-
Código fonte do kit de aprendizado Smart Car 3 em 1 da SunFounder
3in1-kit-main-v2.zip12.80 MB