int Anzahl = 2; // Anzahl der Motorumdrehungen
const int switchPin1 = 2;
const int switchPin2 = 4;
const int switchPin3 = 5;
const int switchPin4 = 6;
int count = 0;
byte directionPin = 8;
byte stepPin = 9;
int numberOfSteps = 200 * Anzahl; // Stepps pro Motorumdrehung
int pulseWidthMicros = 20;
int millisbetweenSteps = 10; // Geschwindkeit einstellen
const int ledPin = 13;
bool buttonPressed1 = false;
bool buttonPressed2 = false;
bool buttonPressed3 = false;
bool buttonPressed4 = false;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(switchPin1, INPUT_PULLUP);
pinMode(switchPin2, INPUT_PULLUP);
pinMode(switchPin3, INPUT_PULLUP);
pinMode(switchPin4, INPUT_PULLUP);
pinMode(directionPin, OUTPUT);
pinMode(stepPin, OUTPUT);
Serial.begin(9600);
Serial.println("Start Stepper");
}
void loop()
{
if (digitalRead(switchPin3) == LOW && !buttonPressed1)
{ // manuelles Posintionieren ( im )
digitalWrite(directionPin, HIGH);
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delay(100); //(millisbetweenSteps);
}
if (digitalRead(switchPin4) == LOW && !buttonPressed1)
{ // manuelles Posintionieren ( gegen )
digitalWrite(directionPin, LOW);
digitalWrite(stepPin, LOW );
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, HIGH);
delay(100); //(millisbetweenSteps);
}
if (digitalRead(switchPin1) == LOW && !buttonPressed1)
{
digitalWrite(ledPin, HIGH);
buttonPressed1 = true;
if (count == 0)
{
digitalWrite(directionPin, HIGH);
for (int i = 0; i <= numberOfSteps; i++)
{
Serial.println(i);
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delay(millisbetweenSteps);
}
}
else
{
digitalWrite(directionPin, LOW);
while (digitalRead(switchPin2) == HIGH)
{
Serial.print(count);
Serial.println(" zurück");
count--;
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delay(millisbetweenSteps);
}
}
count = numberOfSteps;
}
if (digitalRead(switchPin1) == HIGH)
{
buttonPressed1 = false;
}
if (digitalRead(switchPin2) == LOW)
{
count = 0;
digitalWrite(ledPin, LOW);
}
}