🛠 Bouton poussoir et console série
Objetivos
Leer una entrada digital con un botón pulsador, gestionar el rebote por software y comunicarse con la consola serie a través del USB nativo del SAMD21 (Full-Speed, VID 0x2341, PID de aplicación 0x0053).
Material
- 1 Arduino MKR WAN 1300
- 1 botón pulsador
- 1 resistencia de 10 kΩ (o resistencia de pull interna)
- Cable micro-USB
Código completo
// Logique 3,3 V, max ~7 mA par broche (famille MKR).
const uint8_t BTN = 2;
volatile uint32_t appuis = 0;
void onBouton { appuis++; }
void setup {
Serial.begin(115200);
while (!Serial) {} // attend l'ouverture du moniteur
pinMode(BTN, INPUT_PULLUP); // bouton vers GND
attachInterrupt(digitalPinToInterrupt(BTN), onBouton, FALLING);
}
void loop {
static uint32_t dernier = 0;
if (millis - dernier > 500) {
dernier = millis;
Serial.print("etat=");
Serial.print(digitalRead(BTN) ? "relache" : "APPUIE");
Serial.print(" appuis=");
Serial.println(appuis);
}
delay(5);
}
Verificación esperada
Cada pulsación incrementa el contador; el estado cambia en la línea mostrada dos veces por segundo. « while (!Serial) » evita perder las primeras líneas.
Errores frecuentes
- Botón conectado a 3,3 V sin resistencia: cortocircuito o estado flotante; preferir INPUT_PULLUP hacia GND.
- Rebotes: múltiples incrementos por pulsación, añadir un antirrebote (millis) o un condensador de 100 nF.
- Olvidar « while (!Serial) » en USB nativo: se pierden las primeras líneas.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
emission-p2p.inoArduinoreception-p2p.inoArduinoreglage-sp.inoArduinometeo-lora.inoArduinotrame-crc.inoArduinorelais-radio.inoArduino