It work on my computer

This commit is contained in:
Félix MARQUET
2024-12-07 17:30:40 +01:00
committed by GitHub
parent e0daa2cb8c
commit d35e62758d

View File

@@ -1,70 +1,35 @@
#include <AccelStepper.h>
//POSITION-------------------------------------------------------------------------------------------
void moveTo(float distance);
void end();
void editSpeed(unsigned int speed = 1);
#include <AccelStepper.h>
//MOTEURS--------------------------------------------------------------------------------------------
// Configuration des broches pour le moteur X
#define X_STEP_PIN 2 // Broche STEP du moteur X
#define X_DIR_PIN 5 // Broche DIR du moteur X
#define ENABLE_PIN 8 // Broche ENABLE du moteur
#define M0_PIN 9 // Broche M0 du moteur X
#define M1_PIN 10 // Broche M1 du moteur X
#define M2_PIN 11 // Broche M2 du moteur X
// Configuration des paramètres des moteurs
#define MOTOR_STEPS 200 // Nombre de pas par tour du moteur
#define RPM 50 // Vitesse de rotation en tours par minute
#define MICROSTEPS 16 // Configuration du microstepping (1/16 de pas)
#define SPEED 5
// Définition des objets AccelStepper pour chaque moteur
AccelStepper stepperX(AccelStepper::DRIVER, X_STEP_PIN, X_DIR_PIN);
// Garder en mémoire la position de l'ascenseur
long position;
//SETUP================================================================================================
void setup() {
Serial.begin(9600);
while (!Serial) {}
Serial.println("[setup] Starting ascensor programm");
//CONFIG MOTEURS--------------------------------------------------------------------------------------------
// Configuration des broches pour le moteur X
pinMode(ENABLE_PIN, OUTPUT);
#define STEP_PIN 2 // Broche STEP du moteur X
#define DIR_PIN 5 // Broche DIR du moteur X
#define ENABLE_PIN 8 // Broche ENABLE du moteur
// Configuration des paramètres des moteurs X et Y
//editSpeed(5);
stepperX.setMaxSpeed((float(MOTOR_STEPS * MICROSTEPS) / 60) * RPM/SPEED);
stepperX.setAcceleration((float(MOTOR_STEPS * MICROSTEPS) / 60) * RPM/(SPEED*4));
// Créer une instance de la classe AccelStepper
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
// Activation des sorties des drivers pour les moteurs X et Y
digitalWrite(ENABLE_PIN, LOW); // Activer le driver du moteur X (LOW = activé)
void setup() {
pinMode(ENABLE_PIN, OUTPUT);
digitalWrite(ENABLE_PIN, LOW);
// Configurer la vitesse et l'accélération
stepper.setMaxSpeed(1000000); // Vitesse maximale (steps par seconde)
stepper.setAcceleration(50000); // Accélération (steps par seconde^2)
moveTo(1000);
}
// Initialisation du mouvement
Serial.begin(9600);
Serial.println("Moteur prêt");
}
//LOOP==================================================================================================
void loop() {
Serial.println("[loop] starting mooving");
stepperX.runSpeedToPosition();
}
void loop() {
// Déplacer vers une position spécifique
stepper.moveTo(100000); // Aller à 1000 pas
stepper.runToPosition(); // Attendre d'arriver à la position
//FONCTION================================================================================================
// Fonction pour faire avancer le robot sur une distance donnée en mm
void moveTo(float distance) {
float distanceSteps = distance * MOTOR_STEPS * MICROSTEPS; // TODO : Calcul du nombre de pas nécessaires
stepperX.setCurrentPosition(0);
stepperX.moveTo(distanceSteps); // Déplacer les moteurs vers les positions cibles
}
void editSpeed(unsigned int speed = 1){
stepperX.setMaxSpeed((float(MOTOR_STEPS * MICROSTEPS) / 60) * RPM/speed);
stepperX.setAcceleration((float(MOTOR_STEPS * MICROSTEPS) / 60) * RPM/(speed*4));
}
delay(1000); // Pause d'une seconde
stepper.moveTo(-100000); // Retour à la position d'origine
stepper.runToPosition();
delay(1000); // Pause d'une seconde
}