🛠 Bouton poussoir avec anti-rebond

GD32F103 (GigaDevice) — puce + cartes compatibles Blue Pill · debutant · Schéma : IMG-gd32f103-debutant-2-bouton-antirebond.svg — bouton poussoir sur PA0 avec résistance de pull-down, commande de la LED PC13 par toggling anti-rebondi

Objectifs

Lire un bouton poussoir sur PA0 et commander la LED PC13 en changeant d'état à chaque appui, en filtrant le rebond mécanique par logiciel (anti-rebond temporel). Vous apprendrez la configuration d'une entrée, la logique active-HIGH d'un bouton câblé avec pull-down, et la limite d'un anti-rebond par millis face aux appuis rapides.

Matériel

Code complet

// bouton_antirebond.ino — GD32F103C8, core CommunityGD32Cores
#include <Arduino.h>

const uint8_t BTN = PA0;      // appui = HIGH (pull-down externe)
const unsigned long DEBOUNCE_MS = 50;

bool etatStable = false;      // état filtré du bouton
bool dernierLu = false;       // dernière lecture brute
unsigned long dernierChangement = 0;
bool ledAllumee = false;

void setup {
  pinMode(BTN, INPUT_PULLDOWN); // pull-down interne : pas obligatoire si R externe
  pinMode(PC13, OUTPUT);
  digitalWrite(PC13, HIGH);     // LED éteinte (active-LOW)
}

void loop {
  bool brut = digitalRead(BTN);
  unsigned long maintenant = millis;

  if (brut != dernierLu) {
    dernierChangement = maintenant;   // le signal bouge : on repart
    dernierLu = brut;
  } else if (maintenant - dernierChangement >= DEBOUNCE_MS
             && brut != etatStable) {
    etatStable = brut;                // état confirmé après 50 ms stables
    if (etatStable) {                 // front montant = appui
      ledAllumee = !ledAllumee;
    }
  }
  digitalWrite(PC13, ledAllumee ? LOW : HIGH);
}

Vérification attendue

Un appui franc allume la LED (si elle était éteinte), un second l'éteint, un seul changement d'état par appui. En secouant doucement le bouton, la LED ne doit pas « papillonner » : l'anti-rebond fait son travail. Vous pouvez ajouter une sortie Serial pour compter les appuis et vérifier qu'il n'y en a jamais deux pour un seul geste.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels