AccelStepper Libary + Nema Stepper 17

Hallo Leute,

ich wende mich mal an euch, weil ich gerade absolut nicht weiter komme. Also ich möchte 2 Stepper betreiben
um eine Cocktailmaschine zu betreiben. Der eine Motor drückt praktisch nach oben.
Wenn ich nun programmieren will, dass er 500 Schritte nach oben fährt, da einige Sekunden wartet und dann wieder 500 Schritte nach unten fährt, bekomme ich es nicht hin. Es liegt denke ich an der Loop Schleife, die ja immer wieder ausgeführt wird, also will ich das als einmalige Funktion ausführen, dabei bin ich aber am verzweifeln. Könnt ihr mir da weiterhelfen? :frowning:

sketch_jun10b.ino (380 Bytes)

Crazoj:
Könnt ihr mir da weiterhelfen? :frowning:

Natürlich können wir, wollen wir aber nur, wenn Du Dich an die Forenregeln hälst. Dazu bitte Sketch in Code-Tags setzen und hier zeigen.

Funktioniert der Testsketch?

Du benötigst eine Ablaufsteuerung, endlicher Automat, finite state machine und die Verwendung von millis() für Zeitabläufe.

Beispiele:

http://forum.arduino.cc/index.php?topic=351494.msg3004267#msg3004267

http://forum.arduino.cc/index.php?topic=214079.msg2981860#msg2981860

http://forum.arduino.cc/index.php?topic=214079.msg2988296#msg2988296

Damit willkommen im Forum!

#include <AccelStepper.h>

int M2dirpin = 7;
int M2steppin = 6;


int pos2 = 500;



AccelStepper stepper2(AccelStepper::DRIVER, M2steppin,M2dirpin);





void setup(){
 stepper2.setMaxSpeed(200.0);
 stepper2.setAcceleration(200.0);

}  


 

void loop() { 
 
  if (stepper2.distanceToGo() == 0)
  {
    pos2 = -pos2;
    stepper2.moveTo(pos2);
       stepper2.run(); 
}

Ups das tut mir leid, habe den Code nur als Datei hinzugefügt. Also es funktioniert so, wenn ich die Funktion "moveTo(500)" aus der Libary aufrufe, dann tut er es auch ein einziges mal.

Das mit den Zustandsmaschinen verstehe ich noch nicht so ganz. Kannst du es mir bitte konkret an meinem Projekt erklären? Ich habe meine 10 Dosierer und einen Schlitten, also einen Motor für die x-Achse und einen für die y-Achse (mit Gewindespindel zum hochdrücken).
Vorher hatte ich das Adafruit Motorshield mit dem das ganz einfach ging, aber es hatte zu wenig power.
Gesteuert wird das Ganze durch eine Webpage die über Processing den Comport ansteuert und für die Cocktails die Zahlen 1-8 sendet. Dabei war meine Idee eine Funktion für jeden Cocktail zu erstellen und die dann praktisch die jeweiligen Dosierer anfährt.