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.
Défi
MoyenLa 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);
}
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
3Entrée série
Lire un caractère sérieCommandes par motsVitesse de clignotement depuis le port sérieClignoter sur commandeEntraînez-vous par vous-même : Playground Arduino