Menu
CoddyTech

Vitesse de clignotement depuis le port série

Fait partie de la section Entrées du Journey Arduino de Coddy. Leçon 17 sur 22.

Saisis 250 et la carte reçoit trois caractères, '2', '5' et '0', puis le caractère de nouvelle ligne. Serial.parseInt() lit les chiffres et les convertit en nombre 250, en s’arrêtant au premier caractère qui n’est pas un chiffre.

Il y a toutefois un piège : si aucun chiffre n’arrive, parseInt() attend jusqu’à 1 seconde, puis renvoie 0. Cela se produit après chaque nombre que tu saisis : le caractère de nouvelle ligne qui terminait le nombre est toujours en attente, donc Serial.available() est à nouveau supérieur à 0, et parseInt() ne trouve aucun chiffre, attend une seconde et renvoie 0.

Considère donc un 0 comme « rien d’utile » et conserve l’ancienne valeur :

if (Serial.available() > 0) {
  int n = Serial.parseInt();
  if (n > 0) {
    wait = n;
  }
}

Tu verras la LED faire une pause d’une seconde après chaque nombre saisi : c’est parseInt() qui attend.

challenge icon

Défi

Moyen

La LED sur la broche 13 clignote, allumée pendant wait ms et éteinte pendant wait ms, avec wait initialisé à 500. Permets au moniteur série de modifier la vitesse :

  • lorsque des caractères sont en attente, lis un nombre avec Serial.parseInt()
  • s'il est supérieur à 0, stocke-le dans wait

Appuie sur Run, envoie 100 depuis le moniteur série, puis clique sur Check.

Essayez vous-même

const int ledPin = 13;

int wait = 500;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // lorsque des caractères sont en attente, lire un nombre dans wait (s’il est supérieur à 0)
  digitalWrite(ledPin, HIGH);
  delay(wait);
  digitalWrite(ledPin, LOW);
  delay(wait);
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Entrées

Entraînez-vous par vous-même : Playground Arduino