Go Down

Topic: Servomoteurs (Read 626 times) previous topic - next topic

edwinre

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).

Code: [Select]
#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

fdufnews

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.


skywodd

Bonjour,

Voila de quoi te donner un exemple d'application de Servo :
http://arduino.cc/en/Tutorial/Sweep
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy