🛠 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

Objectifs

Maîtriser la console série sur le Nano classique : l'unique UART matériel (broches 0/1) passe par le pont USB-série FTDI FT232RL sur les cartes officielles — la puce ATmega328P elle-même n'a pas d'USB natif. On construit une mini-console de commandes et on comprend le piège DTR : l'ouverture du port réinitialise la carte via une capacité de 100 nF, et le bootloader avale les premiers octets émis juste après la connexion.

Matériel

Code complet

// Mini-console série : 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
  }
}

Vérification attendue

Après ouverture du moniteur série à 9600 bauds, le message « Nano prêt » apparaît environ 2 s plus tard : c'est la trace du reset automatique. Les commandes 'l' et 'v' répondent immédiatement. En envoyant du texte AVANT la fin du bootloader, on constate que les octets disparaissent — le piège est observable et documenté.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels