//state LED
int state_left_1, state_right_1, state_left_2, state_right_2;
int state_i = 0;
int state_a = 0;
int state_q = 0;
int state_led = 0;
//state PB
#define PB1 10
int state_PB = 0;
int last_state_PB = 0;
int count_PB = 0;
//Millis
unsigned long prev_millis = 0;
unsigned long time;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
for(int i=0; i<5;i++){
digitalWrite(5, HIGH);
digitalWrite(7, LOW);
delay(500);
digitalWrite(5, LOW);
digitalWrite(7, HIGH);
delay(500);
}
digitalWrite(7, LOW);
}
void loop() {
unsigned long currentMillis = millis();
time = currentMillis;
state_PB = digitalRead(PB1);
if(state_PB != last_state_PB){
if(digitalRead(PB1)==LOW){
count_PB++;
}
last_state_PB = state_PB;
}
if(count_PB>1){
count_PB = 0;
}
switch (count_PB){
case 0:
second();
break;
case 1:
third();
break;
}
}
void second(){
state_right_1 = 2 + state_i;
state_left_1 = 9 - state_i;
switch (state_a){
case 0:
if(time - prev_millis >= 500){
prev_millis = time;
digitalWrite(state_right_1, LOW);
state_i++;
}else{
digitalWrite(state_right_1, HIGH);
if(state_PB != last_state_PB){
if(digitalRead(PB1)==LOW){
count_PB++;
}
last_state_PB = state_PB;
break;
}
if(count_PB>1){
count_PB = 0;
}
}
if(state_i>7)
{state_i=0;
state_a=1;}
break;
case 1:
if(time - prev_millis >= 500){
prev_millis = time;
digitalWrite(state_left_1, LOW);
state_i++;
}else{
digitalWrite(state_left_1, HIGH);
if(state_PB != last_state_PB){
if(digitalRead(PB1)==LOW){
count_PB++;
}
last_state_PB = state_PB;
break;
}
if(count_PB>1){
count_PB = 0;
}
}
if(state_i>7)
{state_i=0;
state_a=0;
Serial.println(state_a);}
break;
}
Serial.print("State : "); Serial.println(count_PB);
}
void third(){
state_left_2 = 9-state_q;
state_right_2 = 2+state_q;
if(time - prev_millis >= 500UL){
prev_millis = time;
digitalWrite(state_left_2, LOW);
digitalWrite(state_right_2, LOW);
state_q++;
}else{
digitalWrite(state_left_2, HIGH);
digitalWrite(state_right_2, HIGH);
if(state_PB != last_state_PB){
if(digitalRead(PB1)==LOW){
count_PB++;
}
last_state_PB = state_PB;
}
if(count_PB>1){
count_PB = 0;
}
if(state_q>7)state_q=0;
Serial.print("State :");Serial.println(count_PB);
}
}