Servomoteurs

Bonjour à tous,

je dispose de ce code et j'aimerais savoir comment faire pour que la position initiale des servomoteurs soit de 90°, (sans que ce soit la position minimale ni maximale car le servomoteur doit pouvoir s'incliner à 30° ou 160 par exemple).

#include <Servo.h> // librairie arduino pour servomoteur

const int POS_MIN=550; // mise a zero pour le servomoteur 1 position minimale
const int POS_MAX=2330; // position maximale servomoteur 1
const int POS_MIN_2=550; // mise a zero pour le servomoteur 2 position minimale
const int POS_MAX_2=2330; // position maximale servomoteur 2

int angle_servo=0; //angle pour position minimale 1
int angle_servo_2=0; //angle pour position minimale 2

const int broche_servo=3; //broche selon branchement (3)pour le servo 1
const int Voie_0_2=0; //constante pour passage en analogique servo 1
const int broche_servo_2=5; //broche selon branchement (5)pour le servo 2
const int Voie_0_2=0; //constante pour passage en analogique servo 2

int mesure_brute=0;// résultat brut servo 1
float mesuref=0.0;// résultat décimal servo 1
int mesure_brute_2=0;// résultat brut servo 2
float mesuref_2=0.0;// résultat décimal servo 2

Servo mon_servo;  // pour le control du servomoteur 1
Servo mon_servo_2;  // pour le control du servomoteur 2



void setup()   { // debut de la fonction setup()



mon_servo.attach(broche_servo, POS_MIN, POS_MAX);  // broche commande servo 1
mon_servo_2.attach(broche_servo_2, POS_MIN_2, POS_MAX_2);  // broche commande servo 2


pinMode(broche_servo, OUTPUT); //met la broche en sortie  pour le servo 1
pinMode(broche_servo_2, OUTPUT); //met la broche en sortie pour le servo 2 
}
void loop(){ // fonction loop() sans fin

// acquisition conversion analogique numérique 
//sur broche analogique indiquée - résultat 10bits (0-1023) 

mesure_brute=analogRead(Voie_0); // pour le servo 1
mesure_brute_2=analogRead(Voie_0_2); // pour le servo 2

angle_servo=map(mesure_brute,0,1023,0,180);  // conversion  en angle ° pour le servo 1
angle_servo_2=map(mesure_brute_2,0,1023,0,180);  // conversion  en angle ° pour le servo 2

mon_servo.write(angle_servo); // positionne le servo à l'angle voulu pour le servo 1
mon_servo_2.write(angle_servo_2); // positionne le servo à l'angle voulu pour le servo 2

delay (y); // pause entre 2 mesures et modif position servomoteur
}

J'aimerai que le servomoteur se mette en position initiale avant de se mettre à l'angle voulu et après le delay, se remette en position initiale.

Merci à vous

Allez réfléchis un peu.....

deux pistes:

  • ce qui touche l'initialisation doit être placé dans setup().
  • dans ton programme tu calcules un angle que tu bornes entre 0 et 180 et tu t'en sers pour positionner le servo. La variable est d'ailleurs assez explicite.

un lien qui peu t'aider : http://arduinoprojects101.com/arduino-servo-basic/ :wink:

Bonjour,

Voila de quoi te donner un exemple d'application de Servo :