🛠 Bouton poussoir et console série
Objetivos
Leer un botón pulsador en un pin digital de la MKR WAN 1310, contar las pulsaciones y mostrarlas en la consola serie a través del USB nativo del SAMD21. Recordatorios: 8 pines digitales de 3,3 V, 8 interrupciones externas (0, 1, 4, 5, 6, 7, 8, 16/A1, 17/A2), 7 mA máx. por pin.
Material
- 1 placa MKR WAN 1310
- 1 botón pulsador
- Cables: botón entre el pin 1 y GND (la resistencia de pull-up es interna)
Código completo
// Bouton sur broche 1 + console série — MKR WAN 1310
const int BUTTON = 1; // broche compatible EINT pour un réveil future
const int LED = 6; // LED_BUILTIN
unsigned long appuis = 0;
unsigned long dernierAppui = 0;
void setup {
pinMode(BUTTON, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(115200);
while (!Serial);
Serial.println("Appuyez sur le bouton (broche 1 -> GND)");
}
void loop {
if (digitalRead(BUTTON) == LOW) { // actif bas : tirage interne
unsigned long maintenant = millis;
if (maintenant - dernierAppui > 50) { // anti-rebond logiciel 50 ms
appuis++;
dernierAppui = maintenant;
Serial.print("Appui n°");
Serial.println(appuis);
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
}
Verificación esperada
Cada pulsación muestra «Pulsación n.º X» en el monitor serie (115200 baudios) y enciende D6. El contador no aumenta varios pasos con una sola pulsación gracias a la antirrebote.
Errores frecuentes
- Conectar el botón a 3,3 V cuando el código utiliza
INPUT_PULLUP(activo en nivel bajo): la señal permanece entonces permanentemente en nivel bajo. - Olvidar la antirrebote y ver el contador saltar de 3 a 10 en cada pulsación.
- Esperar que el LED ON se encienda con alimentación por batería: sigue la tensión de 5 V USB/VIN, no la batería Li-Po cargada por el BQ24195L.
- No seleccionar la placa MKR WAN 1310 en el IDE: el puerto serie desaparece durante la carga del programa (reset a 1200 baudios), esto es normal.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
join-otaa.inoArduinouplink-confirme.inoArduinodownlink.inoArduinoactivation-abp.inoArduinosuivi-adr.inoArduinoclasse-c.inoArduino