as I am a beginner in this topic, I' ve got a question.
How can I change the code in this way that I can use
Adafruit Motor Shield V1 with micro step?
thank you
Code: Select all
#include <Stepper.h>
// Tragen Sie hier die Zahl der Schritte Ihres Motors ein
#define STEPS 200
// Instanz der stepper-Klasse erzeugen. Wir geben die
// Zahl der Motorschritte an und die Pins, mit denen
// er verbunden ist.
Stepper stepper(STEPS, 2, 3, 4, 5);
int steps = 0;
const byte pinEndStop=6;
void setup(){
pinMode (pinEndStop, INPUT_PULLUP); // Endschalter sollte beim Anfahren öffnen, normal = GND
// Geschwindigkeit des Motors auf 30 U/min setzen
stepper.setSpeed(30); // Geschwindigkeit des Motors auf Wert U/min setzen
Serial.begin(9600);
}
void loop()
{
if ( Serial.available()) {
char ch = Serial.read();
if(isDigit(ch)){ // Ist ch eine Ziffer?
steps = steps * 10 + ch - '0'; // Ja, Wert akkumulieren
}
else if(ch == '+'){
stepper.step(steps);
steps = 0;
}
else if(ch == '-'){
stepper.step(steps * -1);
steps = 0;
}
// s für Geschwindigkeit
else if(ch == 's'){
stepper.setSpeed(steps);
Serial.print("Setze Geschwindigkeit auf ");
Serial.println(steps);
steps = 0;
}
else if(ch == 'x'){
if (sucheEndschalter() == false) Serial.println("Kein Endschalter gefunden");
if (sucheEndschalter() == true) Serial.println("Referenzfahrt abgeschlossen");
while (Serial.read() != -1 ) {} // zwischenzeitlichen Eingabepuffer leeren.
steps = 0;
}
}
}
bool sucheEndschalter() {
// Achtung blockierend, bis Endschalter gefunden ( HIGH )
//
int max = 1000; // ... Schritte bis Endschaltersuche aufgegeben wird
while ( digitalRead(pinEndStop) != HIGH ) {
stepper.step(1);
delay(10);
if ( --max < 0 ) return false; // Fehler - Abbruch
}
return true;
}