🛠 Bouton externe et console série sur le Nicla Vision
Objetivos
Leer un botón pulsador externo y mostrar las pulsaciones en una consola serie, para dominar las E/S digitales y el puerto USB CDC del Nicla Vision.
Material
- Arduino Nicla Vision + cable micro-USB
- 1 botón pulsador, 1 resistencia de 10 kΩ (en la práctica, la resistencia pull-up interna es suficiente)
- Cables de conexión; la placa expone 22 pines digitales D0–D21
- >
Código completo
// Nicla Vision : 22 broches numeriques 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);
}
}
}
Verificación esperada
Abrir el monitor serie a 115200 baudios: cada pulsación imprime « pulsación nN ». El botón está conectado entre D0 y GND; sin una resistencia pull-up externa, la resistencia interna de aproximadamente 10 kΩ mantiene D0 en estado alto en reposo. El filtrado antirrebote de 30 ms evita los dobles conteos.
Errores frecuentes
- Botón conectado a 3,3 V sin resistencia hacia masa: cortocircuito al pulsar. Siempre botón → pin → GND con pull-up, o botón → 3,3 V → pin → resistencia → GND.
- Pin reservado: evitar D6/D7 (SS internos), D8–D10 (bus SPI externo), D20–D22 (bus SPI1 interno de la IMU LSM6DSOXTR) y D11/D12 (I²C externo SDA/SCL). D0 a D5 son seguros para este montaje.
- Consola muda: el Nicla Vision utiliza USB CDC; en algunos IDE es necesario marcar la espera del puerto o esperar
while (!Serial);. Verificar también el cable (de datos, no solo de carga). - Conteo aleatorio sin botón: el pin no está configurado como INPUT_PULLUP, por lo que flota.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_rgb.inoArduinoimu_lsm6dsox.inoArduinotof_distance.inoArduinomicro_pdm.inoArduinocamera_capture.inoArduinowifi_scan.inoArduino