bouton-led.ino
Un botón cableado a GND enciende el LED mientras se pulsa. INPUT_PULLUP activa la resistencia interna y la ventana de 30 ms filtra el rebote mecánico del contacto.
Hardware necesario
Un Arduino Duemilanove (ATmega168 o 328P, 16 MHz, 5 V) con su cable mini-USB-B; el puerto serie aparece tras instalar el driver FTDI. 1 botón pulsador.
Cableado
Una pata del botón al pin 2, la otra a GND; LED (con resistencia de 330 Ω) en el pin 13 si es externo.
Funcionamiento
Una lectura vale tras 30 ms estable; al pulsar el pin va a masa (LOW con pull-up) y enciende el LED. En el Arduino IDE, elija « Arduino Duemilanove » (o « Diecimila » para placas muy antiguas) y el puerto FTDI, y pulse Subir. El ATmega168 solo deja 14 KB para el sketch.
Para ir más lejos
Conviértalo en toggle invirtiendo un estado en cada flanco, o cable otro botón en el pin 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;
}