coucou
j'ai oublié une petite question ?
sur le programme de jpbbricole , peut on y rajouter un bouton start pour l'anser le programme (donc faire tourner le moteur) ? et stop pour l'arreter .
Tout en gardant l'alime .
Posté 23 janvier 2021 - 08:30
Bonjour Vitctorien
Voilà la version avec boutons marche et arrêt:
/* Name: Vitesse MPAP Auteur: jpbbricole */ #define tempoDepart 2080; int tempo = 0; // Moteur arrete int tempoAccelerer = -500; int tempoRalentir = 700; int tempoAddition = 0; #define driverDirPin 4 #define driverStepPin 5 #define boutonAccelererPin 6 #define boutonRalentirPin 7 #define boutonMarchePin 8 #define boutonArretPin 9 void setup() { pinMode(driverDirPin, OUTPUT); pinMode(driverStepPin, OUTPUT); pinMode(boutonAccelererPin, INPUT_PULLUP); // L'autre cote du bouton au GND pinMode(boutonRalentirPin, INPUT_PULLUP); // " " " pinMode(boutonMarchePin, INPUT_PULLUP); pinMode(boutonArretPin, INPUT_PULLUP); digitalWrite(driverDirPin, LOW); // On met la broche DIR a l'etat bas } void loop() { for (int i = 0; i <= 200; i++) { tempoAddition = 0; if (digitalRead(boutonAccelererPin) == LOW) // Si le bouton accelerer est presse { tempoAddition = tempoAccelerer; } else if (digitalRead(boutonRalentirPin) == LOW) // Si le bouton freiner est presse { tempoAddition = tempoRalentir; } else if (digitalRead(boutonMarchePin) == LOW) // Si le bouton marche est presse { tempo = tempoDepart; } else if (digitalRead(boutonArretPin) == LOW) // Si le bouton arrêt est presse { tempo = 0; } if (tempo > 0) { digitalWrite(driverStepPin, LOW); delayMicroseconds(tempo + tempoAddition); digitalWrite(driverStepPin, HIGH); delayMicroseconds(tempo + tempoAddition); } } }
Et pourquoi pas, avec marche avant et marche arrière?
/* Name: Vitesse MPAP Auteur: jpbbricole https://www.robot-maker.com/forum/topic/13336-gere-la-vitesse-de-mon-moteur-pas-a-pas/ */ #define tempoDepart 2080; int tempo = 0; // Moteur arrete int tempoAccelerer = -500; int tempoRalentir = 700; int tempoAddition = 0; #define driverDirPin 4 #define driverStepPin 5 #define boutonAccelererPin 6 #define boutonRalentirPin 7 #define boutonMarchePin 8 #define boutonArretPin 9 #define boutonAvantPin 10 #define boutonArrierePin 11 void setup() { pinMode(driverDirPin, OUTPUT); pinMode(driverStepPin, OUTPUT); pinMode(boutonAccelererPin, INPUT_PULLUP); // L'autre cote du bouton au GND pinMode(boutonRalentirPin, INPUT_PULLUP); pinMode(boutonMarchePin, INPUT_PULLUP); pinMode(boutonArretPin, INPUT_PULLUP); pinMode(boutonAvantPin, INPUT_PULLUP); pinMode(boutonArrierePin, INPUT_PULLUP); digitalWrite(driverDirPin, LOW); // On met la broche DIR a l'etat bas } void loop() { for (int i = 0; i <= 200; i++) { tempoAddition = 0; if (digitalRead(boutonAccelererPin) == LOW) // Si le bouton accelerer est presse { tempoAddition = tempoAccelerer; } else if (digitalRead(boutonRalentirPin) == LOW) // Si le bouton freiner est presse { tempoAddition = tempoRalentir; } else if (digitalRead(boutonMarchePin) == LOW) // Si le bouton marche est presse { tempo = tempoDepart; } else if (digitalRead(boutonArretPin) == LOW) // Si le bouton arrêt est presse { tempo = 0; } else if (digitalRead(boutonAvantPin) == LOW) // Si le bouton avant est presse { digitalWrite(driverDirPin, LOW); // On met la broche DIR a l'etat bas marche avant } else if (digitalRead(boutonArrierePin) == LOW) // Si le bouton arrière est presse { digitalWrite(driverDirPin, HIGH); // On met la broche DIR a l'etat haut marche arriere } if (tempo > 0) { digitalWrite(driverStepPin, LOW); delayMicroseconds(tempo + tempoAddition); digitalWrite(driverStepPin, HIGH); delayMicroseconds(tempo + tempoAddition); } } }
Je te laisse jouer au jeu des différences, il n'y en a pas beaucoup
Cordialement
jpbbricole
L'expérience est la seule chose qu'il ne faut acheter que d'occasion!
0 members, 1 guests, 0 anonymous users