bouton-led.ino

GD32F103 (GigaDevice) — chip + placas compatibles Blue Pill · Archivo : bouton-led.ino · Lenguaje : Arduino · Uso : Allumer la LED sur appui bouton avec anti-rebond

El montaje de botón más común, adaptado a los pines Arduino del core STM32: INPUT_PULLUP funciona en PA0 y el filtro de 30 ms limpia el rebote. El LED sigue la pulsación en directo en el monitor.

Hardware necesario

Una placa de desarrollo GD32F103C8T6 (Cortex-M3 a 108 MHz, compatible pin a pin con Blue Pill), alimentada a 3,3 V/5 V, con un adaptador ST-Link o serie. 1 botón pulsador (PA0 a GND).

Cableado

Botón entre PA0 y GND; pull-up interna activada. Todos los pines son 3,3 V máx: nunca 5 V en PA0.

Funcionamiento

El muestreo continuo + validación tras 30 ms de estabilidad es el patrón antirrebote estándar; digitalWrite(LED, stable) explota el activo-bajo sin condicional. Con Arduino: instale el core « STM32F1 » (Roger Clark, gestor de placas) y elija la placa « GD32F103C »; el LED de usuario es PC13 (activo en LOW). En C: biblioteca de firmware GD32F10x + ST-Link.

Para ir más lejos

Contador de pulsaciones con copia en flash (sketch EEPROM/flash), o doble clic para dos acciones.

bouton-led.ino

// Bouton sur PA0 (vers GND) + LED PC13, anti-rebond 30 ms.
const int BOUTON = PA0;
const int LED = PC13;
const unsigned long ANTI_REBOND = 30;

bool dernier = HIGH, stable = HIGH;
unsigned long bord = 0;

void setup() {
  pinMode(BOUTON, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  Serial.begin(115200);
}

void loop() {
  bool lu = digitalRead(BOUTON);
  unsigned long t = millis();
  if (lu != dernier) bord = t;
  if (t - bord >= ANTI_REBOND && lu != stable) {
    stable = lu;
    digitalWrite(LED, stable);        // actif-bas : LOW = allume
    Serial.println(stable ? "relache" : "APPUIE");
  }
  dernier = lu;
}

← Volver a la ficha