Bonjour AC74
Voilà un exemple avec AccelStepper
Le moteur va périodiquement dans un sens puis dans l'autre avec une pause de 10 secondes entre chaque mouvement.
Pendant cette pause le moteur est désactivé:
stepper.disableOutputs(); // Désactiver le moteur
Après la pause, le moteur est réactivé:
stepper.enableOutputs(); // Activer le moteur
Tout se règle ici:
stepper.setEnablePin(enaPin); // Définition de la pin ENA
// DIR STEP ENA
stepper.setPinsInverted(false, false, false);
Si le moteur ne tourne pas dans le bon sens, il faut inverser la booléenne sous DIR et la même chose pour le signal ENA, (ENA false = signal actif à HIGH).
Si le moteur ne tourne pas mais se libère toutes les 10 secondes, il faut inverser le signal ENA qui est, dans le programme ci-dessous, actif à HIGH ainsi:
stepper.setEnablePin(enaPin); // Définition de la pin ENA
// DIR STEP ENA
stepper.setPinsInverted(false, false, true);
Ainsi, le signal ENA est actif à LOW.
Voir schéma post#39.
A toi d'ajuster ces paramètres à ton installation:
const int dirPin = 5;
const int stepPin = 6;
const int enaPin = 7;
Le programme:
/*
Name: Test_MPAPenable.ino
Created: 20.11.2024
Author: jpbbricole
*/
#include <AccelStepper.h> // https://github.com/waspinator/AccelStepper
const int dirPin = 5;
const int stepPin = 6;
const int enaPin = 7;
AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);
void setup()
{
Serial.begin(115200);
stepper.setEnablePin(enaPin); // Définition de la pin ENA
// DIR STEP ENA
stepper.setPinsInverted(false, false, false); // https://www.airspayce.com/mikem/arduino/AccelStepper/classAccelStepper.html#ac62cae590c2f9c303519a3a1c4adc8ab
stepper.enableOutputs(); // Activer le moteur
stepper.setMaxSpeed(800);
stepper.setAcceleration(160);
stepper.moveTo(500);
}
void loop()
{
// If at the end of travel go to the other end
if (stepper.distanceToGo() == 0)
{
Serial.println(F("Stepper STOP"));
stepper.disableOutputs(); // Désactiver le moteur
delay(10000);
Serial.println(F("Stepper START"));
stepper.enableOutputs(); // Activer le moteur
stepper.moveTo(-stepper.currentPosition());
}
stepper.run();
}
A+
Cordialement
jpbbricole