La carte Uno plante lors de son utilisation

Bonjour,

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.

Merci d'avance pour vos propositions :wink:

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

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 :


(Avec les 0 de "094" qui s'affiche sans fin)

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.

Bonsoir theemperor

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.

A+
Cordialement
jpbbricole

Bonsoir,

Désolé pour la qualité des photos donc je vais détaillés d'avantages pour comprendre où vont les fils.


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 :thinking:

Bonsoir theemperor

C'est pas A0 et A1?

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.

Cordialement
jpbbricole

Effectivement je me suis trompé lors de l'explication, c'est bien A0 et A1.

Ensuite, je pense que je suivrait ton conseil à l'avenir car il vient d'avoir un court circuit ma carte qui la rendue HS :sweat_smile:

( - Brancher sur secteur : tous les voyants clignotent

  • A mon Pc : le micro processeur chauffe instantanément et +20s ça sent le brûler et je n'arrive plus à communiquer avec la carte :sweat_smile: )

Merci pour ta réponse, je retenterais l'expérience avec du nouveau matériel :+1:

Joli progrés sur les avantages et inconvénients du partage du 5V, ça change du "si ça ne marchait pas, cela se saurait".

Il faut comparer ce qui est comparable et surtout ne pas tout mélanger!

N'est-il pas écrit justement que vous utilisez tous les 2 le même servo moteur alimenté de la même façon?

Chez l'un, ça marche, et chez l'autre non, c'est donc une méthode d'alimentation trop critique et à éviter par principe de précaution je pense.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.