Commande de 2 servos par 2 paire de boutons poussoir

Bonjour a tous, je suis tout nouveau sur ce forum et débutant en programmation.
J’ai un projet de commande à distance pour un moteur électrique de barque.
Pour ce faire j’essai de programmer une carte Arduino pour piloter 2 servos avec 2 x 2 boutons poussoir,j’ai trouvé un programme qui fonctionne très bien mais il ne prend en charge que 1 servo.
J’aurais besoin d’aide pour ce programme.
merci par avance.
Je vous joint le programme que j’ai trouvé:

// Basic servo control
// Servo moves to the left or to the right
// by pressing left or right button 

#include <Servo.h>

// global variables
Servo myservo;
int pos=0; // set initial position
int pinLeft=2; // PIN for left button
int pinRight=3; // PIN for right button
int val=0; // used to read input for the buttons

void setup()
{
  // set PIN for left as an input
  pinMode(pinLeft,INPUT);
  // set PIN for right as an input
  pinMode(pinRight,INPUT);
  // attach the servo
  myservo.attach(9);
  // setup serial to send feedback to the computer
  Serial.begin(9600);
}

void loop()
{
  // check if the left button is pressed
  val=digitalRead(pinLeft);
  // if the left button is pressed and angle > 0 degree
  if((val==LOW)&&(pos>0))
  {
    // send the new position to the serial port
    Serial.print("LEFT - angle :");
    Serial.println(pos);
    // decrease the angle by one degree
    pos-=1; 
  }
  // check if the right button is pressed
  val=digitalRead(pinRight);
  // if the left button is pressed and the angle is < 180 degrees
  if((val==LOW)&&(pos<180))
  {
    // send the new position to the serial port
    Serial.print("RIGHT - angle :");
    Serial.println(pos);
    // increase the angle by one degree
    pos+=1;
  }
  // set the servo to the new angle
  myservo.write(pos);
}

bonjour, sujet déjà évoqué sur le forum.

Servo myservo;
Servo myservo1;

....
....
....
  myservo.attach(9);
  myservo1.attach(10);
...
....
...

  myservo.write(pos);
  myservo1.write(pos);

Désolé mais je n'ai pas trouvé , et je ne sais pas comment faire... Merci

Y a t'il quelqu'un pour m'aider ? j'y comprend rien aux programmes....

je t"ai donné la solution au dessus.

Il manque les 2 boutons pour le deuxième servos et je met quoi a la place des petit point...

moranesolnier:
Il manque les 2 boutons pour le deuxième servos et je met quoi a la place des petit point…

je vais pas faire le code à ta place non plus.
j’ai juste pris des portions de codes pour te montrer la voie, à toi de retrouver où cela a été pris.

Si je vous demande de l’aide c’est que j’y connais rien et ce n’est pas à 55 ans qu’ont peut apprendre la programmation informatique.
Je pensais qu’un forum était dédié à l’entraide, j’ai surement pas bien compris.
Merci quant même.

moranesolnier: Si je vous demande de l'aide c'est que j'y connais rien et ce n'est pas à 55 ans qu'ont peut apprendre la programmation informatique. Je pensais qu'un forum était dédié à l'entraide, j'ai surement pas bien compris. Merci quant même.

j'ai bien commencé le C++ à 48 ans, donc ce n'est pas insurmontable. au contraire, c'est un challenge intellectuel a relever, moi je le prend comme ca.

le forum est là pour aider, tout a fait d'accord, mais pas pour faire le code en entier. il faut chercher aussi un minimum afin de comprendre certaines notions, sinon ca ne sert a rien.

donc tu reprends les lignes que je t'ai mis, tu regardes le code que tu as mis au début, et tu vas trouver là où cela se trouve.

Bonjours, après 2 jours de “bidouille” en suivant tes conseilles j’ai réussi a faire tourner les 2 servos avec les 4 boutons mais les servos tournent toujours ensemble commandé par 2 boutons identique il manque quelque chose pour séparer les 2 servos et les 2x2 boutons.J’ai écrit ça:

// Basic servo control
// Servo moves to the left or to the right
// by pressing left or right button 

#include <Servo.h>

// global variables
Servo myservo;
Servo myservo1;
int pos=0; // set initial position
int pinLeft=2; // PIN for left button
int pinRight=3; // PIN for right button
int pinLeft1=4; // PIN for left button
int pinRight1=5; // PIN for right button
int val=0; // used to read input for the buttons

void setup()
{
  // set PIN for left as an input
  pinMode(pinLeft,INPUT);
  // set PIN for right as an input
  pinMode(pinRight,INPUT);
  // attach the servo
  myservo.attach(9);
  // setup serial to send feedback to the computer
  Serial.begin(9600);

    // set PIN for left as an input
  pinMode(pinLeft1,INPUT);
  // set PIN for right as an input
  pinMode(pinRight1,INPUT);
  // attach the servo
  myservo1.attach(10);
  // setup serial to send feedback to the computer
  Serial.begin(9600);
}

void loop()
{
  // check if the left button is pressed
  val=digitalRead(pinLeft);
  // if the left button is pressed and angle > 0 degree
  if((val==LOW)&&(pos>0))

    // check if the left button is pressed
  val=digitalRead(pinLeft1);
  // if the left button is pressed and angle > 0 degree
  if((val==LOW)&&(pos>0))
  {
    // send the new position to the serial port
    Serial.print("LEFT - angle :");
    Serial.println(pos);
    // decrease the angle by one degree
    pos-=1; 
  }
  // check if the right button is pressed
  val=digitalRead(pinRight);
  // if the left button is pressed and the angle is < 180 degrees
  if((val==LOW)&&(pos<180))

    // check if the right button is pressed
  val=digitalRead(pinRight1);
  // if the left button is pressed and the angle is < 180 degrees
  if((val==LOW)&&(pos<180))
  {
    // send the new position to the serial port
    Serial.print("RIGHT - angle :");
    Serial.println(pos);
    // increase the angle by one degree
    pos+=1;
  }
  // set the servo to the new angle
  myservo.write(pos);
  myservo1.write(pos);
}

Bonjour,

Tu as deux servos, il te faut donc deux positions pos et pos1 avec pinLeft et pinRight tu décrémentes/incrémentes pos avec pinLeft1 et pinRight1 tu décrémentse/incrémentes pos1 puis tu envoies pos à myservo et pos1 àmyservo1

hello
je n’ai pas touché ou corrigé ton code, je l’ai simplement présenté différemment
de façon à le rendre plus facile en lecture

// Basic servo control
// Servo moves to the left or to the right
// by pressing left or right button

#include <Servo.h>

// global variables
Servo myservo;
Servo myservo1;
int pos = 0; // set initial position
int pos1 = 0; // set initial position1
int pinLeft = 2; // PIN for left button
int pinRight = 3; // PIN for right button
int pinLeft1 = 4; // PIN for left button
int pinRight1 = 5; // PIN for right button
int val = 0; // used to read input for the buttons

void setup()
{
  pinMode(pinLeft, INPUT);     // set PIN for left as an input
  pinMode(pinRight, INPUT);    // set PIN for right as an input
  myservo.attach(9);           // attach the servo
  pinMode(pinLeft1, INPUT);    // set PIN for left as an input
  pinMode(pinRight1, INPUT);   // set PIN for right as an input
  myservo1.attach(10);        // attach the servo
  Serial.begin(9600);         // setup serial to send feedback to the computer
}

void loop()
{
  val = digitalRead(pinLeft);        // check if the left button is pressed
  if ((val == LOW) && (pos > 0))      // if the left button is pressed and angle > 0 degree
    val = digitalRead(pinLeft1);        // check if the left button is pressed
  if ((val == LOW) && (pos > 0))     // if the left button is pressed and angle > 0 degree
  {
    Serial.print("LEFT - angle :");  // send the new position to the serial port
    Serial.println(pos);
    pos -= 1;                        // decrease the angle by one degree
  }

  val = digitalRead(pinRight);      // check if the right button is pressed
  if ((val == LOW) && (pos < 180)) // if the left button is pressed and the angle is < 180 degrees
    val = digitalRead(pinRight1);    // check if the right button is presse
  if ((val == LOW) && (pos < 180)) // if the left button is pressed and the angle is < 180 degrees
  {
    Serial.print("RIGHT - angle :");  // send the new position to the serial port
    Serial.println(pos);
    pos += 1;                        // increase the angle by one degree
  }

  myservo.write(pos);               // set the servo to the new angle
  myservo1.write(pos);              // set the servo1 to the new angle
}

Merci pour votre aide j'ai essayé toutes sortes de manip. j'ai toujours les 2 servos qui tournes ensemble . Je pense que je vais abandonner .

C’est pourtant simple
Tu prends le code que tu as écrit au début

 // check if the left button is pressed
  val=digitalRead(pinLeft);
  // if the left button is pressed and angle > 0 degree
  if((val==LOW)&&(pos>0))
  {
    // send the new position to the serial port
    Serial.print("LEFT - angle :");
    Serial.println(pos);
    // decrease the angle by one degree
    pos-=1; 
  }
  // check if the right button is pressed
  val=digitalRead(pinRight);
  // if the left button is pressed and the angle is < 180 degrees
  if((val==LOW)&&(pos<180))
  {
    // send the new position to the serial port
    Serial.print("RIGHT - angle :");
    Serial.println(pos);
    // increase the angle by one degree
    pos+=1;
  }
  // set the servo to the new angle
  myservo.write(pos);

Tu le dupliques en dessous de ce qui existe déjà
dans ce que tu as dupliqué tu remplaces
pinLeft par pinLeft1
pinRight par pinRight1
pos par pos1
et myservo par myservo1

et voilà!

+1, c'est ce que j'ai essayé de te faire comprendre au début. ce n'est pas une question de langage, mais de logique.

moranesolnier: ... et ce n'est pas à 55 ans qu'ont peut apprendre la programmation informatique.

Bonjour ça ce n'est pas une bonne réponse 8) Il y a sur ce forum un Monsieur qui debute la programmation avec arduino et qui frise les 95 printemps ! Mon Papa à moi que j'ai 8) de 82 ans s'y est mis depuis ~ 2 ans

Bonjours,je vous embête… j’ai suivi vos instruction (enfin je crois) et j’ai écris ça:

// Basic servo control
// Servo moves to the left or to the right
// by pressing left or right button 

#include <Servo.h>

// global variables
Servo myservo;
Servo myservo1;
int pos=80; // set initial position
int pos1=80; // set initial position
int pinLeft=2; // PIN for left button
int pinRight=3; // PIN for right button
int pinLeft1=4; // PIN for left button
int pinRight1=5; // PIN for right button
int val=0; // used to read input for the buttons

void setup()
{
  // set PIN for left as an input
  pinMode(pinLeft,INPUT);
  // set PIN for right as an input
  pinMode(pinRight,INPUT);
  // attach the servo
  myservo.attach(9);
  myservo.attach(10);
  // setup serial to send feedback to the computer
  Serial.begin(9600);
}

void loop()
{
  // check if the left button is pressed
  val=digitalRead(pinLeft);
  // if the left button is pressed and angle > 0 degree
  if((val==LOW)&&(pos>0))
  {
    // send the new position to the serial port
    Serial.print("LEFT - angle :");
    Serial.println(pos);
    // decrease the angle by one degree
    pos-=1; 
  }
  // check if the right button is pressed
  val=digitalRead(pinRight);
  // if the left button is pressed and the angle is < 180 degrees
  if((val==LOW)&&(pos<180))
  {
    // send the new position to the serial port
    Serial.print("RIGHT - angle :");
    Serial.println(pos);
    // increase the angle by one degree
    pos+=1;
  }
  // set the servo to the new angle
  myservo.write(pos);

// check if the left button is pressed
  val=digitalRead(pinLeft1);
  // if the left button is pressed and angle > 0 degree
  if((val==LOW)&&(pos>0))
  {
    // send the new position to the serial port
    Serial.print("LEFT - angle :");
    Serial.println(pos1);
    // decrease the angle by one degree
    pos-=1; 
  }
  // check if the right button is pressed
  val=digitalRead(pinRight1);
  // if the left button is pressed and the angle is < 180 degrees
  if((val==LOW)&&(pos<180))
  {
    // send the new position to the serial port
    Serial.print("RIGHT - angle :");
    Serial.println(pos1);
    // increase the angle by one degree
    pos+=1;
  }
  // set the servo to the new angle
  myservo1.write(pos1);
}

mais ça ne marche toujours pas: le servos pin 9 ne fonctionne pas et les 4 boutons font fonctionner le servos pin 10, 2 boutons vers le - et 2 boutons vers le +.

Il y a 4 pos qui n’ont pas étés transformé en pos1 (tu aurais du t’en apercevoir avec le serial.print)
Comme je suis bon, je l’ai fait pour toi. Essaie ça

// Basic servo control
// Servo moves to the left or to the right
// by pressing left or right button 

#include <Servo.h>

// global variables
Servo myservo;
Servo myservo1;
int pos=80; // set initial position
int pos1=80; // set initial position
int pinLeft=2; // PIN for left button
int pinRight=3; // PIN for right button
int pinLeft1=4; // PIN for left button
int pinRight1=5; // PIN for right button
int val=0; // used to read input for the buttons

void setup()
{
  // set PIN for left as an input
  pinMode(pinLeft,INPUT);
  // set PIN for right as an input
  pinMode(pinRight,INPUT);
  // attach the servo
  myservo.attach(9);
  myservo.attach(10);
  // setup serial to send feedback to the computer
  Serial.begin(9600);
}

void loop()
{
  // check if the left button is pressed
  val=digitalRead(pinLeft);
  // if the left button is pressed and angle > 0 degree
  if((val==LOW)&&(pos>0))
  {
    // send the new position to the serial port
    Serial.print("LEFT - angle :");
    Serial.println(pos);
    // decrease the angle by one degree
    pos-=1; 
  }
  // check if the right button is pressed
  val=digitalRead(pinRight);
  // if the left button is pressed and the angle is < 180 degrees
  if((val==LOW)&&(pos<180))
  {
    // send the new position to the serial port
    Serial.print("RIGHT - angle :");
    Serial.println(pos);
    // increase the angle by one degree
    pos+=1;
  }
  // set the servo to the new angle
  myservo.write(pos);

// ----- traitement pour le 2eme servo ----
// check if the left button is pressed
  val=digitalRead(pinLeft1);
  // if the left button is pressed and angle > 0 degree
  if((val==LOW)&&(pos1>0))
  {
    // send the new position to the serial port
    Serial.print("LEFT - angle :");
    Serial.println(pos1);
    // decrease the angle by one degree
    pos1-=1; 
  }
  // check if the right button is pressed
  val=digitalRead(pinRight1);
  // if the left button is pressed and the angle is < 180 degrees
  if((val==LOW)&&(pos1<180))
  {
    // send the new position to the serial port
    Serial.print("RIGHT - angle :");
    Serial.println(pos1);
    // increase the angle by one degree
    pos1+=1;
  }
  // set the servo to the new angle
  myservo1.write(pos1);
}

Merci Kamill , je viens de tester :les boutons Pin 2 et 3 commande le servos pin 10 et le reste ne fonctionne pas, j'ai fais un essai d'inversion des connections des boutons et servo, ça ne viens pas des branchements....

Quand tu appuies sur les boutons pin 4 et 5 l'angle affiché avec le serial.print varie?