Bonjour Tout le monde.
Je suis debutant en arduino et j'ai à devoir realiser un moteur qui doit fonctionner de la façon suivante: Lorsqu'on appui sur un bouton, le moteur tourne dans un sens et lorsqu'on appui sur l'autre, ca tourne dans le sens inverse. Lorsqu'aucun bouton est pressé, rien ne se passe.
Il y'a deux boutons poussoirs chacune ayant deux broches. La premier est connecte sur D2 et sur le ground. Le second est connecte sur le D3 et le ground. J'utilise un motoshield qui est au dessus de l'Arduino. Je dispose d'une batte de 9v connecte sur le Vin et le ground. Le moteur est sur le M2 du motorshield. Je ne souhaite pas utiliser les résistances externes
Le dispositif fonctionne correctement pour le bouton D2 mais pas pour l'autre. Le moniteur série montre plutôt clairement que les boutons envoient les instructions souhaités. J'Ai tout éssayé mais rien. Pour le deuxième bouton, on vient que ca éssaye de partir mais on dirait que quelque chose bloque. Aidez moi s'il vous plait j'en peux plus tout seul
ci dessous le code
#include <AFMotor.h>
AF_DCMotor motor(2);
// Définition des broches pour les boutons
const int button1 = 3;
const int button2 = 2;
// Variables pour la gestion du rebond
bool etatButton1Precedent = HIGH;
bool etatButton2Precedent = HIGH;
unsigned long dernierTempsButton1 = 0;
unsigned long dernierTempsButton2 = 0;
const unsigned long debounceDelay = 50;
void setup() {
Serial.begin(9600);
Serial.println("Contrôle du moteur avec deux boutons");
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
motor.setSpeed(200); // Vitesse initiale du moteur
motor.run(RELEASE);
}
void loop() {
bool etatButton1Actuel = digitalRead(button1);
bool etatButton2Actuel = digitalRead(button2);
if (etatButton1Actuel == LOW && etatButton1Precedent == HIGH && (millis() - dernierTempsButton1) > debounceDelay) {
dernierTempsButton1 = millis();
Serial.println("Bouton 1 (D3) pressé - Rotation dans le sens horaire");
motor.run(FORWARD);
motor.setSpeed(200);
}
else if (etatButton2Actuel == LOW && etatButton2Precedent == HIGH && (millis() - dernierTempsButton2) > debounceDelay) {
dernierTempsButton2 = millis();
Serial.println("Bouton 2 (D2) pressé - Rotation dans le sens antihoraire");
motor.run(BACKWARD);
motor.setSpeed(200);
}
else if (etatButton1Actuel == HIGH && etatButton2Actuel == HIGH) {
Serial.println("Aucun bouton pressé - Moteur arrêté");
motor.run(RELEASE); // Arrête le moteur
}
etatButton1Precedent = etatButton1Actuel;
etatButton2Precedent = etatButton2Actuel;
delay(100);
}