int led_main=8;
int led_1_red=2;
int led_1_green=3;
int led_2_red=4;
int led_2_green=5;
int led_3_red=6;
int led_3_green=7;
int button_main=9;
int button_1=10;
int button_2=11;
int button_3=12;
int state_main=1;
int state_1=1;
int state_2=1;
int state_3=1;
int led_1_state=0;
int led_2_state=0;
int led_3_state=0;
int led_1_gstate=1;
int led_2_gstate=1;
int led_3_gstate=1;
void setup() {
// Serial.begin(9600);
// Serial.println("starting");
pinMode(led_main, OUTPUT);
pinMode(led_1_red, OUTPUT);
pinMode(led_1_green, OUTPUT);
pinMode(led_2_red, OUTPUT);
pinMode(led_2_green, OUTPUT);
pinMode(led_3_red, OUTPUT);
pinMode(led_3_green, OUTPUT);
// Serial.println("leds installed");
pinMode(button_main, INPUT_PULLUP);
pinMode(button_1, INPUT_PULLUP);
pinMode(button_2, INPUT_PULLUP);
pinMode(button_3, INPUT_PULLUP);
// Serial.println("buttons installed");
}
void loop() {
randomSeed(analogRead(0));
while(state_main==1){
// Serial.println("main button off");
state_main=digitalRead(button_main);
if (led_1_state==0){
state_1=digitalRead(button_1);
}
if (led_2_state==0){
state_2=digitalRead(button_2);
}
if (led_3_state==0){
state_3=digitalRead(button_3);
}
if (state_1==0){
digitalWrite(led_1_red, HIGH);
led_1_state=1;
}
if (state_2==0){
digitalWrite(led_2_red, HIGH);
led_2_state=1;
}
if (state_3==0){
digitalWrite(led_3_red, HIGH);
led_3_state=1;
}
if (state_1==0 && state_2==0 && state_3==0 ){
int rand = random(3);
if(rand==1){
goto select1;
}else if(rand==2){
goto select2;
}else{
goto select3;
}
}
}
digitalWrite(led_main, HIGH);
while (state_main==0){
// Serial.println("main_button_pressed");
if(led_1_state==0){
led_1_gstate=digitalRead(button_1);
}
if(led_2_state==0){
led_2_gstate=digitalRead(button_2);
}
if(led_3_state==0){
led_3_gstate=digitalRead(button_3);
}
if (led_1_gstate==0){
select1:
digitalWrite(led_1_green, HIGH);
digitalWrite(led_2_red, HIGH);
digitalWrite(led_3_red, HIGH);
goto getout;
}
if (led_2_gstate==0){
select2:
digitalWrite(led_2_green, HIGH);
digitalWrite(led_1_red, HIGH);
digitalWrite(led_3_red, HIGH);
goto getout;
}
if (led_3_gstate==0){
select3:
digitalWrite(led_3_green, HIGH);
digitalWrite(led_1_red, HIGH);
digitalWrite(led_2_red, HIGH);
goto getout;
}
}
getout:
// Serial.println("end");
state_main=digitalRead(button_main);
while(state_main==1){
state_main=digitalRead(button_main);
// Serial.println("inside state main 1");
}
digitalWrite(led_1_red, LOW);
digitalWrite(led_1_green, LOW);
digitalWrite(led_2_red, LOW);
digitalWrite(led_2_green, LOW);
digitalWrite(led_3_red, LOW);
digitalWrite(led_3_green, LOW);
digitalWrite(led_main, LOW);
state_1=1;
state_2=1;
state_3=1;
led_1_state=0;
led_2_state=0;
led_3_state=0;
led_1_gstate=1;
led_2_gstate=1;
led_3_gstate=1;
while(state_main==0){
state_main=digitalRead(button_main);
}
delay(2000);
state_main=1;
}