const int buttonForwardPin = 2;
const int buttonBackwardPin = 3;
const int buttonStopPin = 4;
const int endSwitchForwardPin = 5;
const int endSwitchBackwardPin = 6;
const int ledForwardPin = 7;
const int ledBackwardPin = 8;
bool movingForward = false;
bool movingBackward = false;
void setup() {
pinMode(buttonForwardPin, INPUT_PULLUP);
pinMode(buttonBackwardPin, INPUT_PULLUP);
pinMode(buttonStopPin, INPUT_PULLUP);
pinMode(endSwitchForwardPin, INPUT_PULLUP);
pinMode(endSwitchBackwardPin, INPUT_PULLUP);
pinMode(ledForwardPin, OUTPUT);
pinMode(ledBackwardPin, OUTPUT);
digitalWrite(ledForwardPin, LOW);
digitalWrite(ledBackwardPin, LOW);
}
void loop() {
if (digitalRead(buttonForwardPin) == LOW) {
startMovingForward();
} else if (digitalRead(buttonBackwardPin) == LOW) {
startMovingBackward();
} else if (digitalRead(buttonStopPin) == LOW) {
stopMoving();
} else if (digitalRead(endSwitchForwardPin) == LOW) {
triggerEndSwitchForward();
} else if (digitalRead(endSwitchBackwardPin) == LOW) {
triggerEndSwitchBackward();
}
}
void startMovingForward() {
movingForward = true;
movingBackward = false;
digitalWrite(ledForwardPin, HIGH);
digitalWrite(ledBackwardPin, LOW);
}
void startMovingBackward() {
movingBackward = true;
movingForward = false;
digitalWrite(ledBackwardPin, HIGH);
digitalWrite(ledForwardPin, LOW);
}
void stopMoving() {
movingForward = false;
movingBackward = false;
digitalWrite(ledForwardPin, LOW);
digitalWrite(ledBackwardPin, LOW);
}
void triggerEndSwitchForward() {
stopMoving();
delay(5000); // 5 second delay
startMovingBackward();
}
void triggerEndSwitchBackward() {
stopMoving();
delay(5000); // 5 second delay
}