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, 0 guests, 0 anonymous users