Bonsoir, alors voila, j'ai commancé un programme qui a pour but de suivre une personne, pour cela j'utilise 2 capteurs ultrasons et un servomoteur 360° à rotation continue.
Je tiens à préciser que je ne connais pas grand chose en arduino.
Je rencontre de nombreuses difficulté, tout d'abord j'aimerais bloquer la rotation de mon servomoteur a une certaine valeur d'angle pour qu'il arrete de tourner en continue.
Ensuite, j'aimerais arreter mon servomoteur lorsque les 2 capteurs mesure la même distance, le faire tourner a gauche quand le capteur(1) mesure une plus grande distance que le 2ème capteur et à l'inverse le faire tourner a droite quand le capteur(2) mesure une plus grande distance que le 1er capteur
Si vous connaissez d'autre solution permettant d'ameliorer la fonction suivre une personne à ajouter dans le programme n'hésitez pas.
Merci à vous.
Voici le code que j'ai essayer de faire( le moteur tourne dans un sens mais ne tourne pas dans l'autre et ne s'arrete pas ):
Code:#include <Servo.h> Servo monServo; //declaration de notre servo moteur int positionDuServo = 0; //Servomoteur position souhaité //CAPTEUR 1 int echoPin1 =8; int initPin1 =9; int distance1 =0; //CAPTEUR 2 int echoPin2 =6; int initPin2 =7; int distance2 =0; long pulseTime; void setup() { monServo.attach(9); //Branger sur la broche digital 9(sortie PWM) monServo.write(positionDuServo); //Servo commandé dans sa position initiale pinMode(initPin1, OUTPUT); //emetteur pinMode(echoPin1, INPUT); //recepteur pinMode(initPin2, OUTPUT); pinMode(echoPin2, INPUT); Serial.begin(9600); } void loop() { digitalWrite(initPin1, HIGH); delayMicroseconds(10); digitalWrite(initPin1, LOW); pulseTime = pulseIn(echoPin1, HIGH); int distance1 = pulseTime/58; digitalWrite(initPin2, HIGH); delayMicroseconds(10); digitalWrite(initPin2, LOW); pulseTime = pulseIn(echoPin2, HIGH); int distance2 = pulseTime/58; if (distance1 > distance2) { monServo.write(monServo.read() + 1); delay(5); } if (distance1 < distance2) { monServo.write(monServo.read() - 1); delay(5); } if (distance1 == distance2) { delay(500); } }
-----