j'ai acheté un kit arduino pour m'amuser mais lorsque je veux utiliser le servomoteur SG90 la carte se met à planter et plus rien ne fonctionne. Je dois appuyer sur le bouton Reset de la carte pour la remettre en marche.
Mon petit projet était de faire bouger ce servo moteur à l'aide d'un Joystick fourni avec le kit, en se basant sur l'axe X du Joystick. Voici le code mis dans la carte :
#include <Servo.h> //bibliothèque des servo moteur
Servo myservo1;
#define servoPin1 9 // signal branché emplacement 9
int RX = A0; // branchement de l'axe X sur l'entrée A0
int valX; // variable de conversion
void setup() {
myservo1.attach(servoPin1); // décalration du servomoteur
Serial.begin(9600);
}
void loop() {
valX = analogRead(RX); // l'ecture axe x
valX = map(valX, 1024, 0, 0, 180); // conversion
myservo1.write(valX); // écriture au servomoteur
delay(15);
}
Le servo moteur et le Joystick sont branché en 5V et la carte et alimenté sur secteur car au départ je pensais que mon Pc fournissais pas assez de courant mais cela n'a pas résolus le problème.
Il faudrait mettre des print pour suivre le déroulement et voir où ça plante. Je connais peu les servos donc il y a peut-être une raison logique qui sera visible pour un expert. Sinon, il faut débuguer : essaye ce code et renvoie ce qui s'affiche dans la console (pas une image, un vrai copier / coller STP)
#include <Servo.h> //bibliothèque des servo moteur
Servo myservo1;
#define servoPin1 9 // signal branché emplacement 9
int RX = A0; // branchement de l'axe X sur l'entrée A0
int valX; // variable de conversion
void setup() {
Serial.begin(9600);
Serial.println("Attach:");
Serial.println(myservo1.attach(servoPin1)); // déclaration du servomoteur
}
void loop() {
valX = analogRead(RX); // lecture axe x
valX = map(valX, 1024, 0, 0, 180); // conversion
Serial.print("Map: ");
Serial.println(valX);
myservo1.write(valX); // écriture au servomoteur
Serial.println("write ok");
delay(15);
}
Malheureusement je n'arrive pas à copier coller les informations du moniteur série.
Donc voici la dernière informations qui est sortie au moment du crash :
Du coter de la console, aucun problème lors de la compilation et du téléversement. Et au moment du crash pas de signalement dans la console non plus.
Je peux préciser aussi que le système fonctionne lorsque je l'utilise de manière très très lente. Mais si je l'utilise de manière normal, il crash instantanément.
J'ai essayé ton programme sur un UNO, alimenté par le port USB sur un PC, le servo SG90 alimenté sur la pin 5V de l'Arduino et tout fonctionne très bien.
Fais une photo en gros plan de ton montage où l'on peut voir les connexions.
Donc très simple, première photo avec le Joystick, de ce coter 0 problème, je reçoit correctement les valeurs que je souhaite.
J'utilise la board pour faire l'alimentation du 5 volts et de la masse.
L'axe X brancher en direct sur A1 et l'axe Y sur A2.
Coter servo moteur, j'alimente via la board sur le fil rouge (+5V) et marron (GND) et le fil orange correspondant au signal relier à l'entrée 9 de ma carte.
Voili Voilou, je pense que niveau câblage je suis bon. Peut être que ma carte à juste un défaut
Pour le câblage, ça me semble ok.
Ce qui pourrai être le problème, est l'alimentation du servo directement par l'alimentation 5V de l'Arduino, certains servo, de qualité moindre peuvent poser problème. Perso, avec mon SG90, ca se passe sans problème.
Le remède est, peut être, ce que préconise @xfpd ici.