#define FRONT_LED A0
#define BACK_LED A1
#define STOP_LED A2
#define DEST_LED_L A3
#define DEST_LED_R A4
#define FRONT_BUTTON 2
#define BACK_BUTTON 3
#define STOP_BUTTON 4
#define DEST_BUTTON_L 5
#define DEST_BUTTON_R 6
bool flag_dest = false;
bool flag_front = false;
bool flag_front_state = false;
void setup() {
//Serial.begin(115200);
pinMode(STOP_LED, OUTPUT);
pinMode(FRONT_LED, OUTPUT);
pinMode(DEST_LED_L, OUTPUT);
pinMode(DEST_LED_R, OUTPUT);
pinMode(STOP_BUTTON, INPUT_PULLUP);
pinMode(FRONT_BUTTON, INPUT_PULLUP);
pinMode(DEST_BUTTON_L, INPUT_PULLUP);
pinMode(DEST_BUTTON_R, INPUT_PULLUP);
}
void blink_dest(int dest){
if (dest == 0){
digitalWrite(DEST_LED_L, HIGH);
delay(250);
digitalWrite(DEST_LED_L, LOW);
delay(250);
}
if (dest == 1){
digitalWrite(DEST_LED_R, HIGH);
delay(250) ;
digitalWrite(DEST_LED_R, LOW);
delay(250);
}
}
void loop() {
bool stop_btn = !digitalRead(STOP_BUTTON);
bool front_btn = !digitalRead(FRONT_BUTTON);
bool dest_l_btn = !digitalRead(DEST_BUTTON_L);
bool dest_r_btn = !digitalRead(DEST_BUTTON_R);
if (dest_l_btn || dest_r_btn){
flag_dest = true;
} else{
flag_dest = false;
}
if (dest_l_btn && flag_dest){
blink_dest(0);
} else{
digitalWrite(DEST_LED_L, LOW);
}
if (dest_r_btn && flag_dest){
blink_dest(1);
} else {
digitalWrite(DEST_LED_R, LOW);
}
if (stop_btn){
digitalWrite(STOP_LED, HIGH);
} else {
digitalWrite(STOP_LED, LOW);
}
if (front_btn){
flag_front = true;
}
if (front_btn && flag_front_state){
flag_front = false;
}
if (front_btn && flag_front && !flag_front_state){
digitalWrite(FRONT_LED, HIGH);
flag_front_state = true;
}
if(front_btn && !flag_front && flag_front_state){
digitalWrite(FRONT_LED, LOW);
flag_front_state = false;
}
}