Déplacement Latéral Fauteuil roulant motorisé

Bonjour ou bonsoir,

Ce programme est le fruit d’un projet de Terminale où le but est de contrôler à l’aide d’un joystick un fauteuil roulant possédant deux roues motorisés et orientables (+ une roue folle mais on s’en fout dans le programme). Ces deux roues sont commandées par des moteurs à courant continu pour avancer et reculer tandis que l’orientation est supervisée par deux servos moteurs. Notre joystick est un extreme 3d pro de chez logitech et on a donc repris l’axe X pour gauche droite, Y pour haut bas et Z pour tourner sur soi même. Vous verrez les variables sont définies par rapport à ces axes.

Ce qui pose problème aujourd’hui c’est le fait de se déplacer latéralement dont le programme commence de la ligne 89 à 110 environ. Cette partie en fait fait en sorte de mettre les servos moteurs à 0° (pour la gauche) et 180 ° lorsque le joystick est bien orienté. Si cette condition est remplie la vitesse des moteurs variera en fonction de la position sur l’axe X. Sinon on bascule sur le programme normal que si on revient à 90° pour les servos. Pour ce dernier tout est bon…normalement.

Par contre pour la partie en question l’erreur se fait lignes 97 et 103 ou l’on me marque comme erreur: could not convert ‘ServoRoue1.Servo::write(0)’ from ‘void’ to ‘bool’. Je voudrais juste une solution pour ce déplacement latéral si vous voyez à peu près ce que je veux dire.

Merci d’avance de votre aide

Projet_final_good.ino (3.3 KB)

The compiler is telling you that servo.write is a void function, i.e. it doesn't return anything so you can't try to use that non-existent return value in an if statement.

Thank you for you reply but I don't precisely the main problem... Could you just give me a solution, it will be the best for me to understand.

*don't understand precisely

I just want to put the servo to 180 degrees when posX is over 100 and to 0 degrees when posX is under 80. In a same time posY should be between -10 and 10...

Your problem is here:

  if ((ServoRoue1.write(0)) && (ServoRoue2.write(0)))
  {
    Motor.speed(MOTOR1, posX);
    Motor.speed(MOTOR2, posX);
  }

I'm not clear what you're trying to do - did you mean read rather than write?