#include <Servo.h> // Inclut la library Servo pour manipuler le servomoteur .
Servo servo_moteur; // Créer un objet Servo pour contrôler le servomoteur.

/* Broche pin sur laquelle on branche le fil orange du servomoteur.
A priori, les valeurs possibles sont 9 ou 10. */
byte pin_servo_moteur = 6; 

/* Durée en ms du délay lors de la rotation du servomoteur. Une valeur entre 0 et 10 est raisonnable. */
byte duree_pause = 5; 
 

void setup() {
  servo_moteur.attach(pin_servo_moteur); // Attache le servomoteur à sa broche pin.
  servo_moteur.write(90); // Positionne le servomoteur en position médiane, 90°.
}


void loop() {
  balayage_servo_moteur();  
}

/* Fonction qui contrôle la rotation du servomoteur.
L'argument est l'angle final souhaité : 0° à gauche, 90° au milieu et 180° à droite*/
void rotation_servo_moteur(int angle_final) {
  int angle_initial = servo_moteur.read(); // Position actuelle du servomoteur.
    if (angle_final < angle_initial) { // Rotation vers la gauche. 
    for (int angle = angle_initial; angle >= angle_final; angle --) {
      delay(duree_pause);
      servo_moteur.write(angle);
    }        
  }
  if (angle_final > angle_initial) { // Rotation vers la droite. 
    for (int angle = angle_initial; angle <= angle_final; angle ++) {
      delay(duree_pause);
      servo_moteur.write(angle);
    }        
  }  
}

/* Fonction qui fait tourner le servomoteur à gauche, à droite, puis le remet au centre */
void balayage_servo_moteur() {
  rotation_servo_moteur(5);
  delay(1000);
  rotation_servo_moteur(175);
  delay(1000);
  rotation_servo_moteur(90);
  delay(1000);
}
