🛠 Bouton de contact cousu et pull-up interne

LilyPad Arduino · debutant · Schéma : IMG-lilypad-debutant-2-lilypad-bouton-pullup.svg — Deux boutons-pression reliés par fil conducteur formant un contact entre la pastille 2 et le moins, LED sur la pastille 9.

Objetivos

Cosido de un sensor de contacto (dos botones de presión conectados por un hilo conductor) que funciona como pulsador, y encendido de un LED cuando se unen los dos botones. Se descubren las entradas digitales, la resistencia de pull-up interna (20 a 50 kΩ) y la antirrebote por software adaptada al hilo conductor.

Material

Código completo

// Bouton cousu : contact fermé -> LED allumée (pull-up interne)
const uint8_t BOUTON = 2;  // contact cousu entre cette pastille et « − »
const uint8_t LED    = 9;  // LED LilyPad sur pastille PWM
const unsigned long ANTI_REBOND = 50; // ms : le fil conducteur « crépite »

bool etatStable = HIGH, derniereLecture = HIGH;
unsigned long dernierChangement = 0;

void setup {
  pinMode(BOUTON, INPUT_PULLUP); // pull-up interne : pas de résistance externe
  pinMode(LED, OUTPUT);
}

void loop {
  bool brut = digitalRead(BOUTON);
  unsigned long maintenant = millis;
  if (brut != derniereLecture) {          // tout changement relance le timer
    derniereLecture = brut;
    dernierChangement = maintenant;
  } else if (brut != etatStable && maintenant - dernierChangement >= ANTI_REBOND) {
    etatStable = brut;                    // contact fermé = LOW (relié à la masse)
  }
  digitalWrite(LED, (etatStable == LOW) ? HIGH : LOW);
}

Verificación esperada

LED apagado en reposo; cuando se acercan los dos botones de presión uno al otro (contacto cerrado), el LED se enciende sin ninguna resistencia externa. Al separar los botones, se apaga claramente, sin parpadeos gracias a la antirrebote de 50 ms.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales