Bonjour tout le monde,
Je suis en train de commencer un programme, mais me voilà déjà bloqué... Mon but est qu'avec l'aide d'un joystick, mon moteur tourne dans le sens inverse des aiguilles d'une montre (si le joystick est en position basse) et dans le sens des aiguilles d'une montre (s'il est en position haute). J'ai donc d'abord commencé avec la fonction map, mais cela n'a pas marché. J'ai donc continué avec un fonctionnement plus primitif, mais qui me convient avec des "if et else".
Le résultat obtenu est que quelle que soit la valeur du joystick, la roue tourne toujours dans le même sens, sauf quand le joystick est à la position neutre ou le moteur ne tourne pas. Pourtant, en vérifiant dans la console, les valeurs renvoyées pour la vitesse sont correctes. Je pense donc que c'est la fonction setSpeed qui ne prend pas de valeur négative et donc ce n'est pas de cette façon qu'il faut faire.
Voici mon code et merci d'avance pour votre aide!
#include <AccelStepper.h>
// Broches de contrôle du moteur
#define motorPin1 8
#define motorPin2 9
#define motorPin3 10
#define motorPin4 11
// Broche du potentiomètre
#define potPin A0
// Créer un objet AccelStepper
AccelStepper stepper(AccelStepper::FULL4WIRE, motorPin1, motorPin3, motorPin2, motorPin4);
void setup() {
// Vitesse maximale et accélération du moteur
stepper.setMaxSpeed(2000);
stepper.setAcceleration(500);
Serial.begin(9600);
}
void loop() {
// Lire la valeur du potentiomètre
int potValue = analogRead(potPin);
Serial.println(potValue);
Serial.println("-----");
float motorSpeed = 0; // Initialiser la vitesse à 0
// Déterminer la vitesse en fonction de la valeur du potentiomètre
if (potValue < 440) {
motorSpeed = -2000; // Faire tourner dans le sens inverse avec une vitesse négative
} else if (potValue > 600) {
motorSpeed = 2000; // Faire tourner dans le sens normal avec une vitesse positive
}
// Convertir la valeur lue en une vitesse pour le moteur
Serial.println(motorSpeed);
Serial.println("-");
// Définir la vitesse du moteur
stepper.setSpeed(motorSpeed);
// Faire avancer le moteur d'une étape
stepper.runSpeed();
}
merci d'avance !!!