Bras robotisé via un pilotage par joystick

Bonjour, bonsoir,

J’aurais besoin d’un petit coup de main sur un projet en cours. Celui-ci consiste a faire marcher un bras robotisé ( le bras braccio ) à l’aide de plusieurs joystick ( deux pour être plus précis ). Pour le moment j’ai réussi avec un seul joystick avec le code ci-dessous :

#include<Servo.h>

Servo servo1;
Servo servo2;

int joyX = 0; 
int joyY = 1;


int joyVal;
void setup() {
  // put your setup code here, to run once:

  servo1.attach(3);
  servo2.attach(5);

}

void loop() {
  // put your main code here, to run repeatedly:

  joyVal = analogRead(joyX);
  joyVal = map ( joyVal, 0, 1023, 0,180);
  servo1.write(joyVal);

   joyVal = analogRead(joyY);
  joyVal = map ( joyVal, 0, 1023, 0,180);
  servo2.write(joyVal);

  
  delay(15);

}

Comment pourrais-je résoudre cela ?

Merci de votre compréhension et votre aide :smiley:

Edite ton message et remets le code que j'ai effacé entre les balise comme indiqué dans les messages épinglés !!

jfs: Edite ton message et remets le code que j'ai effacé entre les balise comme indiqué dans les messages épinglés !!

Désolé, voilà c'est rectifié !

Je suppose que tu utilises un joystick comme celui-ci ? |500x438

A priori aucun problème pour en utiliser 2 : tu dupliques les instructions...

Mais là ce que tu as fait c'est appliquer la consigne du joystick selon l'axe X au servo 1 et celle de l'axe Y au servo 2. Est-ce bien ce que tu cherches à faire ? Avant de coder, il faut bien savoir à quoi servent les joysticks. Chaque joystick doit commander un servo ? Peux-tu en dire plus ? Es-tu sûr d'avoir réellement besoin de joysticks ?

lesept:
Je suppose que tu utilises un joystick comme celui-ci ?

A priori aucun problème pour en utiliser 2 : tu dupliques les instructions…

Mais là ce que tu as fait c’est appliquer la consigne du joystick selon l’axe X au servo 1 et celle de l’axe Y au servo 2. Est-ce bien ce que tu cherches à faire ?
Avant de coder, il faut bien savoir à quoi servent les joysticks. Chaque joystick doit commander un servo ? Peux-tu en dire plus ? Es-tu sûr d’avoir réellement besoin de joysticks ?

Bonjour, tout d’abord merci d’avoir répondu !

Alors oui j’ai exactement ce joystick là ! En effet mon joystick prends les valeurs du servo 1 sur l’axe X et celles du servo 2 sur l’axe Y, et c’est ce que j’attends , et mon but est de prendre un second joystick afin de rajouter 2 autres servo différent et que le principe reste le même pour l’axe X et Y ! De ce fait j’ai dupliqué comme tu l’as dit, mais aucunes valeurs ne sort, même au 1 er joystick qui fonctionne correctement tout seul

Oui j’en ai besoin car je souhaite piloter mon robot ( Robot Braccio ) par le biais de plusieurs joysticks justement

Poste ton code en l'état (et entre balises CODE) afin qu'on puisse voir mieux ce qui ne va pas...

lesept:
Poste ton code en l’état (et entre balises CODE) afin qu’on puisse voir mieux ce qui ne va pas…

Bonjour,

Voici le code que j’ai essayé pour piloter avec deux joysticks :

#include<Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

int joyX = 0; 
int joyY = 1;
int joyW = 2; // ici je suppose que ce soit la sortie analogique A2
int joyV = 3;


int joyVal;
void setup() {
  // put your setup code here, to run once:

  servo1.attach(3);
  servo2.attach(5);
  servo3.attach(6);
  servo4.attach(7);

}

void loop() {
  // put your main code here, to run repeatedly:

  joyVal = analogRead(joyX);
  joyVal = map ( joyVal, 0, 1023, 0,180);
  servo1.write(joyVal);

   joyVal = analogRead(joyY);
  joyVal = map ( joyVal, 0, 1023, 0,180);
  servo2.write(joyVal);

 joyVal = analogRead(joyW);
  joyVal = map ( joyVal, 0, 1023, 0,180);
  servo3.write(joyVal);

joyVal = analogRead(joyV);
  joyVal = map ( joyVal, 0, 1023, 0,180);
  servo4.write(joyVal);
  
  delay(15);

}

Rebonjour, je viens de trouver la faille ( toute bête ),

Il s’agissait en fait, que je renvoyer la même valeur sur les deux joysticks, j’ai donc changer le " joyVal " par " joyVal2 " pour les joystick V et W, et en plaçant une autre batterie à part pour les moteurs ( sachant qu’ils ont besoin d’une certaine puissance ) et qu’avec la même alimentation pour les joysticks le robot a du mal !

Voici le nouveau code ( qui fonctionne :smiley: ) :

#include<Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

int joyX = 0; 
int joyY = 1;
int joyW = 2; // ici je suppose que ce soit la sortie analogique A2
int joyV = 3;


int joyVal;
int joyVal2;
void setup() {
  // put your setup code here, to run once:

  servo1.attach(3);
  servo2.attach(5);
  servo3.attach(10);
  servo4.attach(11);

}

void loop() {
  // put your main code here, to run repeatedly:

  joyVal = analogRead(joyX);
  joyVal = map ( joyVal, 0, 1023, 0,180);
  servo1.write(joyVal);

   joyVal = analogRead(joyY);
  joyVal = map ( joyVal, 0, 1023, 0,180);
  servo2.write(joyVal);

 joyVal2 = analogRead(joyW);
  joyVal2 = map ( joyVal2, 0, 1023, 0,180);
  servo3.write(joyVal2);

joyVal2 = analogRead(joyV);
  joyVal2 = map ( joyVal2, 0, 1023, 0,180);
  servo4.write(joyVal2);
  
  delay(15);

}

Bien cordialement !