# Probleme mit Schrittmotor und Accelstepper-lib

**URL:** <https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318>\
**Category:** Deutsch\
**Created:** [December 24, 2023, 12:50pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318 "2023-12-24T12:50:21Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![laurin\_e](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/laurin_e/32/1110802_2.png) [@laurin\_e](https://forum.arduino.cc/u/laurin_e)\
**Post date:** [December 24, 2023, 12:50pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/1 "2023-12-24T12:50:21Z")

</div>

Hallo alle

Ich möchte meinen Schrittmotor Step um Step entweder im Uhrzeigersinn, oder im Gegenuhrzeigersinn bewegen. Ich will also bewusst nicht eine limitierende Funktion wie "move" verwenden. Ich habe es mit "AccelStepper(forward/backward)" versucht, doch es funktioniert so nicht. Wenn ich danach run(); calle, dreht der Motor immer in die gleiche Richtung.  
Am Schluss soll der Motor per Joystick so lange nach links oder rechts drehen, wie der Joystick bewegt wird. Und die Drehzahl steuere ich je nach Ausschlag des Joysticks. Der Code unten ist in der Loop vereinfacht, um zu Testen.

```arduino
#include <AccelStepper.h>

#define motorInterfaceType 1

AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

int enablePin = 10;

void setup() {

pinMode(enablePin, OUTPUT);
Serial.begin(9600);
  
digitalWrite(enablePin, LOW);
 

  myStepper.setMaxSpeed(4000);
  myStepper.setAcceleration(50);
  //myStepper.setSpeed(700);

}
void loop() {

myStepper.setSpeed(700);
AccelStepper(backward);
myStepper.run();
}

```

 ![20240101_210942](https://europe1.discourse-cdn.com/arduino/original/4X/3/f/e/3fe21c88f43cbd115e9e9a5999fcbfbcb48bd659.jpeg)  
 ![20240101_211009](https://europe1.discourse-cdn.com/arduino/original/4X/2/6/8/268fec97d8255c47781d1be028119f0f085c1eed.jpeg)  
Ich benutze einen Arduino Uno (Atmega328). Das Display ist ein 1,3 Zoll  
128x64 von Adafruit. Ich verwende die I2C Schnittstelle (der default).

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [December 24, 2023, 1:07pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/2 "2023-12-24T13:07:54Z")

</div>

> [@laurin\_e](#):
>
> Wenn ich danach run(); calle, dreht der Motor immer in die gleiche Richtung.

> [@laurin\_e](#):
>
> ```arduino
> void loop() {
> 
> myStepper.setSpeed(700);
> AccelStepper(backward);
> myStepper.run();
> }
> 
> ```

Logisch.  
loop() macht genau das. Es läuft und läuft und ...

Du könntest eine random Funktion bauen, die den Speed verändert oder zumindest nach random Zeit ein stop() macht...  
Alternativ: Hast Du einen Poti, den Du anschliessen kannst? (Ist der Joystick analog?)

---

<div class="post-metadata">

**Author:** ![laurin\_e](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/laurin_e/32/1110802_2.png) [@laurin\_e](https://forum.arduino.cc/u/laurin_e)\
**Post date:** [December 24, 2023, 1:15pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/3 "2023-12-24T13:15:25Z")

</div>

Es ist mir bewusst, dass der Motor ewig dreht. Ist ja auch gut so. Aber ich kriege die Drehrichtung nicht geändert. Das ist mein Problem. Ja, ich habe ein Poti an A1 dran. Und ja, der Joystick ist analog.

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [December 24, 2023, 1:34pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/4 "2023-12-24T13:34:31Z")

</div>

welche accelstepperlib benutzt Du?  
(Die von adafruit ist 12 Jahre alt und wird nicht gepflegt.)  
Ich sehe in Deinem Code nirgend das Du die Drehrichtung wechseln willst.

Wenn Du an A1 einen Poti hast, dann sollte der in Mittelstellung ungefähr 500 - 530 ausgeben.

Ich würde dann die Drehrichtung entsprechend ändern:

```arduino
// KURZSKETCH 
constexpr byte enablePin {LED_BUILTIN};
constexpr byte dirPin {3};
constexpr byte inputPin = A1;
void setup()
{
  Serial.begin(9600);
  Serial.println(F("Start... "));
  pinMode(dirPin, OUTPUT);
}
void loop()
{
  uint16_t analogWert = analogRead(A1);
  if (analogWert > 650)
  {
    Serial.println(F("forward"));
    digitalWrite(enablePin, HIGH);
    digitalWrite(dirPin, HIGH);
  }
  else if (analogWert < 450)
  {
    Serial.println(F("forward"));
    digitalWrite(enablePin, HIGH);
    digitalWrite(dirPin, LOW);
  }
  else
  {
    Serial.println(F("halt"));
    digitalWrite(enablePin, LOW);
  }
  delay(100); // Pause für den SerMOn
}
```

---

<div class="post-metadata">

**Author:** ![laurin\_e](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/laurin_e/32/1110802_2.png) [@laurin\_e](https://forum.arduino.cc/u/laurin_e)\
**Post date:** [December 24, 2023, 1:43pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/5 "2023-12-24T13:43:45Z")

</div>

Ich benutze die AccelStepper v.1.64.0 von Patrick Wasp. Du würdest also ganz ohne Library arbeiten? Das Ding ist eben, ich will später auch vordefinierte Werte per Knopfdruck anfahren können und das mit accelleration und decelleration..

---

<div class="post-metadata">

**Author:** ![StefanL38](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/stefanl38/32/713548_2.png) [@StefanL38](https://forum.arduino.cc/u/StefanL38)\
**Post date:** [December 24, 2023, 2:52pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/6 "2023-12-24T14:52:39Z")

</div>

Umsteigen auf die MobaTools-Library

Da gibt es einen Befehl rotate()

rotate(1) // im Uhrzeigersinn endlos drehen  
rotate(-1) gegen den Uhrzeigersinn endlos drehen

Da du das später mit dem Anfahren von ganz bestimmten Positionen kombinieren willst  
ist die MobaTools-library sehr gut geeignet.  
Die MobaTools zählen intern die Position mit.  
Es gibt functions mit denen du eine relative Anzahl Schritte fahren kannst  
und  
es gibt functions für absolute Positionen anfahren  
Diese function ermittelt dann von alleine ob der Motor nun im Uhrzeigersinn oder gegen den Uhrzeigersinn drehen muss um an diese Position zu kommen.

Viel bequemer geht nicht.

Außerdem erzeugen die MobaTools die Step-pulse im Hintergrund.  
Das bedeutet du setzt den Befehl ab und musst gar keine run() oder sonstwas-function in hohem Tempo immer wieder neu aufrufen, sondern Befehl einmal aufrufen. Der Rest passiert von alleine  
vgs

---

<div class="post-metadata">

**Author:** ![laurin\_e](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/laurin_e/32/1110802_2.png) [@laurin\_e](https://forum.arduino.cc/u/laurin_e)\
**Post date:** [December 24, 2023, 4:07pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/7 "2023-12-24T16:07:46Z")

</div>

Hab jetzt umgestellt auf MobaTools und bereits meinen Code implementiert. Funktioniert einwandfrei. Vielen Dank StefanL38!

---

<div class="post-metadata">

**Author:** ![laurin\_e](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/laurin_e/32/1110802_2.png) [@laurin\_e](https://forum.arduino.cc/u/laurin_e)\
**Post date:** [December 25, 2023, 11:38am UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/8 "2023-12-25T11:38:02Z")

</div>

Hallo nochmal

Ich habe den Code erweitert, damit ich mit einem Button nullen kann. Mit dem zweiten Button soll der Stepper dann wieder auf 0 fahren, wenn der Stepper bewegt wurde (while-Schleife). Doch mein Code funktioniert nur, wenn ich auf einen negativen Wert fahre und dann den "GoToZero"-Knopf drücke. Im positiven Bereich stürzt das Programm ab.  
Weiss wer warum?

```arduino
/* Example for MobaTools
    Moving a stepper back and forth
*/
#include <MobaTools.h>

// Adjust pins, steps and time as needed
const byte stepPin = 3;
const byte dirPin = 2;
const int stepsPerRev = 400; // Steps per Revolution ( example with 1/4 microsteps )
const long targetPos = 1600; // stepper moves between 0 and targetpos
int enable = 10;
long nextPos;
long Speed;
long PotVal;
long JoyStick = A2;
long Direction;
long SetZero = 5;
long GoToZero = 6;
long ActualStep;

MoToStepper myStepper ( stepsPerRev, STEPDIR );
MoToTimer stepperPause; // Pause between stepper moves
bool stepperRunning;

void setup() {
  Serial.begin(9600);
  myStepper.attach( stepPin, dirPin );
  myStepper.setSpeed( 600 ); // 60 Rev/Min ( if stepsPerRev is set correctly )
  myStepper.setRampLen( 50 );
  stepperRunning = true;
  pinMode(enable, OUTPUT);
  pinMode(PotVal, INPUT);
  pinMode(JoyStick, INPUT);
  pinMode(SetZero, INPUT_PULLUP);
  pinMode(GoToZero, INPUT_PULLUP);
  digitalWrite(enable, LOW);
  
}

void loop() {
  
Direction = analogRead(JoyStick); //read value of Joystick
ActualStep = myStepper.read(); //read the actual step of the motor

Serial.println(ActualStep);

if(Direction <= 500) { //move the stepper CW infinitively
  myStepper.setSpeed((500/Direction))*4;
  myStepper.rotate(1);

}
else if(Direction >= 520) { //move the stepper CCW infinitively
  myStepper.setSpeed(Direction*4);
  myStepper.rotate(-1);

}
else {
  myStepper.stop();
    }

if((digitalRead(SetZero)) == LOW) { //read the button state to setzero
  myStepper.setZero(0);
}

if((digitalRead(GoToZero)) == LOW) { //read the go to zero button state
  
  while(myStepper.read()!= 0) { //while actual state is not 0, move to 0
  myStepper.write(0);
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![wwerner](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/wwerner/32/1001727_2.png) [@wwerner](https://forum.arduino.cc/u/wwerner)\
**Post date:** [December 25, 2023, 12:48pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/9 "2023-12-25T12:48:03Z")

</div>

Woran erkennst du den Absturz?

---

<div class="post-metadata">

**Author:** ![wwerner](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/wwerner/32/1001727_2.png) [@wwerner](https://forum.arduino.cc/u/wwerner)\
**Post date:** [December 25, 2023, 12:52pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/10 "2023-12-25T12:52:26Z")

</div>

> [@laurin\_e](#):
>
> `myStepper.setSpeed( 600 );`

> [@laurin\_e](#):
>
> `myStepper.setSpeed(Direction*4);`

Die Berechnung in der 2 Zeile ist wahrscheinlisch falsch. 510 ist dein Nullpunkt  
den musst mit einrechnen

---

<div class="post-metadata">

**Author:** ![laurin\_e](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/laurin_e/32/1110802_2.png) [@laurin\_e](https://forum.arduino.cc/u/laurin_e)\
**Post date:** [December 25, 2023, 12:53pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/11 "2023-12-25T12:53:03Z")

</div>

Der Motor bewegt sich nicht, wenn ich von einer positiven Position GoToZero drücke. Und wenn ich dann mit dem Joystick fahren möchte, passiert nix.

---

<div class="post-metadata">

**Author:** ![laurin\_e](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/laurin_e/32/1110802_2.png) [@laurin\_e](https://forum.arduino.cc/u/laurin_e)\
**Post date:** [December 25, 2023, 1:07pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/12 "2023-12-25T13:07:19Z")

</div>

Ich muss vielleicht präzisieren: Das Programm stürzt nicht ab, es bleibt einfach in der while-Schleife hängen und bewegt den Motor nicht

---

<div class="post-metadata">

**Author:** ![StefanL38](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/stefanl38/32/713548_2.png) [@StefanL38](https://forum.arduino.cc/u/StefanL38)\
**Post date:** [December 25, 2023, 2:26pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/13 "2023-12-25T14:26:33Z")

</div>

Also ich habe das jetzt im Wokwi-Simulator nachgebaut und komfortablen debug-output hinzugefügt.

Im Wowki-Simulator funktioniert es wie erwartet.  
Mit dem spezielleren debug-output bei dem die Anzeige nicht einfach so durchrennt müsstest du erkennen können was der Code macht  
Quellcode so wie er auch im Wokwi-Simulator steht

```arduino
// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298

#define dbg(myFixedText, variableName) \
  Serial.print( F(#myFixedText " " #variableName"=") ); \
  Serial.println(variableName);

#define dbgi(myFixedText, variableName,timeInterval) \
  { \
    static unsigned long intervalStartTime; \
    if ( millis() - intervalStartTime >= timeInterval ){ \
      intervalStartTime = millis(); \
      Serial.print( F(#myFixedText " " #variableName"=") ); \
      Serial.println(variableName); \
    } \
  }

#define dbgc(myFixedText, variableName) \
  { \
    static long lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }

#define dbgcf(myFixedText, variableName) \
  { \
    static float lastState; \
    if ( lastState != variableName ){ \
      Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
      Serial.print(lastState); \
      Serial.print( F(" to ") ); \
      Serial.println(variableName); \
      lastState = variableName; \
    } \
  }
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *

/* Example for MobaTools
    Moving a stepper back and forth
*/
#include <MobaTools.h>

// Adjust pins, steps and time as needed
const byte stepPin = 3;
const byte dirPin = 2;
const int stepsPerRev = 400; // Steps per Revolution ( example with 1/4 microsteps )
const long targetPos = 1600; // stepper moves between 0 and targetpos
int enable = 10;
long nextPos;
long Speed;
long PotVal;
long JoyStick = A2;
long Direction;
long SetZero = 5;
long GoToZero = 6;
long ActualStep;

MoToStepper myStepper ( stepsPerRev, STEPDIR );
MoToTimer stepperPause; // Pause between stepper moves
bool stepperRunning;

void setup() {
  Serial.begin(115200);
  while (!Serial);
  Serial.println("Setup-Start");
  myStepper.attach( stepPin, dirPin );
  myStepper.setSpeed( 600 ); // 60 Rev/Min ( if stepsPerRev is set correctly )
  myStepper.setRampLen( 50 );
  stepperRunning = true;
  pinMode(enable, OUTPUT);
  pinMode(PotVal, INPUT);
  pinMode(JoyStick, INPUT);
  pinMode(SetZero, INPUT_PULLUP);
  pinMode(GoToZero, INPUT_PULLUP);
  digitalWrite(enable, LOW);

}

void loop() {

  Direction = analogRead(JoyStick); //read value of Joystick
  ActualStep = myStepper.read(); //read the actual step of the motor

  //Serial.println(ActualStep);
  dbgc("ToL",ActualStep);

  if (Direction <= 500) { //move the stepper CW infinitively
    myStepper.setSpeed((500 / Direction)) * 4;
    myStepper.rotate(1);

  }
  else if (Direction >= 520) { //move the stepper CCW infinitively
    myStepper.setSpeed(Direction * 4);
    myStepper.rotate(-1);

  }
  else {
    myStepper.stop();
  }

  if ((digitalRead(SetZero)) == LOW) { //read the button state to setzero
    dbgc("set",digitalRead(SetZero))
    myStepper.setZero(0);
  }

  if (digitalRead(GoToZero) == LOW) { //read the go to zero button state
      dbgc("Go",digitalRead(GoToZero))

    while (myStepper.read() != 0) { //while actual state is not 0, move to 0
      myStepper.write(0);
    }
  }
}

```

Noch ein Hinweis zum WOKWI-Simulator der Stepper-Motor weiß natürilch nix on der MobaTools-Library deshalb bleibt der Schrittzähler vom WOKWI-Schrittmotor auf seiner Schrittanzahl stehen.  
As Empfehlung zum Testen fahre den Schrittzähler vom WOKWI-Schrittmotor auf eine in etwa runde Zahl 1027 oder so was. Dann setZero und dann fährste herum und testest Go to Zero  
und hier der Link zur Simulation

> **[MobaTools-Joystick-test-001 - Wokwi ESP32, STM32, Arduino Simulator](https://wokwi.com/projects/385093844729928705)**
>
> Run IoT and embedded projects in your browser: ESP32, STM32, Arduino, Pi Pico, and more. No installation required!

vgs

---

<div class="post-metadata">

**Author:** ![laurin\_e](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/laurin_e/32/1110802_2.png) [@laurin\_e](https://forum.arduino.cc/u/laurin_e)\
**Post date:** [December 25, 2023, 4:30pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/14 "2023-12-25T16:30:30Z")

</div>

Hallo StefanL38

Ich konnte das Problem inzwischen lösen. Und zwar habe ich mit einem SerialPrint in der while-Schleife sehen, dass der Motor steppt. Aber eben nur so ein Step pro Sekunde. Ich habe darauf setSpeed nochmals gesetzt. Seither funktioniert es in beide Richtungen.

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [December 25, 2023, 4:36pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/15 "2023-12-25T16:36:12Z")

</div>

> [@StefanL38](#):
>
> Im Wowki-Simulator funktioniert es wie erwartet.

Was überhaupt nix aussagt.  
Es wäre ist nicht das erste Projekt, bei dem der Kram versagt.

---

<div class="post-metadata">

**Author:** ![StefanL38](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/stefanl38/32/713548_2.png) [@StefanL38](https://forum.arduino.cc/u/StefanL38)\
**Post date:** [December 25, 2023, 4:41pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/16 "2023-12-25T16:41:57Z")

</div>

> [@my\_xy\_projekt](#):
>
> > [@StefanL38](#):
> >
> > Im Wowki-Simulator funktioniert es wie erwartet.
> 
> Was überhaupt nix aussagt.

Nun im WOKWI-Simulator kann man elementare Programmlogik-Probleme sichtbar machen.

Soweit wie ich WOKWI (gelegentlich) benutzt habe, habe ich keine solchen Probleme gehabt.  
Schrittmotoren, Ultraschallsensor, Neopixel, LC-Display hat bei mir jeweils funktioniert.

Jetzt wäre interessant wenn du Links zu den Beispielen in denen WOKWI "versagt" hat posten würdest.

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [December 25, 2023, 4:45pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/17 "2023-12-25T16:45:14Z")

</div>

Reicht Dir #14 nicht?  
Und nein, die SuFu gibt das vermutich nicht her. Da fehlt so das bissl KI. Wir hatten hier schon ganz andere Dinge, die da gut aussahen und in Wirklichkiet nicht funktionierten....  
z.B. [https://forum.arduino.cc/t/fastled-und-wokwi-mit-esp32-probleme-mit-vielfachem-von-8/1117313/7](https://forum.arduino.cc/t/fastled-und-wokwi-mit-esp32-probleme-mit-vielfachem-von-8/1117313/7)

---

<div class="post-metadata">

**Author:** ![StefanL38](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/stefanl38/32/713548_2.png) [@StefanL38](https://forum.arduino.cc/u/StefanL38)\
**Post date:** [December 25, 2023, 4:54pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/18 "2023-12-25T16:54:20Z")

</div>

> [@my\_xy\_projekt](#):
>
> Reicht Dir #14 nicht?

Nein reicht mir nicht. Überhaupt nicht. Mindestens 10 Beispiele. Aber dazu bist du wohl zu bequem.  
Ist auch OK. Ist ja alles freiwillig hier.

---

<div class="post-metadata">

**Author:** ![MicroBahner](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/microbahner/32/238923_2.png) [@MicroBahner](https://forum.arduino.cc/u/MicroBahner)\
**Post date:** [December 25, 2023, 4:57pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/19 "2023-12-25T16:57:05Z")

</div>

> [@laurin\_e](#):
>
> ```arduino
> if((digitalRead(GoToZero)) == LOW) { //read the go to zero button state
>   
> while(myStepper.read()!= 0) { //while actual state is not 0, move to 0
> myStepper.write(0);
> }
> }
> 
> ```

Das solltest Du so nicht programmieren. Da wird write(0) mit hoher Wiederholrate aufgerufen, was keinen Sinn macht ( und evtl. zu Problemen führt ... )  
Einmal write(0) aufrufen reicht - und wenn Du da warten willst, bis der Punkt 0 erreicht ist, das hinterher prüfen ( was aber deinen gesamten Programmablauf blockiert )  
Also so:

```arduino
if((digitalRead(GoToZero)) == LOW) { //read the go to zero button state
  
  myStepper.write(0);
  while(myStepper.moving() ); //wait blocking till zero position is reached
}

```

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [December 25, 2023, 4:58pm UTC](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318/20 "2023-12-25T16:58:31Z")

</div>

> [@StefanL38](#):
>
> Mindestens 10 Beispiele

Du bist ja drollig.  
Dein Code funktioniert beim Anwender nicht, weil Du Dich u.a. auf eine eigenartige Simulation verlässt und meinst jetzt tatsächlich um zu bewerten, dass Deine Simulation gescheitert ist, müssen andere herhalten.

Ich weiss ja, dass Du so Deine Probleme hast, aber das die so tief liegen lässt mich an Sachverstand zweifeln.

[Next page](https://forum.arduino.cc/t/probleme-mit-schrittmotor-und-accelstepper-lib/1203318.md?page=2)
