EDIT : Désolé du dérangement mais j’ai réglé mon problème par moi même, j’avais inversé le GND et l’info de mon servomoteur … Désolé.
Bonjour à tous ! Voilà j’ai un problème avec un programme qui permet de contrôler deux servomoteurs (censé dirigé une caméra sur les x et les y) avec un joystick :
Avec le programme si-dessous, les Y fonctionnent très bien mais le servo en x de bouge jamais (l’initialisation à 90 marche très bien pourtant donc je pense pas que ce soit un problème du servo).
Voilà mon programme :
#include <Servo.h>
const int VrY = 1;
const int VrX = 0;
const int Sw = 3;
int x, y;
int posY = 90;
Servo servoY;
int posX = 90;
Servo servoX;
int posZ = 90;
Servo servoZ;
void setup() {
pinMode(VrY, INPUT);
pinMode(VrX, INPUT);
pinMode(Sw, INPUT);
servoY.attach(6);
servoY.write(posY);
servoX.attach(8);
servoX.write(posX);
servoZ.attach(10);
servoZ.write(posZ);
Serial.begin(9600);
}
void loop() {
x = analogRead(VrX);
y = analogRead(VrY);
x = map(x, 0, 1023, 0, 3);
y = map(y, 0, 1023, 0, 3);
analogRead(x);
analogRead(y);
digitalRead(Sw);
Serial.print("x = ");
Serial.println(x);
Serial.print("y = ");
Serial.println(y);
if (x == 0 && y == 0) {
posX == posX++;
posY == posY--;
servoX.write(posX);
servoY.write(posY);
delay(10);
}
if (x == 1 && y == 0) {
posX == posX++;
servoX.write(posX);
delay(10);
}
if (x == 2 && y == 0) {
posX == posX++;
posY == posY++;
servoX.write(posX);
servoY.write(posY);
delay(10);
}
if (x == 0 && y == 1) {
posY == posY--;
servoY.write(posY);
delay(10);
}
if (x == 2 && y == 1) {
posY == posY++;
servoY.write(posY);
delay(10);
}
if (x == 0 && y == 2) {
posX == posX--;
posY == posY--;
servoX.write(posX);
servoY.write(posY);
delay(10);
}
if (x == 1 && y == 2) {
posX == posX--;
servoX.write(posX);
delay(10);
}
if (x == 2 && y == 2) {
posX == posX--;
posY == posY++;
servoX.write(posX);
servoY.write(posY);
delay(10);
}
if (Sw == 1) {
servoX.write(90);
servoY.write(90);
servoZ.write(90);
}
}
Voilà, merci d’avance pour votre aide