#include <Arduino.h>
volatile int sequence = 0;
int button[] = {12, 26, 32};
int led[] = {13, 16, 33, 17 , 18, 19, 22, 23};
void sequence1_isr(){
sequence = 1;
}
void sequence2_isr(){
sequence = 2;
}
void sequence3_isr(){
sequence = 3;
}
void sequence1();
void sequence2();
void sequence3();
void setup() {
for (int i = 0; i < sizeof(button) / sizeof (button[0]); i++) {
pinMode(button[i] , INPUT_PULLUP);
if (i = 0) {
attachInterrupt(digitalPinToInterrupt(button[i]), sequence1_isr, FALLING);
}
else if (i = 1) {
attachInterrupt(digitalPinToInterrupt(button[i]), sequence2_isr, FALLING);
}
else if (i = 2) {
attachInterrupt(digitalPinToInterrupt(button[i]), sequence3_isr, FALLING);
}
}
for (int i = 0; i < sizeof(led) / sizeof(led[0]); i++) {
pinMode(led[i], OUTPUT);
}
}
void loop(){
if (sequence = 1) {
sequence1();
}
else if (sequence = 2) {
sequence2();
}
else if (sequence = 3) {
sequence3();
}
}
void sequence1(){
for (int i = 0; i< sizeof(led) / sizeof(led[0]); i++){
digitalWrite(led[i], HIGH);
delay(500);
digitalWrite(led[i], LOW);
}
}
void sequence2() {
int ledPairs[4][2] = {{13, 33}, {18, 22}, {34, 35}, {19, 23}};
for ( int i = 0; i < 4; i++){
digitalWrite(led[ledPairs[i][0]], HIGH);
digitalWrite(led[ledPairs[i][1]], HIGH);
delay(500);
digitalWrite(led[ledPairs[i][0]], LOW);
digitalWrite(led[ledPairs[i][1]], LOW);
}
for ( int i = 3; i > 0; i--){
digitalWrite(led[ledPairs[i][0]], HIGH);
digitalWrite(led[ledPairs[i][1]], HIGH);
delay(500);
digitalWrite(led[ledPairs[i][0]], LOW);
digitalWrite(led[ledPairs[i][1]], LOW);
}
}
void sequence3() {
for ( int i = 0; i < 8; i += 2 ) {
digitalWrite(led [i], HIGH);
delay(500);
digitalWrite(led [i], LOW);
}
for ( int i = 1; i < 8; i += 2){
digitalWrite(led [i], HIGH);
delay(500);
digitalWrite(led [i], LOW);
}
}