Hello everyone
I have a DC motor powered by a joystick connected to a motor shield Arduino. I have two switch buttons which operate as a limit switch. I want to go back the other way with my engine so I want to ensure that when the push button is pressed more than 3 seconds it does not block the motor and the joystick.
Here is my current code base (without joystick)
thank you
[code] const byte PIN_VITESSE_MOTEUR_A = 3;
const byte PIN_SENS_MOTEUR_A = 12;
const byte PIN_FREIN_MOTEUR_A = 9;
const byte PIN_VITESSE_MOTEUR_B = 11;
const byte PIN_SENS_MOTEUR_B = 13;
const byte PIN_FREIN_MOTEUR_B = 8;
const int buttonPin_1 = 6; // crée un identifiant pour la broche utilisée avec le bouton poussoir
const int buttonPin_2 = 7; // crée un identifiant pour la broche utilisée avec le bouton poussoir
// Les variables sont modifiées au cours du programme
int buttonState_1 = 0; //Variable pour l’état actuel du bouton poussoir
int buttonState_2 = 0; //Variable pour l’état actuel du bouton poussoir
void setup() {
Serial.begin(115200);
pinMode(PIN_VITESSE_MOTEUR_A, OUTPUT);
digitalWrite(PIN_VITESSE_MOTEUR_A, LOW);
pinMode(PIN_VITESSE_MOTEUR_B, OUTPUT);
digitalWrite(PIN_VITESSE_MOTEUR_B, LOW);
pinMode(PIN_SENS_MOTEUR_A, OUTPUT);
digitalWrite(PIN_SENS_MOTEUR_A, LOW);
pinMode(PIN_SENS_MOTEUR_B, OUTPUT);
digitalWrite(PIN_SENS_MOTEUR_B, LOW);
pinMode(PIN_FREIN_MOTEUR_A, OUTPUT);
digitalWrite(PIN_FREIN_MOTEUR_A, LOW);
pinMode(PIN_FREIN_MOTEUR_B, OUTPUT);
digitalWrite(PIN_FREIN_MOTEUR_B, LOW);
pinMode(buttonPin_1, INPUT);
pinMode(buttonPin_2, INPUT);
// On initialise en général les OUTPUT au moment du pinmode pour éviter d’avoir deux blocs de
// code séparé pour une même série de broches.
// On se rend alors compte qu’ici la broche PIN_FREIN_MOTEUR_A n’a pas de valeur par défaut au setup() par exemple.
} // met la broche en entrée
void loop() {
// lit l’état actuel du bouton poussoir et le mémorise dans la variable
buttonState_1 = digitalRead(buttonPin_1);
buttonState_2 = digitalRead(buttonPin_2);
if (buttonState_1 == HIGH || buttonState_2 == HIGH) {
// Si le bouton est actif les moteurs sont éteints
digitalWrite(PIN_FREIN_MOTEUR_A, HIGH);
digitalWrite(PIN_FREIN_MOTEUR_B, HIGH);
}
else { // Sinon, si le bouton n’est pas actif
// Si la valeur X est strictement supérieur à 700 le moteur A avance
digitalWrite(PIN_VITESSE_MOTEUR_A, HIGH);
digitalWrite(PIN_SENS_MOTEUR_A, HIGH);
} }[/code]