Antirebond avec millis()
Ignorez les parasites grâce à une courte fenêtre de stabilité.
Antirebond avec millis() est une leçon Arduino & IoT Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Arduino & IoT Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Arduino & IoT Academy comprend 4 leçons au total.
Pourquoi ne pas utiliser simplement delay() ?
Vous pourriez mettre le programme en pause avec delay() après un appui, mais cela immobiliserait toute la carte. L’outil plus judicieux pour obtenir des boutons fiables est millis().
millis() est un chronomètre
millis() renvoie le nombre de millisecondes écoulées depuis le démarrage de votre carte. Comparez deux lectures pour mesurer le temps écoulé sans arrêter le programme.
unsigned long now = millis();Le plan d’anti-rebond
L’idée est simple : lorsque la broche change, démarrez un minuteur. Ne faites confiance au nouvel état que s’il reste stable au-delà d’un court intervalle.
Choisir une fenêtre d’anti-rebond
Une durée d’environ 50 millisecondes constitue le choix classique. Elle est assez longue pour dépasser le rebond, mais bien trop courte pour que vous la remarquiez.
const unsigned long DEBOUNCE = 50;Mémoriser le dernier changement
Vous avez besoin d’une variable pour mémoriser quand la broche a changé pour la dernière fois. Comparez cette valeur à l’heure actuelle à chaque passage dans la boucle.
unsigned long lastChange = 0;Suivre deux états
Conservez séparément la lecture brute et l’état stable confirmé. La première est bruitée ; le second est celui auquel votre logique fait confiance.
int lastRaw = HIGH;
int stable = HIGH;Détecter un changement
À chaque passage dans la boucle, lisez la broche. Si sa valeur diffère de la dernière valeur brute, le signal vient de changer : réinitialisez donc votre minuteur.
int raw = digitalRead(BTN);
if (raw != lastRaw)
lastChange = millis();Attendre la stabilité
Si suffisamment de temps s’est écoulé depuis le dernier changement, la lecture s’est stabilisée. Vous pouvez alors l’accepter en toute sécurité comme l’état réel.
if (millis() - lastChange > DEBOUNCE) {
stable = raw;
}Réagir au front
Pour déclencher une seule fois par appui, surveillez le passage de l’état stable à LOW. Ce seul front constitue votre appui propre, débarrassé du rebond.
if (stable == LOW && lastStable == HIGH)
Serial.println("clean press");Mettre à jour pour la prochaine fois
À la fin de la boucle, enregistrez les lectures actuelles dans vos variables dernières. La comparaison reste ainsi à jour à chaque passage.
lastRaw = raw;
lastStable = stable;L’absence de blocage l’emporte
Comme millis() ne met jamais la carte en pause, vos capteurs et vos sorties continuent de fonctionner. Vous éliminez le rebond tandis que tout le reste continue de fonctionner. 🚀
Vérification rapide
Vérifions comment l’anti-rebond avec millis() détermine qu’un appui est réel.
Récapitulatif : des appuis fiables
Vous avez utilisé millis() pour ignorer le rebond sans bloquer la carte, en n’acceptant l’appui qu’une fois stabilisé. Une entrée fiable et professionnelle ! ✅
Apprends C++ avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Antirebond avec millis() » est-elle gratuite ?
Oui — le texte complet de « Antirebond avec millis() » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Arduino & IoT Academy, passe à CoddyKit PRO. Le cours Arduino & IoT Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Antirebond avec millis() » ?
Ignorez les parasites grâce à une courte fenêtre de stabilité. Tu pratiques Arduino & IoT Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Arduino & IoT Academy ?
Aucune expérience préalable n'est requise. Arduino & IoT Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Antirebond avec millis() » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Arduino & IoT Academy ?
Oui. Chaque leçon Arduino & IoT Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi les boutons « rebondissent »
- Antirebond avec millis()
- Stocker une valeur dans l’EEPROM
- Mémoriser un compteur après une réinitialisation