Bonjour, nous sommes au lycée et avons un projet à faire.
Nous voulons faire marcher 2 boutons et un pont en H pour changer le sens de nos 2 moteurs. Cependant, notre programme(fait sur Tikercad) ne marche pas: nous n'arrivons pas à connecter notre 2eme bouton et les moteurs marchent tous seuls.
De plus nous ne savons pas si nous avons fait les connections filaires correctement.
Pouvez-vous nous aider svp?
Merci
(PS: on a aussi demandé sur le forum anglais/international)
Ci-joint notre lien vers le circuit Tikercad : Circuit design 2 moteur + bouton + peh +capteur | Tinkercad
Et voici le programme :
//Connection bouton
const int bouton = 1;
int etatBouton;
//Connection capteur distance
int sinal=6;
float distance;
// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;
void setup() {
// Set up du capteur
Serial.begin(9600); //on sait pas
pinMode(sinal,OUTPUT);
digitalWrite(sinal,LOW);
// Set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// Turn off motors - Initial state
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop() {
directionControl();
delay(1000);
etatBouton = digitalRead(bouton); //lire état bouton
read(); //lire la distance
distance=distance/2;
distance=distance*0.034029;
Serial.println(distance);
delay(100);
}
// This function lets you control spinning direction of motors
void directionControl() {
// Set motors to maximum speed
// For PWM maximum possible values are 0 to 255
analogWrite(enA, 255);
analogWrite(enB, 255);
//Conditions moteurs
if(distance<100 && etatBouton == 1){ //bouton pas appuyé
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW); // les moteurs ne tournent pas
}
else if (distance>100 && etatBouton == 1){ // bouton pas appuyé
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW); // Le moteur ne tourne pas
}
else if (distance<100 && etatBouton == 0){ // bouton appuyé
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW); // Le moteur ne tourne pas
}
else if (distance>100 && etatBouton == 0){ // bouton appuyé
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW); // Le moteur tourne
}
else{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW); // Le moteur s'arrête de tourner
}
}
void read(){
pinMode(sinal,OUTPUT);
digitalWrite(sinal,HIGH);
delayMicroseconds(5);
digitalWrite(sinal, LOW);
pinMode(sinal,INPUT);
distance=pulseIn(sinal,HIGH);
}