🛠 Bouton de contact cousu et pull-up interne
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
- 1 LilyPad SimpleSnap con pila de 3,7 V
- 2 botones de presión + hilo conductor (el «botón» cosido)
- 1 LED LilyPad
- Adaptador FTDI para cargar el programa
- > SIN VERIFICAR: en el SimpleSnap solo salen 9 pastillas; este montaje utiliza las pastillas 2 y 9 (verificar en el esquema SimpleSnap v1.3).
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
- Olvidar INPUT_PULLUP: la entrada queda flotante, el LED parpadea aleatoriamente.
- Coser el contacto hacia «+» en lugar de «−»: la lógica está invertida (contacto cerrado = HIGH).
- Antirrebote ausente: el hilo conductor se deshilacha y produce chispas, el LED zumba.
- Confundir HIGH/LOW: con el contacto cerrado, digitalRead devuelve LOW (masa), no HIGH.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinopwm-respiration.inoArduinoluxmetre-couture.inoArduinointerrupteur-tilt.inoArduinoservo-balayage.inoArduino