Arduino & IoT Academy · Aula

Elimine o repique com millis()

Ignore ruídos usando uma breve janela de estabilidade.

Aula 2 de 413 etapas

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! ✅

Grátis para começar

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

  1. Por que os botões têm “repique”
  2. Elimine o repique com millis()
  3. Armazene um valor na EEPROM
  4. Lembre-se de um contador após a reinicialização
← Voltar para Arduino & IoT Academy