Under förutsättning att din stegmotorkod fungerar och att knappen är korrekt inkopplad så kan du prova att byta ut din setup() till följande (det är egentligen bara while-villkoret som har ändrats):
void setup()
{
stepper.setMaxSpeed(390);
stepper.setAcceleration(200);
pinMode(limitswitch, INPUT);
stepper.setSpeed(-50);
while(digitalRead(limitswitch) == LOW){ //medans limitswitchen ligger låg, dvs ej aktiverad
stepper.runSpeed(); //så Uppdaterar vi runSpeed() som behöver uppdateras
} //så ofta som möjligt då det är den som genererar stegen.
stepper.setSpeed(0);
stepper.setCurrentPosition(0); //sätter nuvarande position som nolla.
}
void setup()
{
stepper.setMaxSpeed(390);
stepper.setAcceleration(200);
pinMode(limitswitch, INPUT);
stepper.setSpeed(-50);
while(!digitalRead(limitswitch)){ //medans limitswitchen ligger låg, dvs ej aktiverad
stepper.runSpeed(); //så Uppdaterar vi runSpeed() som behöver uppdateras
} //så ofta som möjligt då det är den som genererar stegen.
stepper.setSpeed(2);
while(digitalRead(limitswitch)){ //medans limitswitchen ligger høy, dvs aktiverad
stepper.runSpeed(); //så Uppdaterar vi runSpeed() som behöver uppdateras
}
stepper.setSpeed(0);
stepper.setCurrentPosition(0); //sätter nuvarande position som nolla.
}
Da vil den reversere til bryter trykkes inn, noe som sikkert vil resultere i forskjellig posisjon hver gang.
Så kjører den små steg fremover til bryteren slippes igjen, så nulles posisjonen, og hovedloopen (main) kan starte.