Bonsoir
Voici mon nouveau montage:
Avec ce nouveau montage, j'ai essayer les trois codes suivants mais à chaque fois que j'appuie sur le bouton, le moteur ne faisait que tourner d'un petit pas au lieu de tourner du nombre de pas dans le programme, pas du tout ou en faisant capricieusement plusieurs tours.
#include "AccelStepper.h" // https://www.pjrc.com/teensy/td_libs_AccelStepper.html
int boutonPin = 3;
const int boutonPinEtatOn = LOW; // Etat lu du bouton quand pressé (LOW pour PULL_UP)
const int mpapDirPin = 5; // Pour driver MPAP pin pas
const int mpapStepPin = 6; // Pour driver MPAP pin direction
// Facultatif si pin ENABLE est en l'air
const int mpapEnaPin = 7; // Pour driver MPAP pin ENABLE
AccelStepper mpap1(1, mpapStepPin, mpapDirPin); // 1 pour A4988
int mpapNombreDePasAtourner = 10000;
void setup()
{
mpap1.setMaxSpeed(400);
mpap1.setAcceleration(500);
pinMode(boutonPin, INPUT_PULLUP);
mpap1.setEnablePin(mpapEnaPin);
// DIR STEP ENA
mpap1.setPinsInverted(false, false, true);
mpap1.enableOutputs(); // Activer les signaux du MPAP
}
void loop()
{
boolean etatBouton=digitalRead(boutonPin);
if (etatBouton == boutonPinEtatOn)
{
mpap1.move(mpapNombreDePasAtourner);
}
mpap1.run();
}
#include "AccelStepper.h"
#include "MTstepStepper.h"
int boutonPin = 3;
const int boutonPinEtatOn = LOW; // Etat lu du bouton quand pressé (LOW pour PULL_UP)
const int mpapDirPin = 5; // Pour driver MPAP pin pas
const int mpapStepPin = 6; // Pour driver MPAP pin direction
// Facultatif si pin ENABLE est en l'air
const int mpapEnaPin = 7; // Pour driver MPAP pin ENABLE
MTstepStepper mpap1(pin_Step 3, pin_Dir 4, pin_EN NON_CONNECTEE, 0.31 micro_pas, 1.0 RPS);
int mpapNombreDePasAtourner = 10000;
void setup()
{
mpap1.setMaxSpeed(400);
mpap1.setAcceleration(500);
pinMode(boutonPin, INPUT_PULLUP);
mpap1.setEnablePin(mpapEnaPin);
// DIR STEP ENA
mpap1.setPinsInverted(false, false, true);
mpap1.enableOutputs(); // Activer les signaux du MPAP
}
void loop()
{
boolean etatBouton=digitalRead(boutonPin);
if (etatBouton == boutonPinEtatOn)
{
mpap1.move(mpapNombreDePasAtourner);
}
mpap1.run();
}
const int stepPin = 6;
const int dirPin = 5;
int boutonPin = 3;
const int boutonPinEtatOn = LOW;
const int stepsPerRev=200;
int pulseWidthMicros = 100; // microseconds
int millisBtwnSteps = 1000;
void setup() {
Serial.begin(9600);
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
pinMode(boutonPin, INPUT_PULLUP);
Serial.println(F("A4988 Initialized"));
}
void loop() {
boolean etatBouton=digitalRead(boutonPin);
if (etatBouton == boutonPinEtatOn){
Serial.println(F("Running clockwise"));
digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
// Makes 200 pulses for making one full cycle rotation
for (int i = 0; i < stepsPerRev; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delayMicroseconds(millisBtwnSteps);
}
delay(1000); // One second delay
}
}
J'ai ensuite tester le programme suivant qui fait tourner deux fois le moteur dans le sens inverse des aiguilles d'une montre et une fois dans le sens des aiguilles d'une montre pour vérifier si mes moteurs fonctionnent bien, ce qui s'est avéré être le cas.
const int stepPin = 6;
const int dirPin = 5;
const int stepsPerRev=200;
int pulseWidthMicros = 100; // microseconds
int millisBtwnSteps = 1000;
void setup() {
Serial.begin(9600);
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
Serial.println(F("A4988 Initialized"));
}
void loop() {
Serial.println(F("Running clockwise"));
digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
// Makes 200 pulses for making one full cycle rotation
for (int i = 0; i < stepsPerRev; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delayMicroseconds(millisBtwnSteps);
}
delay(1000); // One second delay
Serial.println(F("Running counter-clockwise"));
digitalWrite(dirPin, LOW); //Changes the rotations direction
// Makes 400 pulses for making two full cycle rotation
for (int i = 0; i < 2*stepsPerRev; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delayMicroseconds(millisBtwnSteps);
}
delay(1000);
}
Quelle(s) erreur(s) ai-je commis ?
Cordialement