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.