🛠 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.

Objectifs

Coudre un capteur de contact (deux boutons-pression reliés par un fil conducteur) qui sert de bouton poussoir, et allumer une LED quand on relie les deux pressions. On découvre les entrées numériques, la résistance de pull-up interne (20 à 50 kΩ) et l'anti-rebond logiciel adapté au fil conducteur.

Matériel

Code complet

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

Vérification attendue

LED éteinte au repos ; quand on approche les deux boutons-pression l'un de l'autre (contact fermé), la LED s'allume sans aucune résistance externe. En écartant les pressions, elle s'éteint franchement, sans scintillement grâce à l'anti-rebond de 50 ms.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels