// PINS
#define PIN_BUZZER 8
#define PIN_VERDIEP_3_SENSOR 7
#define PIN_LED 6
#define PIN_BUTTON 5
// States Lift
#define WACHTEND 0
#define OPHALEN 1
#define OPENEND 2
#define WACHTEND_OP_NUMMER 3
#define SLUITEND 4
#define LEVEREN 5
//variabelen
byte liftState = 0;
unsigned long startOpenDeurenInterval = 0;
unsigned long openDeurenInterval = 3000;
unsigned long verlopenTijd = 0;
bool afleveren = false;
String liftStates[] = {"WACHTEND", "OPHALEN", "OPENEND", "WACHTEND_OP_NUMMER", "SLUITEND", "LEVEREN"};
void setup() {
Serial.begin(115200);
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BUZZER, OUTPUT);
pinMode(PIN_BUTTON, INPUT);
pinMode(PIN_VERDIEP_3_SENSOR, INPUT);
digitalWrite(PIN_LED, LOW);
}
void loop() {
Serial.println(liftStates[liftState]);
switch (liftState) {
case WACHTEND: // 0
if (digitalRead(PIN_BUTTON) == LOW) {
liftState = OPHALEN;
digitalWrite(PIN_LED, !digitalRead(PIN_LED));
delay(10);
}
break;
case OPHALEN: // 1
if (digitalRead(PIN_VERDIEP_3_SENSOR) == LOW) {
liftState = OPENEND;
digitalWrite(PIN_LED, !digitalRead(PIN_LED));
tone(PIN_BUZZER, 1400, 100);
delay(10);
}
break;
case OPENEND: // 2
delay(1000);
liftState = WACHTEND_OP_NUMMER;
startOpenDeurenInterval = millis();
break;
case WACHTEND_OP_NUMMER: // 3
verlopenTijd = millis() - startOpenDeurenInterval;
if (verlopenTijd > openDeurenInterval) {
liftState = SLUITEND;
} else {
if (digitalRead(PIN_BUTTON) == LOW) {
liftState = SLUITEND;
afleveren = true;
}
}
break;
case SLUITEND: // 4
if (afleveren == true) {
liftState = LEVEREN;
} else {
liftState = WACHTEND;
}
break;
case LEVEREN: // 5
delay (2000);
afleveren = false;
liftState = OPENEND;
break;
default:
Serial.println("er is iets vreemd gebeurd");
break;
}
}