Hallo liebe Arduino Community,
ich habe ein kleines Problem.
Ich will auf einer Linearführung einen Schlitten mit einem Schrittmotor zwischen zwei Endstopps verfahren. Diese Endstopps sind einfache Taster, für dich ich in meinem Code einfach zwei Interrupts eingebaut habe. Solange ich den Taster drücke, dreht sich der Motor in die andere Richtung. Sobald ich ihn allerdings loslasse fährt er wieder zurück. Wie schaffe ich es, dass der Wert für stepperState gespeichert wird und der Motor bis zum anderen Endstopp fährt und erst dann wieder umkehrt?
Danke für eure Hilfe!
const int switchPin1 = 2;
const int switchPin2 = 3;
const int dirPin = 5;
const int stepPin = 4;
const int stepSpeed = 5;
int stepperState;
void setup()
{
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(switchPin1, INPUT);
pinMode(switchPin2, INPUT);
attachInterrupt(0, limit_switch, RISING); //links
attachInterrupt(1, limit_switch, RISING); //rechts
digitalWrite(dirPin, stepperState);
Serial.begin(115200);
}
void loop()
{
digitalWrite(stepPin, HIGH);
delay(stepSpeed);
digitalWrite(stepPin, LOW);
delay(stepSpeed);
}
void limit_switch ()
{
if (stepperState == HIGH) {
stepperState = LOW;
}
else {
stepperState = HIGH;
}
digitalWrite(dirPin, stepperState);
Serial.println(stepperState);
}