typestar

Debounce en Arduino

Una pulsación cuenta cuando los contactos dejan de rebotar.

// A press only counts once the contacts stop bouncing.
const int BUTTON_PIN = 2;
const unsigned long SETTLE_MS = 25;
int steadyState = HIGH;
int lastReading = HIGH;
unsigned long lastChange = 0;
void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  int reading = digitalRead(BUTTON_PIN);
  if (reading != lastReading) lastChange = millis();
  if (millis() - lastChange > SETTLE_MS && reading != steadyState) {
    steadyState = reading;
    if (steadyState == LOW) Serial.println("Pressed");
  }
  lastReading = reading;
}

Cómo funciona

  1. Cada cambio crudo re-estampa lastChange.
  2. Solo una lectura estable más de SETTLE_MS se vuelve estado firme.
  3. El print dispara solo en el flanco de bajada limpio.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
540
Tokens
119
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 119 segundos.

Escribe este fragmento

Paso 3 de 3 en Tiempo; paso 12 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →

Debounce en otros lenguajes