utilisez writeMicroseconds et trouver précisément la valeur qui arrête bien votre moteur
dans le code de contrôle, définissez une plage autour du point central du joystick (par exemple entre 500 et 524 si le analogRead() du joystick donne 512 au milieu) qui n'utilise pas la valeur renvoyée par map() mais enverra la valeur de repos
val = analogRead(X_pin2);
if ((val > 500) && (val <= 524)) {
myservo1.writeMicroseconds(xxxx); // la valeur d'arrêt de myservo1
} else {
myservo1.write(map(val, 0, 1023, 0, 180));
}
val = analogRead(X_pin);
if ((val > 500) && (val <= 524)) {
myservo2.writeMicroseconds(yyyy); // la valeur d'arrêt de myservo2
} else {
myservo2.write(map(val, 0, 1023, 0, 180));
}
delay(15);
vous faites un petit montage avec un code qui essaye différentes valeurs
éventuellement vous lisez la valeur sur le port série et ça vous permet d'en tester simplement plusieurs
#include <Servo.h>
const byte servoPin = 3;
Servo xServo;
void setup()
{
Serial.begin(115200);
xServo.attach(servoPin);
Serial.println(F("\nréglez le moniteur à 115200 bauds + envoi de NL (new line) uniquement"));
for (int p = 1400; p <= 1600; p++) {
Serial.print("Position = "); Serial.println(p);
xServo.writeMicroseconds(p);
Serial.println(F("\nappuyez sur entrée pour passer à la valeur suivante"));
while (Serial.read() == -1);
}
}
void loop() {}
il faut régler le moniteur série sur 115200 bauds et la fin de ligne juste sur un seul caractère, par exemple "Nouvelle Ligne"
vous connectez le servo à tester sur la pin 3, chargez le code et ouvrez le moniteur série et mettez le curseur dans le champs d'entrée de données
Il ne faut pas alimenter par l’arduino
Vous risquez de tirer trop de courant et endommager la carte ou pas avoir assez de jus dispo. Il faut une alim séparée sans passer par la carte
Sinon la valeur est à injecter dans le code posté précédemment quand le joystick est dans la zone entre 500 et 524
Ça va fournir 500 mA ce qui est OK pour la carte et quelques composants qui ne consomment pas beaucoup.
Un servo même petit (ça dépend lesquels) peut tirer facilement plusieurs centaines de mA surtout s’il doit forcer. Et vous en avez 2
Si Vous avez une vielle alim USB de téléphone portable dispo ou une petit alim 5V 1A qui traîne utilisez cela pour les moteurs
Sinon 4 piles bâtons AA en série de 1.5V peuvent aussi faire l’affaire, elles peuvent fournir plus de courant que la pile 9V dont vous parliez (qui ne convient que pour de l’électronique qui ne nécessite pas bcp de courant comme les détecteurs de fumée) - lisez le tuto de @hbachetti du post 15
D'accord merci et j'ai lus le tuto mais pour revenir au câble USB j'ai fais la même chose mais cela a fait chauffer tout les câble et les servo moteur donc je vais essayer en utilisant des piles en serie