byte button_ped_Pin = 13;
byte pedButtonState;
byte led1Pin = 10;
bool led_ped_on = false;
unsigned int delay_ped = 4000;
unsigned long pedTimer;
bool lastPedButtonState = HIGH;
unsigned int delay_to_processing = 5000;
unsigned int processing_time = 3000;
enum State {
IDLE,
WAITING,
PROCESSING
};
State currentState = IDLE;
void setup() {
pinMode(button_ped_Pin, INPUT_PULLUP);
pinMode(led1Pin, OUTPUT);
Serial.begin(9600);
}
void loop() {
pedButtonState = digitalRead(button_ped_Pin);
delay(200);
switch (currentState) {
case IDLE:
if (pedButtonState != lastPedButtonState) {
if (pedButtonState == LOW) {
Serial.println("Pedestrian request registered");
pedTimer = millis();
currentState = WAITING;
};
}
lastPedButtonState = pedButtonState;
break;
case WAITING:
if (millis() - pedTimer >= delay_to_processing) {
Serial.println("Pedestrian processing");
digitalWrite(led1Pin, HIGH);
pedTimer = millis();
currentState = PROCESSING;
}
break;
case PROCESSING:
if (millis() - pedTimer >= processing_time) {
Serial.println("Pedestrian ending");
digitalWrite(led1Pin, LOW);
currentState = IDLE;
}
break;
}
}