Hallo,
in meinem Sketch zur Steuerung zweier Schrittmotoren mit unterschiedlichen Geschwindigkeiten und Richtungen mittels Joystick habe ich mich auf die in AccelStepper.h integrierte Multistepper Funktion beziehen wollen. Ich erhalte Fehlermeldungen bezüglich Multistepper. Ich hbe versucht, eine Multistepper.h über die Bibliotheksverwaltung einzubinden, kann dort aber keine finden. Ich war der Meinung, dass sie in Accel.Stepper eingebunden ist.
#include <Multistepper.h> ????
Um MultiStepper mit denj beiden Schrittmotoren zu initialisieren, habe ich das Objekt "multistepper" definiert:
Multistepper multistepper; Zeile 28
Bitte an die Experten, wo ist meinFehler?
Beste Grüße und Glückwünsche zum Internationalen Frauentag an alle weiblichen User, die heute online sind ;-)
Sketch:
// Arduino Sketch für die Steuerung von zwei NEMA 17 Schrittmotoren mit einem Joystick Shield und Endschaltern
#include <AccelStepper.h> //
// #include <MultiStepper.h> //
// Pins für den TB6600 Treiber
const int stepPinX = 2; // Schrittpuls (Step) für Motor X
const int dirPinX = 3; // Richtungssteuerung (Direction) für Motor X
const int stepPinY = 4; // Schrittpuls (Step) für Motor Y
const int dirPinY = 5; // Richtungssteuerung (Direction) für Motor Y
// Pins für die Endschalter
const int endSwitchXMin = 6; // Endschalter für Motor X (Min-Position)
const int endSwitchXMax = 7; // Endschalter für Motor X (Max-Position)
const int endSwitchYMin = 8; // Endschalter für Motor Y (Min-Position)
const int endSwitchYMax = 9; // Endschalter für Motor Y (Max-Position)
// Joystick Shield Pins
const int joyXPin = A0; // Joystick X-Achse
const int joyYPin = A1; // Joystick Y-Achse
const int joyButtonPin = 10; // Joystick Button
// Schrittmotor-Objekte
AccelStepper stepperX(AccelStepper::DRIVER, stepPinX, dirPinX);
AccelStepper stepperY(AccelStepper::DRIVER, stepPinY, dirPinY);
// MultiStepper-Objekt für parallele Steuerung
MultiStepper multiStepper;
void setup() {
// Initialisierung der Schrittmotoren
stepperX.setMaxSpeed(1000); // Maximale Schrittgeschwindigkeit für Motor X
stepperY.setMaxSpeed(1000); // Maximale Schrittgeschwindigkeit für Motor Y
// Endschalter-Pins als Eingänge konfigurieren
pinMode(endSwitchXMin, INPUT_PULLUP);
pinMode(endSwitchXMax, INPUT_PULLUP);
pinMode(endSwitchYMin, INPUT_PULLUP);
pinMode(endSwitchYMax, INPUT_PULLUP);
// Joystick Button-Pin als Eingang konfigurieren
pinMode(joyButtonPin, INPUT_PULLUP);
// MultiStepper mit beiden Schrittmotoren initialisieren
multiStepper.addStepper(stepperX);
multiStepper.addStepper(stepperY);
}
void loop() {
// Joystick-Werte auslesen
int joyX = analogRead(joyXPin);
int joyY = analogRead(joyYPin);
bool joyButtonPressed = digitalRead(joyButtonPin) == LOW;
// Bewegung basierend auf Joystick-Eingaben
if (joyX < 400) {
multiStepper.moveTo(-1000, 0); // Motor X nach links bewegen
} else if (joyX > 600) {
multiStepper.moveTo(1000, 0); // Motor X nach rechts bewegen
} else {
multiStepper.moveTo(0, 0); // Motor X anhalten
}
if (joyY < 400) {
multiStepper.moveTo(0, -1000); // Motor Y nach oben bewegen
} else if (joyY > 600) {
multiStepper.moveTo(0, 1000); // Motor Y nach unten bewegen
} else {
multiStepper.moveTo(0, 0); // Motor Y anhalten
}
// Endschalter-Überprüfung
if (digitalRead(endSwitchXMin) == LOW) {
stepperX.setCurrentPosition(0); // Motor X auf Min-Position setzen
}
if (digitalRead(endSwitchXMax) == LOW) {
stepperX.setCurrentPosition(1000); // Motor X auf Max-Position setzen
}
if (digitalRead(endSwitchYMin) == LOW) {
stepperY.setCurrentPosition(0); // Motor Y auf Min-Position setzen
}
if (digitalRead(endSwitchYMax) == LOW) {
stepperY.setCurrentPosition(1000); // Motor Y auf Max-Position setzen
}
// Bewegung ausführen
multiStepper.runSpeedToPosition();
// Joystick-Button für Not-Aus verwenden
if (joyButtonPressed) {
stepperX.setCurrentPosition(0);
stepperY.setCurrentPosition(0);
}