Menu
CoddyTech

Angle du servo via le port série

Fait partie de la section Sorties du Journey Arduino de Coddy. Leçon 23 sur 24.

Le bras peut également recevoir des commandes depuis le moniteur série. Saisissez un angle et appuyez sur Entrée ; Serial.parseInt() lit le nombre :

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // le saut de ligne après le nombre
  // utiliser angle
}

Le saut de ligne après le nombre reste en attente. Lors de l’exécution suivante de loop(), parseInt() ne trouverait aucun chiffre, attendrait une seconde et renverrait 0. Ignorer ce 0 fonctionnait pour une vitesse de clignotement, mais 0 est un angle valide. Il faut donc supprimer le saut de ligne avec un seul Serial.read() juste après le nombre.

On peut également saisir un nombre qui ne correspond pas à un angle. arm.write() interprète tout nombre à partir de 544 comme une durée d’impulsion en microsecondes ; 1000 placerait donc le bras près de 45 degrés. constrain() maintient d’abord l’angle entre 0 et 180 :

angle = constrain(angle, 0, 180);  // passe-lui la variable, pas parseInt()
challenge icon

Défi

Moyen

Déplace le servomoteur à l’angle saisi dans le moniteur série :

  • lorsqu’un nombre arrive, lis-le avec Serial.parseInt(), puis lis le caractère de nouvelle ligne (0 est aussi un angle)
  • garde-le entre 0 et 180 avec constrain()
  • déplace le bras et affiche l’angle sous la forme Angle: 45

Appuie sur Run, envoie 45 depuis le moniteur série, puis appuie sur Check.

Essayez vous-même

#include <Servo.h>

Servo arm;

void setup() {
  arm.attach(9);
  arm.write(90);
  Serial.begin(9600);
}

void loop() {
  // lorsqu’un nombre arrive : le lire, puis lire le caractère de fin de ligne pour l’écarter,
  // le maintenir entre 0 et 180, déplacer le bras et afficher le nombre
}
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 Sorties

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