Programme boutons poussoirs et moteur CC

Bonjour,

je suis débutant en Arduino et j'essaye de réaliser un projet où il faudrait que mon moteur adopte des vitesses différentes selon les boutons poussoirs appuyés. Les BP sont reliés à une Arduino Uno en utilisant la résistance Pullup interne et j'utilise DualVNH5019MotorShield pour le moteur. Pour éviter les appuis accidentels sur les BP, il faudra appuyer sur plusieurs boutons pour donner l'ordre de vitesse.

J'ai fait le programme suivant :

#include <DualVNH5019MotorShield.h>

const int pinBoutonARG = 3;
const int pinBoutonARD = 5;
const int pinBoutonAVG = 11;
const int pinBoutonAVD = 13;

DualVNH5019MotorShield md;

void stopIfFault()
{
if (md.getM1Fault())
{
Serial.println("M1 fault");
while(1);
}

}

void setup()
{
Serial.begin(9600);
Serial.println("Dual VNH5019 Motor Shield");
md.init();
pinMode (3,INPUT_PULLUP);
pinMode (5,INPUT_PULLUP);
pinMode (11,INPUT_PULLUP);
pinMode (13,INPUT_PULLUP);

}

void loop() {

if (digitalRead(3) == LOW && digitalRead(5) == LOW);
{for (int i = 100; i >= -400; i--)
{ md.setM1Speed(i);
stopIfFault();
if (i%200 == 100)
{ Serial.print("M1 current: ");
Serial.println(md.getM1CurrentMilliamps());
}
}
}

if(digitalRead(11) == LOW && digitalRead(13) == LOW);
{for (int i = 200; i >= -400; i--)
{ md.setM1Speed(i);
stopIfFault();
if (i%200 == 100)
{ Serial.print("M1 current: ");
Serial.println(md.getM1CurrentMilliamps());
}
}
}

if(digitalRead(3) == LOW && digitalRead(5) == LOW && digitalRead(11) == LOW && digitalRead(13) == LOW);
{for (int i = 400; i >= -400; i--)
{ md.setM1Speed(i);
stopIfFault();
if (i%200 == 100)
{ Serial.print("M1 current: ");
Serial.println(md.getM1CurrentMilliamps());
}
}
}

if(digitalRead(3) == HIGH && digitalRead(5) == HIGH && digitalRead(11) == HIGH && digitalRead(13) == HIGH);
{for (int i = 0; i >= -400; i--)
{ md.setM1Speed(i);
stopIfFault();
if (i%200 == 100)
{ Serial.print("M1 current: ");
Serial.println(md.getM1CurrentMilliamps());
}
}
}
}

Mais mon moteur tourne en continu sans tenir compte des boutons.
Quelqu'un peut-il m'indiquer où sont les erreurs?
Merci d'avance.

bonjour,
code entre balise code </>

tu mets un ; à chaque if

if (digitalRead(3) == LOW && digitalRead(5) == LOW);

au lieu de

if (digitalRead(3) == LOW && digitalRead(5) == LOW)

idem

if(digitalRead(3) == LOW && digitalRead(5) == LOW && digitalRead(11) == LOW && digitalRead(13) == LOW);
if(digitalRead(3) == HIGH && digitalRead(5) == HIGH && digitalRead(11) == HIGH && digitalRead(13) == HIGH);

Merci pour ta réponse. J'ai modifié le programme et effectivement maintenant la vitesse varie en fonction des boutons appuyés :slight_smile:
Mais lorsqu'il n'y a aucun BP appuyé, le moteur tourne quand même alors qu'il devrait être arrêté. Comment résoudre ce problème?