Go Down

Topic: Pololu A4988 - mehrere Stepper ohne Delay ansteuern (Read 832 times) previous topic - next topic

BlueGene

Jan 04, 2013, 11:46 am Last Edit: Jan 04, 2013, 04:23 pm by BlueGene Reason: 1
Hallo,

ich benutze den Pololu A4988 und habe folgende Library gefunden:
http://arduino.alhin.de/index.php?n=48

Für mich ist es nicht ganz ersichtlich, ob die Library den Code an irgendeiner Stelle block/pausiert, oder ob alles gleichzeitig ausgeführt wird.

Zumindest habe ich kein delay() in der Library gefunden.

Da ich u.a. ein LCD-Display benutze, muss der Code so sein, dass es nicht blockt.

erni-berni

Hallo BlueGene,
der Code wird nicht pausiert, aber das Programm bleibt so lange im Library Code bis alle Motor-Schritte des Aufrufs abgearbeitet sind.
Code: [Select]

void AH_Pololu::move(long NUMBER_OF_STEPS, boolean DIRECTION)

  long STEPS = abs(NUMBER_OF_STEPS);   
  setDirection(DIRECTION);

  while(STEPS > 0) {
    if (micros() - this->LAST_STEP_TIME >= this->STEP_DELAY) {
      this->LAST_STEP_TIME = micros();
      STEPS--;
      stepMotor();
    }
  }
}

In jeder while Schleife arbeitet er genau eine Schritt ab.
Ich weiß ja nicht was du vorhast, aber du kannst damit keine 2 Motoren gleichzeitig laufen lassen.
Gruß Reinhard

BlueGene

Ok, ich habe vor bis zu 5 Schrittmotoren gleichzeitig anzusteuern.

Welche Library eignet sich da am besten?

Ich hatte mir AccelStepper angeschaut, blick da jedoch überhaupt nicht durch.
Ziel  ist eine Steuerung für Timlapse-Aufnahmen, also Bewegung-->Pause-->Bewegung.

Da ich "Kurven fahren" möchte, brauche ich für jede Bewegung eine andere Anzahl an Schritten. Diese Schritte sind in einer txt-Datei gespeichert und sollen bei jedem Durchlauf ausgelesen und durchgeführt werden.

Die Library soll einfach nur eine konstante Geschwindigkeit liefern und mir die Möglichkeit bieten eine bestimmte Anzahl von Schritten zu fahren. Bei AccelStepper habe ich das irgendwie nicht hinbekommen, die Beschreibung auf deren Seite ist ziemlich unverständlich für Anfänger, auch mit dem Beispielen konnte ich mein Ziel nicht erreichen,

Go Up