// https://wokwi.com/projects/426956162079958017
// https://forum.arduino.cc/t/programming-limit-switch/1368203

const int relay = 10;

const int limitSwitch = 8;

int currentStep;

unsigned long prevSwitchTime1 = 0;
unsigned long prevSwitchTime2 = 0;

const long switchInterval1 = 3333;
const long switchInterval2 = 4444;

// switch wiring:
# define PRESST LOW

// relay module sense:
# define RUN HIGH
# define STOP LOW

void setup() {
  Serial.begin(115200);  // 21st century be here
  Serial.println("\none at a time!\n");

  pinMode(relay, OUTPUT);
  pinMode(limitSwitch, INPUT_PULLUP);

  digitalWrite(relay, STOP);

  currentStep = 0;    // yes, it does already. sue me.
}

void loop() {

  switch (currentStep) {

    case 0:
      if (digitalRead(limitSwitch) == PRESST) {
        Serial.println("     because you hit the limit");
        digitalWrite(relay, RUN);
        prevSwitchTime1 = millis();
        prevSwitchTime2 = millis();
        currentStep = 1;
      }
      break;

    case 1:
      if (millis() - prevSwitchTime1 >= switchInterval1) {
        Serial.println("     because interval 1 is elapsed");
        digitalWrite(relay, STOP);
        prevSwitchTime1 = millis();
        prevSwitchTime2 = millis();
        currentStep = 2;
      }
      break;

    case 2:
      if (millis() - prevSwitchTime2 >= switchInterval2) {
        Serial.println("     because interval 2 is elapsed");
        digitalWrite(relay, RUN);
        prevSwitchTime1 = millis();
        prevSwitchTime2 = millis();
        currentStep = 3;
      }
      break;

    case 3:

      if (millis() - prevSwitchTime1 >= switchInterval1) {
        Serial.println("     because interval 1 is elapsed again...");
        digitalWrite(relay, STOP);
        prevSwitchTime1 = millis();
        prevSwitchTime2 = millis();
        currentStep = 0;
      }
      break;
  }
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
LIMIT
RELAY