Update ascenseur.ino

This commit is contained in:
Félix MARQUET
2024-12-07 16:40:03 +01:00
committed by GitHub
parent b8fb403d75
commit e0daa2cb8c

View File

@@ -1,5 +1,4 @@
#include <AccelStepper.h>
#include <MultiStepper.h>
//POSITION-------------------------------------------------------------------------------------------
void moveTo(float distance);
void end();
@@ -15,21 +14,16 @@ void editSpeed(unsigned int speed = 1);
#define M1_PIN 10 // Broche M1 du moteur X
#define M2_PIN 11 // Broche M2 du moteur X
// Configuration des broches pour le moteur Y
#define Y_STEP_PIN 3 // Broche STEP du moteur Y
#define Y_DIR_PIN 6 // Broche DIR du moteur Y
// 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);
AccelStepper stepperY(AccelStepper::DRIVER, Y_STEP_PIN, Y_DIR_PIN);
// Créer un objet MultiStepper pour synchroniser les moteurs
MultiStepper multiStepper;
// Garder en mémoire la position de l'ascenseur
long position;
@@ -47,21 +41,19 @@ void setup() {
pinMode(ENABLE_PIN, OUTPUT);
// Configuration des paramètres des moteurs X et Y
editSpeed(5);
//editSpeed(5);
stepperX.setMaxSpeed((float(MOTOR_STEPS * MICROSTEPS) / 60) * RPM/SPEED);
stepperX.setAcceleration((float(MOTOR_STEPS * MICROSTEPS) / 60) * RPM/(SPEED*4));
// Activation des sorties des drivers pour les moteurs X et Y
digitalWrite(ENABLE_PIN, LOW); // Activer le driver du moteur X (LOW = activé)
digitalWrite(ENABLE_PIN, LOW); // Activer le driver du moteur Y (LOW = activé)
// Ajouter les moteurs à la MultiStepper (X et Y)
multiStepper.addStepper(stepperX);
multiStepper.addStepper(stepperY);
moveTo(1000);
}
//LOOP==================================================================================================
void loop() {
Serial.println("[loop] starting mooving");
moveTo(100);
stepperX.runSpeedToPosition();
}
@@ -70,12 +62,9 @@ void loop() {
void moveTo(float distance) {
float distanceSteps = distance * MOTOR_STEPS * MICROSTEPS; // TODO : Calcul du nombre de pas nécessaires
stepperX.setCurrentPosition(0);
stepperY.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));
stepperY.setMaxSpeed((float(MOTOR_STEPS * MICROSTEPS) / 60) * RPM/speed);
stepperY.setAcceleration((float(MOTOR_STEPS * MICROSTEPS) / 60) * RPM/(speed*4));
}