int leftLEDs[] = {13, 12, 11};
int rightLEDs[] = {10, 9, 8};
int btnPin[] = {7, 6};
int btnState[] = {0, 0};
unsigned long Time = 0;
int State = 0;
long timing[] = {5000, 2000, 500, 200};
void setup() {
for (int i = 0; i < 3; i++) {
pinMode(leftLEDs[i], OUTPUT);
pinMode(rightLEDs[i], OUTPUT);
}
for (int i = 0; i < 2; i++) {
pinMode(btnPin[i], INPUT);
}
Serial.begin(9600);
Time = millis();
}
void loop() {
btnState[0] = digitalRead(btnPin[0]);
btnState[1] = digitalRead(btnPin[1]);
if (btnState[0] == HIGH) {
if (State == 0 || State == 1) {
State = 0;
} else if (State == 2 || State == 3) {
State = 6;
}
sequence();
} else if (btnState[1] == HIGH) {
if (State == 0) {
State = 4;
} else if (State == 1) {
State = 5;
} else if (State == 2 || State == 3) {
State = 2;
}
sequence();
} else {
sequence();
}
}
void sequence(){
unsigned long currentTime = millis();
unsigned long elapsedTime = currentTime - Time;
if (State == 0) {
if (elapsedTime < timing[0]) {
// Loop through the pins (assuming leftLEDs and rightLEDs are arrays with 3 elements)
for (int i = 0; i < 3; i++) {
// Set the current rightPin to HIGH if it's the first pin (index 0), else set it to LOW
digitalWrite(leftLEDs[i], i == 0 ? HIGH : LOW);
// Set the current leftPin to HIGH if it's the third pin (index 2), else set it to LOW
digitalWrite(rightLEDs[i], i == 2 ? HIGH : LOW);
}
} else {
State = 1;
Time = currentTime;
}
} else if (State == 1) {
if (elapsedTime < timing[1]) {
for (int i = 0; i < 3; i++) {
digitalWrite(leftLEDs[i], i == 0 ? HIGH : LOW);
digitalWrite(rightLEDs[i], i == 1 ? HIGH : LOW);
}
} else {
State = 2;
Time = currentTime;
}
} else if (State == 2) {
if (elapsedTime < timing[0]) {
for (int i = 0; i < 3; i++) {
digitalWrite(leftLEDs[i], i == 2 ? HIGH : LOW);
digitalWrite(rightLEDs[i], i == 0 ? HIGH : LOW);
}
} else {
State = 3;
Time = currentTime;
}
} else if (State == 3) {
if (elapsedTime < timing[1]) {
for (int i = 0; i < 3; i++) {
digitalWrite(leftLEDs[i], i == 1 ? HIGH : LOW);
digitalWrite(rightLEDs[i], i == 0 ? HIGH : LOW);
}
} else {
State = 0;
Time = currentTime;
}
} else if (State == 4) {
if (elapsedTime < timing[2]) {
for (int i = 0; i < 3; i++) {
digitalWrite(leftLEDs[i], i == 0 ? HIGH : LOW);
digitalWrite(rightLEDs[i], i == 2 ? HIGH : LOW);
}
} else {
State = 5;
Time = currentTime;
}
} else if (State == 5) {
if (elapsedTime < timing[3]) {
for (int i = 0; i < 3; i++) {
digitalWrite(leftLEDs[i], i == 0 ? HIGH : LOW);
digitalWrite(rightLEDs[i], i == 1 ? HIGH : LOW);
}
} else {
State = 2;
Time = currentTime;
}
}else if (State == 6) {
if (elapsedTime < timing[2]) {
for (int i = 0; i < 3; i++) {
digitalWrite(leftLEDs[i], i == 2 ? HIGH : LOW);
digitalWrite(rightLEDs[i], i == 0 ? HIGH : LOW);
}
} else {
State = 7;
Time = currentTime;
}
}else if (State == 7) {
if (elapsedTime < timing[3]) {
for (int i = 0; i < 3; i++) {
digitalWrite(leftLEDs[i], i == 1 ? HIGH : LOW);
digitalWrite(rightLEDs[i], i == 0 ? HIGH : LOW);
}
} else {
State = 0;
Time = currentTime;
}
}
}