Press "Enter" to skip to content

Servo-moteur et serial monitor / Arduino

Définir l’angle d’un servo-moteur via le moniteur série.

– Servo moteur alimenté en 5v (rouge->5v / noir->Grd)
– Commande sur pin digital 9 (jaune->PWM 9)

// Bibliotheque de contrôle de servomoteur
#include servo.h;
//Declaration de la variable "servoMotor" comme servomoteur
Servo servoMotor;
// Valeurs de traitement de l'angle
int servoAngle = 0;
int angleNew = 0;
int servoSpeed = 1;
String readSerial;

void setup() {
  Serial.begin(9600);  // Initialisation port d'echange moniteur
  servoMotor.attach(9);  // Initialisation port du servomoteur 
  servoMotor.write(0);  // Initialisation de l'angle du servomoteur a 0°
}

void servoTurn(){
  //simple rotation
  servoMotor.write(angleNew);
  delay(200);
  Serial.print("servo Angle: ");
  Serial.println(angleNew);
  //rotation avec vitesse
  //l'angle effectif sera fonction du pas que represente la vitesse.
  /*if(servoAngle >= angleNew){
    for(servoAngle = servoAngle; servoAngle >= angleNew + servoSpeed; servoAngle -= servoSpeed){
      servoMotor.write(servoAngle);
      delay(20);
     }
   }else{
     for(servoAngle = servoAngle; servoAngle <= angleNew - servoSpeed; servoAngle += servoSpeed){
       servoMotor.write(servoAngle);
       delay(20);
     }
   }

   Serial.print("servo Angle: ");
   Serial.println(servoAngle);
   servoAngle = angleNew;*/
}

void loop(){
  //ecoute du moniteur serie
  while (Serial.available()) {
    // Recuperation de la valeur de l'angle
    char serialChar = Serial.read();
    //concatenation des caracteres reçus
    readSerial += serialChar;
    delay(2);
  }

  if (readSerial.length() >0) {
    Serial.print("angle choose: ");
    Serial.println(readSerial);
    //convertion des caracteres en entier
    angleNew = readSerial.toInt();
    //remise a zero de la valeur de recuperation
    readSerial = "";
    //lancement de la fonction servoTurn
    servoTurn();
  }
}

Comments are closed.