🛠 Bouton poussoir avec anti-rebond

GD32F103 (GigaDevice) — chip + placas 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

Objetivos

Leer un botón pulsador en PA0 y controlar el LED PC13 cambiando de estado en cada pulsación, filtrando el rebote mecánico por software (antirrebote temporal). Aprenderás la configuración de una entrada, la lógica activa-ALTA de un botón cableado con resistencia de pull-down, y la limitación de un antirrebote basado en millis frente a pulsaciones rápidas.

Material

Código completo

// 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);
}

Verificación esperada

Una pulsación clara enciende el LED (si estaba apagado), una segunda lo apaga, un solo cambio de estado por pulsación. Al mover suavemente el botón, el LED no debe «parpadear»: el antirrebote está haciendo su trabajo. Puedes añadir una salida Serial para contar las pulsaciones y verificar que nunca se cuentan dos por un solo gesto.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales