🛠 Bouton externe et console série sur le Nicla Vision
Objectifs
Lire un bouton poussoir externe et afficher les appuis dans une console série, pour maîtriser les E/S numériques et le port USB CDC du Nicla Vision.
Matériel
- Arduino Nicla Vision + câble micro-USB
- 1 bouton poussoir, 1 résistance 10 kΩ (le pull-up interne suffit en pratique)
- Câbles de raccord ; la carte expose 22 broches numériques D0–D21
- >
Code complet
// Nicla Vision : 22 broches numériques D0-D21, logique 3.3 V
const uint8_t BUTTON = D0;
uint32_t appuis = 0;
uint32_t dernierMs = 0;
void setup {
pinMode(BUTTON, INPUT_PULLUP); // appui = LOW
Serial.begin(115200); // USB CDC (VID 0x2341 / PID 0x025F)
}
void loop {
static bool etatStable = HIGH;
bool lecture = digitalRead(BUTTON);
if (lecture != etatStable && millis - dernierMs > 30) {
etatStable = lecture;
dernierMs = millis;
if (etatStable == LOW) {
appuis++;
Serial.print(F("appui n"));
Serial.println(appuis);
}
}
}
Vérification attendue
Ouvrir le moniteur série à 115200 bauds : chaque appui imprime « appui nN ». Le bouton est câblé entre D0 et GND ; sans pull-up externe, la résistance interne de 10 kΩ environ maintient D0 à l'état haut au repos. Le défilement anti-rebond de 30 ms évite les doubles comptages.
Erreurs fréquentes
- Bouton câblé vers 3,3 V sans résistance vers la masse : court-circuit à l'appui. Toujours bouton → broche → GND avec pull-up, ou bouton → 3,3 V → broche → résistance → GND.
- Broche réservée : éviter D6/D7 (SS internes), D8–D10 (bus SPI externe), D20–D22 (bus SPI1 interne de l'IMU LSM6DSOXTR) et D11/D12 (I²C externe SDA/SCL). D0 à D5 sont sûrs pour ce montage.
- Console muette : le Nicla Vision est en USB CDC ; sur certains IDE il faut cocher l'attente du port ou attendre
while (!Serial);. Vérifier aussi le câble (données, pas charge seule). - Comptage aléatoire sans bouton : broche non configurée en INPUT_PULLUP, elle flotte.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_rgb.inoArduinoimu_lsm6dsox.inoArduinotof_distance.inoArduinomicro_pdm.inoArduinocamera_capture.inoArduinowifi_scan.inoArduino