🛠 Bouton et console USB
Objectifs
Lire un bouton poussoir et afficher les appuis sur la console série USB. Comprendre que le MKR NB 1500 possède un USB natif (pas de puce FTDI) : Serial est le port USB CDC, et la logique GPIO est en 3,3 V.
Matériel
- 1 carte MKR NB 1500 + câble micro-USB data
- 1 bouton poussoir
- 1 fil de connexion (broche D2 → bouton, autre patte → GND) ; la résistance interne
INPUT_PULLUPévite toute résistance externe
Code complet
// 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'entrée 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 réseau 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
}
Vérification attendue
Ouvrez la console série (9600 bauds) après le téléversement : « Bouton appuyé » / « Bouton relâché » s'affichent à chaque appui. Aucun composant supplémentaire n'est requis grâce à la résistance de pull-up interne.
Erreurs fréquentes
- Oublier
while (!Serial);: sur USB natif, les premiersSerial.printpartent avant l'ouverture du port et semblent « perdus ». - Câbler le bouton vers 5 V avec résistance externe vers D2 : possible, mais inutile ici et attention aux niveaux 3,3 V max sur toutes les broches MKR.
- Ne pas éteindre le modem : il consomme et peut perturber les mesures ;
gsm.shutdownle rend silencieux. - Console à 115200 alors que le code fait
Serial.begin(9600): avec l'USB CDC le débit importe peu, mais gardez la cohérence.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
attente-lte-nbiot.inoArduinochoix-bande.inoArduinopublish-mqtt-minimal.inoArduinoeconomie-energie.inoArduinogeoloc-cellules.inoArduinotest-coverage.inoArduino