Bonjours je suis nouveau dans l'arduino et donc sur ce forum.
J'ai pour projet de diriger un robot a l'aide d'un joystick, donc je commance par tester le joystic.
J'utilise donc ce programme qui me donne la valeur de X, Y et du bouton (le joystick utilisé est un thumb joystick) mais au lieu d'avoir une valeur de 512 quand le joystick est innactif elle est de 24 est quand je bouge le joystick elle varie de 22 a 28.
Après plusieurs recherche je ne comprend toujours pas.
Merci de vos futur réponse
int xPin = A1;
int yPin = A0;
int buttonPin = 2;
int xPosition = 0;
int yPosition = 0;
int buttonState = 0;
DTS15:
J'utilise donc ce programme qui me donne la valeur de X, Y et du bouton (le joystick utilisé est un thumb joystick) mais au lieu d'avoir une valeur de 512 quand le joystick est innactif elle est de 24 est quand je bouge le joystick elle varie de 22 a 28.
sinon lire de manière très rapproché 2 pins analogiques peut donner un résultat erroné à cause du temps de charge du condensateur lié à convertisseur numérique. pas plus mal de lire 2 fois pour être sûr surtout si les valeurs peuvent être très différentes et en fonction de l’impédance associée
Certains joystick ont de bien piètres caractéristiques dynamique et mécanique
Généralement un potentiomètre rotatif utilise une course d'environ 3/4 de tour, soit 270°
Sur ce genre de joystick, le montage mécanique ne permet pas d'utiliser la totalité de la course du potentiomètre.
A partir de la position centrale du joystick, un mouvement a fond vers +X ou à fond vers -X ne représente qu'environ +- 10°
Donc il est impossible, avec analogRead, d'obtenir des valeurs proche de 1023 ou 0
Il faut faire un calibrage en lisant la valeur max quand le joystick est a fond d'un côté, de même pour la valeur min quand il est a fond de l'autre côté.
C'est à partir de ces valeurs min et max que tu pourras déterminer la position du joystick
A faire, evidemment pour l'axe X et Y
Mais certains joysticks sont équipés avec des potentiomètres logarithmiques, de ce fait, la mesure n'est pas linéaire en fonction de la course.
Ce qui rend le calcul de position un peu plus complexe
Alors apres le test j'en est déduis que c'est le motor Shield qui me le mettais a 24.
Maintenant sans le motor Shield quand le joystick est "neutre" la valeur est la bonne mais quand je bouge le joystick il ne va pas jusqu'à 0 ou 1023 mais jusqu'à 220 et 750.
Demain je demanderais a mon professeur et je vous tiendrais au courant
Maintenant sans le motor Shield quand le joystick est "neutre" la valeur est la bonne mais quand je bouge le joystick il ne va pas jusqu'à 0 ou 1023 mais jusqu'à 220 et 750.
OK ça paraît bcp plus réaliste.
Si vous avez un Motor Shield de branché sur votre Arduino UNO, alors ce shield utiles les pins D3, D8, D9, D11, D12, D13 et A0 et A1 ---> Vous ne pouvez donc pas utiliser ces 2 pins analogiques pour votre joystick! il faut les brancher ailleurs, par exemple A2 et A3
De plus si vous lisez la doc
On each channel will be a voltage proportional to the measured current, which can be read as a normal analog input, through the function analogRead() on the analog input A0 and A1. For your convenience it is calibrated to be 3.3V when the channel is delivering its maximum possible current, that is 2A.
ils disent donc que l'info envoyée est sur ces pins (pour mesurer le courant consommé par le shield) sera entre 0 et 3.3V
Coucou,
Avec les enfants du club, nous pilotons tous les ans le robot avec un joystick Arduino et cela fonctionne très bien.
On utilise une carte uno, une shield moteur adafruit et un joystick
pour le programme : La Fabrique : Joystick Arduino