🛠 Bouton et console USB
Objetivos
Leer un botón pulsador y mostrar las pulsaciones en la consola serie USB. Comprender que el MKR NB 1500 posee un USB nativo (sin chip FTDI): Serial es el puerto USB CDC, y la lógica GPIO es de 3,3 V.
Material
- 1 placa MKR NB 1500 + cable micro-USB de datos
- 1 botón pulsador
- 1 cable de conexión (pin D2 → botón, otra pata → GND); la resistencia interna
INPUT_PULLUPevita cualquier resistencia externa
Código completo
// Bouton sur D2 + console USB — MKR NB 1500
#include <MKRGSM.h>
GSM gsm; // sert uniquement a eteindre le modem
const uint8_t BTN = D2; // D2 accepte aussi l'entree analogique (AIN18)
void setup {
Serial.begin(9600);
while (!Serial); // USB natif : attendre l'ouverture du port CDC
pinMode(BTN, INPUT_PULLUP);
// Couper le modem pour eviter qu'il cherche un reseau en pure perte
gsm.begin;
gsm.shutdown;
}
void loop {
static uint8_t last = HIGH;
uint8_t now = digitalRead(BTN);
if (now != last) {
Serial.println(now == LOW ? "Bouton appuye" : "Bouton relache");
last = now;
}
delay(20); // petit anti-rebond logiciel
}
Verificación esperada
Abra la consola serie (9600 baudios) después de la carga: «Botón pulsado» / «Botón soltado» se muestran en cada pulsación. No se requiere ningún componente adicional gracias a la resistencia de pull-up interna.
Errores frecuentes
- Olvidar
while (!Serial);: en USB nativo, los primerosSerial.printse envían antes de que se abra el puerto y parecen «perdidos». - Conectar el botón a 5 V con una resistencia externa hacia D2: es posible, pero innecesario aquí y tenga cuidado con los niveles máximos de 3,3 V en todos los pines del MKR.
- No apagar el módem: consume energía y puede perturbar las mediciones;
gsm.shutdownlo deja silencioso. - Consola a 115200 mientras el código usa
Serial.begin(9600): con USB CDC la velocidad de transmisión importa poco, pero mantenga la coherencia.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
attente-lte-nbiot.inoArduinochoix-bande.inoArduinopublish-mqtt-minimal.inoArduinoeconomie-energie.inoArduinogeoloc-cellules.inoArduinotest-coverage.inoArduino