🛠 Télémétrie série robuste vers le Traceur série

Arduino UNO R3 · intermediaire · Schéma : IMG-uno-r3-intermediaire-2-telemetrie-serie-robuste.svg — UNO R3 reliée en USB à un PC, écran affichant des courbes (Traceur série), annotation du quirk DTR de réinitialisation.

Objectifs

Envoyer des données de l'UNO vers le PC proprement : cadencer l'échantillonnage avec micros/millis au lieu de delay, économiser la SRAM avec la macro F, et surtout comprendre le quirk de réinitialisation automatique DTR — l'UNO reset à chaque ouverture du port série et son bootloader « intercepte les premiers octets » envoyés après la connexion.

Matériel

Code complet

// Échantillonnage non bloquant 20 Hz sur A0, format Traceur série.
const uint32_t PERIODE_US = 50000;  // 50 ms = 20 Hz
uint32_t précédent = 0;

void setup {
  Serial.begin(115200);
  while (!Serial) { }   // attend l'ouverture du port (utile sur les cartes USB natives)
  Serial.println(F("pret"));  // F : la chaîne vit en flash, pas en SRAM (2 Ko seulement !)
}

void loop {
  uint32_t maintenant = micros;
  if (maintenant - précédent >= PERIODE_US) {
    précédent = maintenant;
    int a0 = analogRead(A0);
    int a1 = analogRead(A1);
    // Le Traceur série trace une courbe par valeur séparée par tabulation :
    Serial.print(a0); Serial.print("\t"); Serial.println(a1);
  }
  // ... ici on peut faire autre chose : le delay ne bloque plus la boucle.
}

Vérification attendue

Outils > Traceur série : deux courbes continues et régulières, sans trous. Si vous ouvrez le Moniteur, le message « pret » apparaît (la carte vient de re-démarrer — c'est le DTR !). Testez avec un terminal brut : les 2–3 premiers caractères émis juste après l'ouverture peuvent être perdus, et les premiers octets que VOUS envoyez peuvent être avalés par le bootloader.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels