bouton-led.ino

Arduino Duemilanove — Fiche carte · Fichier : bouton-led.ino · Langage : Arduino · Usage : Allumer une LED quand un bouton est pressé, avec anti-rebond

Un bouton câblé vers GND allume la LED 13 pendant l'appui. Le mode INPUT_PULLUP active la résistance interne, et la fenêtre de 30 ms filtre les rebonds mécaniques du contact.

Matériel requis

Une Arduino Duemilanove (ATmega168 ou 328P, 16 MHz, 5 V) avec son câble mini-USB-B ; le port série apparaît après installation du driver FTDI. 1 bouton poussoir.

Branchement

Une patte du bouton sur la broche 2, l'autre sur GND ; LED (avec résistance 330 Ω) sur la broche 13 si LED externe.

Fonctionnement

La lecture n'est validée que si elle reste stable 30 ms ; l'appui met la broche à la masse (LOW en pull-up) et allume la LED. Dans l'Arduino IDE, choisissez « Arduino Duemilanove » (ou « Diecimila » pour les très vieilles cartes) et le port FTDI, puis Téléverser. L'ATmega168 n'a que 14 Ko pour le sketch.

Pour aller plus loin

Transformez en toggle en inversant un état sur chaque front, ou branchez un second bouton sur la broche 3.

bouton-led.ino

// Bouton sur la broche 2 (vers GND) + LED sur 13, anti-rebond logiciel.
const int BOUTON = 2;
const int LED = 13;
const unsigned long ANTI_REBOND = 30; // ms

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

void setup() {
  pinMode(BOUTON, INPUT_PULLUP); // resistance interne : rien d'externe
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

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 == LOW ? HIGH : LOW);
    Serial.println(stable == LOW ? F("Appui") : F("Lache"));
  }
  dernier = lu;
}

← Retour à la fiche