🛠 Console série et piège DTR du FTDI

Arduino Nano (Classic, ATmega328P) · intermediaire · Schéma : IMG-nano-classic-intermediaire-6-nanoc-console-serie-ftdi.svg — Arduino Nano relié en USB au PC, flux série 9600, chronologie de la réinitialisation automatique par DTR qui avale les premiers octets

Objetivos

Dominar la consola serie en el Nano clásico: el único UART de hardware (pines 0/1) pasa por el puente USB-serie FTDI FT232RL en las tarjetas oficiales — el chip ATmega328P en sí no tiene USB nativo. Construimos una mini-consola de comandos y comprendemos la trampa de DTR: la apertura del puerto reinicia la tarjeta mediante un condensador de 100 nF, y el bootloader se traga los primeros bytes emitidos justo después de la conexión.

Material

Código completo

// Mini-console serie : commande 'l' = LED, 'v' = valeur analogique
const uint8_t LED = LED_BUILTIN;

void setup {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  // Patiente ~2 s : laisse passer le reset DTR + bootloader
  uint32_t t0 = millis;
  while (millis - t0 < 2000) { while (Serial.available) Serial.read; }
  Serial.println(F("Nano pret. Tapez l ou v."));
}

void loop {
  if (Serial.available) {
    char c = Serial.read;
    if (c == 'l') { digitalWrite(LED, !digitalRead(LED)); Serial.println(F("LED toggle")); }
    else if (c == 'v') { Serial.println(analogRead(A0)); }
    while (Serial.available) Serial.read;   // vide le reste de la ligne
  }
}

Verificación esperada

Tras abrir el monitor serie a 9600 baudios, el mensaje «Nano listo» aparece aproximadamente 2 s después: es la huella del reinicio automático. Los comandos 'l' y 'v' responden inmediatamente. Al enviar texto ANTES de que termine el bootloader, se observa que los bytes desaparecen — la trampa es observable y está documentada.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales