Elimine o repique com millis()
Ignore ruídos usando uma breve janela de estabilidade.
Elimine o repique com millis() é uma aula grátis de Arduino & IoT Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Arduino & IoT Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Arduino & IoT Academy inclui 4 aulas no total.
Por que não usar apenas delay()?
Você poderia pausar com delay() depois de um pressionamento, mas isso congelaria toda a sua placa. A ferramenta mais inteligente para botões limpos é millis().
millis() é um cronômetro
millis() retorna quantos milissegundos sua placa está funcionando. Você compara duas leituras para medir o tempo decorrido sem parar a execução.
unsigned long now = millis();O plano para eliminar a trepidação
A ideia é simples: quando o pino mudar, inicie um temporizador. Só confie no novo estado se ele permanecer estável além de um intervalo curto.
Escolha um intervalo para eliminar a trepidação
Um atraso de cerca de 50 milissegundos é a escolha clássica. É longo o suficiente para superar a trepidação, mas rápido demais para que você perceba.
const unsigned long DEBOUNCE = 50;Lembre-se da última mudança
Você precisa de uma variável para armazenar quando o pino mudou pela última vez. Compare esse valor com o tempo atual a cada passagem do laço.
unsigned long lastChange = 0;Acompanhe dois estados
Mantenha separadamente a leitura bruta e o estado estável confirmado. A primeira é ruidosa; o segundo é aquilo em que sua lógica confia.
int lastRaw = HIGH;
int stable = HIGH;Detecte uma mudança
A cada passagem do laço, leia o pino. Se ele for diferente do último valor bruto, o sinal acabou de mudar, então reinicie o temporizador.
int raw = digitalRead(BTN);
if (raw != lastRaw)
lastChange = millis();Espere a estabilidade
Se tiver passado tempo suficiente desde a última mudança, a leitura se estabilizou. Agora é seguro aceitá-la como o estado real.
if (millis() - lastChange > DEBOUNCE) {
stable = raw;
}Aja na borda
Para disparar uma vez por pressionamento, observe o estado estável mudar para LOW. Essa única borda é seu pressionamento limpo, sem trepidação.
if (stable == LOW && lastStable == HIGH)
Serial.println("clean press");Atualize para a próxima vez
Ao final do laço, salve as leituras atuais nas suas variáveis últimas. Isso mantém a comparação atualizada a cada passagem.
lastRaw = raw;
lastStable = stable;A execução sem bloqueio vence
Como millis() nunca pausa a placa, seus sensores e saídas continuam funcionando. Você elimina a trepidação enquanto todo o restante continua ativo. 🚀
Verificação rápida
Vamos verificar como a eliminação de trepidação com millis() decide que um pressionamento é real.
Recapitulação: pressionamentos limpos
Você usou millis() para ignorar a trepidação sem congelar a placa, aceitando um pressionamento somente depois que ele se estabiliza. Uma entrada sólida e profissional! ✅
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Elimine o repique com millis()” é grátis?
Sim — o texto completo de “Elimine o repique com millis()” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Arduino & IoT Academy, atualize para CoddyKit PRO. O curso de Arduino & IoT Academy inclui 4 aulas no total.
O que vou aprender em “Elimine o repique com millis()”?
Ignore ruídos usando uma breve janela de estabilidade. Você pratica Arduino & IoT Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Arduino & IoT Academy?
Nenhuma experiência prévia é necessária. Arduino & IoT Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Elimine o repique com millis()”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Arduino & IoT Academy?
Sim. Cada aula de Arduino & IoT Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que os botões têm “repique”
- Elimine o repique com millis()
- Armazene um valor na EEPROM
- Lembre-se de um contador após a reinicialização