Lights code problem

This is brilliant! My project is very similar in function but uses 4 buttons and 13 LEDs, written with simple digitalWrites() and delays(). Obviously, any button push is hit/miss with all the delay statements. I never thought to write a time holder in place of the delays, how simple is that!? I will share my results when I finish the setup. Thank you for sharing this.

EDIT: Here is what I came up with using your sketch. Yes, I still have some cleanup to do. I'm looking into more options to simplify also, as this version has more lines than my original plan. However, this one functions very well in response to button pushes. Thank you again for sharing this and to everyone else who has been helpful on the subject. I'm just 5 days into learning this stuff and have gained only a drop of water compared to the ocean, but love to explore!


const int LED1 = 31;   // blue
const int LED2 = 33;   // blue
const int LED3 = 35;   // white
const int LED4 = 37;   // white
const int LED5 = 39;   // white
const int LED6 = 41;   // white
const int LED7 = 43;   // blue
const int LED8 = 45;   // blue
                       // lower lights
const int LED9 = 2;    // white
const int LED10 = 3;   // blue
const int LED11 = 5;   // blue
const int LED12 = 6;   // white
                       // in cab
const int LED13 = 12;  // red indicator

int buttonPin3 = 18;  // left TA
int buttonPin = 19;   // case +
int buttonPin2 = 21;  // case -
int buttonPin4 = 20;  // right TA
int initial = 0;
int oldstate = 0;
int buttonstate = 0;

int myTime = (millis);  // Variable for flash control

void setup() {
  Serial.begin(9600);  // Initialize Serial
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  pinMode(LED9, OUTPUT);
  pinMode(LED10, OUTPUT);
  pinMode(LED11, OUTPUT);
  pinMode(LED12, OUTPUT);
  pinMode(LED13, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(buttonPin2, INPUT_PULLUP);
  pinMode(buttonPin3, INPUT_PULLUP);
  pinMode(buttonPin4, INPUT_PULLUP);
}

void Power_On() {  // Red Indicator on
  digitalWrite(LED13, HIGH);
}

void WigWag() {  // BLUE x4
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  //WHITE X4
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
}

void Blue_White() {  //ALL BLUE X4
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  //ALL WHITE X4
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
}

void Double_Pulse() {  //2x Fast
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(200);  //Longer Pause Mid Cycle
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(700);
}

void Ping_Pong() {  // Left to Right
  digitalWrite(LED1, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  mydelay(70);
  digitalWrite(LED2, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  mydelay(70);
  digitalWrite(LED4, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  mydelay(70);
  digitalWrite(LED6, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, HIGH);
  mydelay(140);
  // Right to Left
  digitalWrite(LED8, LOW);
  digitalWrite(LED12, LOW);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(70);
  digitalWrite(LED7, LOW);
  digitalWrite(LED6, HIGH);
  mydelay(70);
  digitalWrite(LED6, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(70);
  digitalWrite(LED5, LOW);
  digitalWrite(LED4, HIGH);
  mydelay(70);
  digitalWrite(LED4, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(70);
  digitalWrite(LED3, LOW);
  digitalWrite(LED2, HIGH);
  mydelay(70);
  digitalWrite(LED2, LOW);
  digitalWrite(LED1, HIGH);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED9, LOW);
}

void Pulse_and_Sweep() {
  //  ALL BLUE X2
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(100);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(100);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  mydelay(70);
  // LEFT TO RIGHT
  digitalWrite(LED1, HIGH);
  digitalWrite(LED9, HIGH);
  delay(50);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  mydelay(50);
  digitalWrite(LED2, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(50);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  mydelay(50);
  digitalWrite(LED4, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(50);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  mydelay(50);
  digitalWrite(LED6, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(50);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, HIGH);
  mydelay(50);
  digitalWrite(LED8, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  // ALL WHITE X2
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(100);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(100);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  // RIGHT TO LEFT
  digitalWrite(LED8, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(50);
  digitalWrite(LED8, LOW);
  digitalWrite(LED7, HIGH);
  mydelay(50);
  digitalWrite(LED7, LOW);
  digitalWrite(LED12, LOW);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(50);
  digitalWrite(LED6, LOW);
  digitalWrite(LED5, HIGH);
  mydelay(50);
  digitalWrite(LED5, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(50);
  digitalWrite(LED4, LOW);
  digitalWrite(LED3, HIGH);
  mydelay(50);
  digitalWrite(LED3, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(50);
  digitalWrite(LED2, LOW);
  digitalWrite(LED1, HIGH);
  mydelay(50);
  digitalWrite(LED1, LOW);
  digitalWrite(LED9, LOW);
  mydelay(50);
}


void Jumpy() {  // Rapid Pulses
  digitalWrite(LED4, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(30);
  digitalWrite(LED4, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(30);
  digitalWrite(LED4, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(30);
  digitalWrite(LED7, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(30);
  digitalWrite(LED7, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(30);
  digitalWrite(LED3, LOW);
  digitalWrite(LED10, LOW);
  mydelay(50);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(30);
  digitalWrite(LED3, LOW);
  digitalWrite(LED10, LOW);
  mydelay(50);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(30);
  digitalWrite(LED2, LOW);
  digitalWrite(LED10, LOW);
  mydelay(50);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(30);
  digitalWrite(LED2, LOW);
  digitalWrite(LED10, LOW);
  mydelay(50);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(30);
  digitalWrite(LED6, LOW);
  digitalWrite(LED11, LOW);
  mydelay(50);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(30);
  digitalWrite(LED6, LOW);
  digitalWrite(LED11, LOW);
  mydelay(50);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(30);
  digitalWrite(LED8, LOW);
  digitalWrite(LED11, LOW);
  mydelay(50);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(30);
  digitalWrite(LED8, LOW);
  digitalWrite(LED11, LOW);
  mydelay(50);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(30);
  digitalWrite(LED1, LOW);
  digitalWrite(LED9, LOW);
  mydelay(50);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(30);
  digitalWrite(LED1, LOW);
  digitalWrite(LED9, LOW);
  mydelay(50);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(30);
  digitalWrite(LED5, LOW);
  digitalWrite(LED9, LOW);
  mydelay(50);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(30);
  digitalWrite(LED5, LOW);
  digitalWrite(LED9, LOW);
  mydelay(50);
  // All Pulse
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(30);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(30);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(50);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(50);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(30);
  // Sweep Right to Left
  digitalWrite(LED8, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(50);
  digitalWrite(LED8, LOW);
  digitalWrite(LED7, HIGH);
  mydelay(50);
  digitalWrite(LED7, LOW);
  digitalWrite(LED12, LOW);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(50);
  digitalWrite(LED6, LOW);
  digitalWrite(LED5, HIGH);
  mydelay(50);
  digitalWrite(LED5, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(50);
  digitalWrite(LED4, LOW);
  digitalWrite(LED3, HIGH);
  mydelay(50);
  digitalWrite(LED3, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(50);
  digitalWrite(LED2, LOW);
  digitalWrite(LED1, HIGH);
  mydelay(50);
  digitalWrite(LED1, LOW);
  digitalWrite(LED9, LOW);
  mydelay(50);
  // Sweep Left to Right
  digitalWrite(LED1, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(50);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  mydelay(50);
  digitalWrite(LED2, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(50);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  mydelay(50);
  digitalWrite(LED4, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(50);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  mydelay(50);
  digitalWrite(LED6, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(50);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, HIGH);
  mydelay(50);
  digitalWrite(LED8, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
  // Sweep Right to Left
  digitalWrite(LED8, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(50);
  digitalWrite(LED8, LOW);
  digitalWrite(LED7, HIGH);
  mydelay(50);
  digitalWrite(LED7, LOW);
  digitalWrite(LED12, LOW);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(50);
  digitalWrite(LED6, LOW);
  digitalWrite(LED5, HIGH);
  mydelay(50);
  digitalWrite(LED5, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(50);
  digitalWrite(LED4, LOW);
  digitalWrite(LED3, HIGH);
  mydelay(50);
  digitalWrite(LED3, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(50);
  digitalWrite(LED2, LOW);
  digitalWrite(LED1, HIGH);
  mydelay(50);
  digitalWrite(LED1, LOW);
  digitalWrite(LED9, LOW);
  mydelay(50);
  // Sweep Left to Right
  digitalWrite(LED1, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(50);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  mydelay(50);
  digitalWrite(LED2, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(50);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  mydelay(50);
  digitalWrite(LED4, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(50);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  mydelay(50);
  digitalWrite(LED6, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(50);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, HIGH);
  mydelay(50);
  digitalWrite(LED8, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
}

void TA_Left() {  // +1 LED RIGHT TO LEFT
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(100);
  digitalWrite(LED9, LOW);
  mydelay(75);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(175);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(100);
  digitalWrite(LED10, LOW);
  mydelay(75);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(175);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(100);
  digitalWrite(LED11, LOW);
  mydelay(75);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(175);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(100);
  digitalWrite(LED12, LOW);
  mydelay(75);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(175);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  mydelay(175);
  // X5 PULSE- ALL LEDS
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(175);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(100);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(200);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
}


void TA_Right() {  // +1 LED LEFT TO RIGHT
  digitalWrite(LED1, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(100);
  digitalWrite(LED12, LOW);
  mydelay(75);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(175);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(100);
  digitalWrite(LED11, LOW);
  mydelay(75);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED11, HIGH);
  mydelay(175);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(100);
  digitalWrite(LED10, LOW);
  mydelay(75);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED10, HIGH);
  mydelay(175);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(100);
  digitalWrite(LED9, LOW);
  mydelay(75);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  mydelay(175);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  delay(175);
  // X5 PULSE- ALL LEDS
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(175);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(70);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(70);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(100);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);
  mydelay(200);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
  digitalWrite(LED11, LOW);
  digitalWrite(LED12, LOW);
  mydelay(50);
}

void loop() {
  mydelay(myTime);                       // Check button
  buttonstate = digitalRead(buttonPin);  // Put all this comand on delay routine
  if (buttonstate == HIGH) {
    delay(20);
    buttonstate = digitalRead(buttonPin);
    if (buttonstate == LOW)
      initial = oldstate + 1;
  }
  if (buttonstate == HIGH) {
    delay(20);
    buttonstate = digitalRead(buttonPin2);
    if (buttonstate == LOW)
      initial = oldstate - 1;
  }

  if (buttonstate == HIGH) {
    delay(20);
    buttonstate = digitalRead(buttonPin3);
    if (buttonstate == LOW)
      initial = oldstate = 8;
  }

  if (buttonstate == HIGH) {
    delay(20);
    buttonstate = digitalRead(buttonPin4);
    if (buttonstate == LOW)
      initial = oldstate = 9;
  }



  switch (initial) {
    case 1:        //2
      myTime = 0;  // Restore delay time
      Power_On();
      oldstate = initial;
      loop();
      break;

    case 2:        //3
      myTime = 0;  // Restore delay time
      WigWag();
      oldstate = initial;
      loop();
      break;

    case 3:        //4
      myTime = 0;  // Restore delay time
      Blue_White();
      oldstate = initial;
      loop();
      break;

    case 4:        //5
      myTime = 0;  // Restore delay time
      Double_Pulse();
      oldstate = initial;
      loop();
      break;

    case 5:        //6
      myTime = 0;  // Restore delay time
      Ping_Pong();
      oldstate = initial;
      loop();
      break;

    case 6:        //7
      myTime = 0;  // Restore delay time
      Pulse_and_Sweep();
      oldstate = initial;
      loop();
      break;

    case 7:        //8
      myTime = 0;  // Restore delay time
      Jumpy();
      oldstate = initial;
      loop();
      break;

    case 8:        //9
      myTime = 0;  // Restore delay time
      TA_Left();
      oldstate = initial;
      loop();
      break;

    case 9:
      myTime = 0;  // Restore delay time
      TA_Right();
      oldstate = initial;
      loop();
      break;

    default:
      myTime = 0;  // Restore delay time
      digitalWrite(LED13, LOW);
      oldstate = 0;
      break;
  }
}
//-------------------------------------------------------
void mydelay(int time)  // Rotine for flash with minimal block
{
  for (int i = 0; i < time; i++)  // Run delay times
  {
    delay(1);                           // Delay 1 milisecond
    if (digitalRead(buttonPin) == LOW)  // Verify button pressed
    {
      delay(20);                             // Debouncing time
      if (digitalRead(buttonPin) == CHANGE)  // Confirme if button is pressed
      {
        Serial.println(initial);  // Print sequence value
        initial = oldstate + 1;   // incremente sequence valu
        myTime = 0;               // Zero mytime to stop   next flashing
        // Hold to no increase sequence continus
        {
          delay(1);
          if (digitalRead(buttonPin2) == LOW) {
            delay(20);
            if (digitalRead(buttonPin2) == CHANGE)

            {
              Serial.println(initial);
              initial = oldstate - 1;
              myTime = 0;
              {
                delay(1);
                if (digitalRead(buttonPin3) == LOW) {
                  delay(20);
                  if (digitalRead(buttonPin3) == CHANGE)

                  {
                    Serial.println(initial);
                    initial = oldstate = 8;
                    myTime = 0;

                    {
                      delay(1);
                      if (digitalRead(buttonPin4) == LOW) {
                        delay(20);
                        if (digitalRead(buttonPin4) == CHANGE)

                        {
                          Serial.println(initial);
                          initial = oldstate = 9;
                          myTime = 0;
                          return;  // Return to loop
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

I suggest you read about arrays....
It will save a lot of copy paste edit...

Indeed! Looks a bit tricky for my current level of understanding...in time. The sketch does work really well for me at the moment even though it's good keyboard practice. I'm currently trying to figure out EEPROM stuff so I can return to the last function used at power off. I understand it has a limited amount of writes (100k) or so, but for what I'm using this for it'll take a few hundred years to burn it out as it might be making a write once or twice a week.

@fightsy,

Topic split from another topic. Please do not add your own questions to the end of other people's topics.

Could you take a few moments to Learn How To Use The Forum

It will help you get the best out of the forum in the future.

Thank you.

  switch (initial) {
    case 1:        //2
      myTime = 0;  // Restore delay time
      Power_On();
      oldstate = initial;
      loop();    // <<<< THIS
      break;

There are multiple places in your loop function where you call loop. This is called recursion and will crash your code in no time. Unless you really understand what you are doing never call a function from within the function itself.

Instead of buttonPin, buttonPin2, buttonPin3, and buttonPin4 why don't you call them buttonLeftTA, buttonCasePlus, buttonCaseMinus, and buttonRightTA?

Also, I would suggest using the const keyword.

int buttonPin3 = 18;  // left TA
int buttonPin = 19;   // case +
int buttonPin2 = 21;  // case -
int buttonPin4 = 20;  // right TA

This makes no sense. millis is an Arduino function.

int myTime = (millis); // Variable for flash control

This doesn't make any sense either:

    if (digitalRead(buttonPin) == LOW)  // Verify button pressed
    {
      delay(20);                             // Debouncing time
      if (digitalRead(buttonPin) == CHANGE)  // Confirme if button is pressed

Why are you using CHANGE?

I appreciate the info, Perry. I was just sharing what I learned from the original post and what I intended to focuson next. I didn't mean for it to be taken as a question.

I suppose I could have labeled the buttons differently. EDIT: int myTime = (millis) only to remind myself that the time is in milliseconds, I should have added that as part of the comment. I used CHANGE because it was the only "state" that I could get the code to function properly, HIGH or LOW either set the loop into action without the button press or without having to hold the button down for the loop to complete. It may be related to what @PerryBebbington had mentioned about the loop() function being posted within the switch cases within the loop. The sketch does work as it is, however, it's not perfect as it still essentially uses delay() to time the HIGH/LOW cycles. It does work better than the hit-and-miss of just using delay alone. I've run this on Wokwi, and my Mega2560 board for hours without crashing.

Hmm.
Sorry but it looked like a question to me. It's being treated like a question because you are starting to get help and advice, which means it's better separate so it's clear the help is for you, not the person who started the other topic.

I understand. Thank you again for your advice, I'll try to be more accurate with my wording.

What this line of code ACTUALLY does it take the address of the millis() function and assign it to myTime. I have no idea what that will be since it depends on the compiler and linker and the fact that an address is 4 bytes and an int is 2 bytes (on this processor). The first time you call mydelay() in loop() you will have some undetermined number in myTime.

CHANGE is not a state but an enum that defines a mode to the attachinterrupt() function. If you print the value of CHANGE it shows the value 1 which happens to be the same as the value for HIGH. You can't depend on that in the future because, technically, someone could decide to change the value of that enumeration. I would recommend using HIGH.

Also, as @PerryBebbington said there is no reason to call loop() from loop(). If you let it run long enough it is guaranteed to crash!

Since we're on the subject, the case loops within the main loop, if I remove them the program cycles through each case one time without user input. This has been the only way I have found so far to have each case loop on itself continuously until a button push changes the case.

Calling loop() causes loop() to start over. You could replace each call to loop() with a return which would also cause loop to start over but it would pop the return address off of the stack and prevent a stack overflow thus avoiding a crash.

However, the switch() is the last construct in loop() and therefore when a case block encounters the break statement it will fall out of the switch and return from loop() causing loop to be called again.

All 3 of these solutions cause loop() to get called again. The only difference is your current method will end in a crash eventually.

Works just as well, Thank you for that. I am still very new to programming, It's a lot to take in even for a simple sketch like this, it's easy to overlook the obvious when researching the terminology.

switch (initial) {
    case 1:        //2
      myTime = 0;  // Restore delay time
      Power_On();
      oldstate = initial;
      return;
      

    case 2:        //3
      myTime = 0;  // Restore delay time
      WigWag();
      oldstate = initial;
      return;
      

    case 3:        //4
      myTime = 0;  // Restore delay time
      Blue_White();
      oldstate = initial;
      return;
      

    case 4:        //5
      myTime = 0;  // Restore delay time
      Double_Pulse();
      oldstate = initial;
      return;
      

Edit: removed break; 's also Thanks @Semperldem

There really is very little point putting a break immediately after a return

Amen.

One more thing. When you call mydelay(myTime) at the top of loop() it is not going to do anything after you set myTime to 0. The for loop in mydelay() will not execute because myTime never gets set to anything but 0. You might as well remove that call and all references to myTime.

I had wondered about that. It was part of the original user's sketch, since it was working I left it alone. :smile: I don't know if they had put that in there as a time frame to sense a button push set as an interrupt and never added the interrupts. I can't find a reference to where this would be any different than just using delay. The mydelay function does seem to help recognize the user inputs though, running essentially the same sketch with standard delay statements is almost useless. This is responsive at least.

So this could be the situation why when I use HIGH as the sketch is written now with all the myTimes set at 0 that the cases don't function as intended- ie, only completes the loop while holding the button, vice-versa when set to LOW cycles every case in the entire loop without user input. Perhaps myTimes need to be set per case for total legnth of the function with state set to HIGH?

You have not yet understood what code-blocks and what nesting is.
Your function mydelay() works this way

if (digitalRead(buttonPin) == LOW)  // Verify button pressed
{
  // only in case
  // if (digitalRead(buttonPin) == LOW) is true
  if (digitalRead(buttonPin) == CHANGE)  // Confirme if button is pressed
  {
    // only in case
    // if (digitalRead(buttonPin) == LOW) is true
    // AND
    // if (digitalRead(buttonPin) == CHANGE) is true
    if (digitalRead(buttonPin2) == LOW) {
      {
        // only in case
        // if (digitalRead(buttonPin) == LOW) is true
        // AND
        // if (digitalRead(buttonPin) == CHANGE) is true
        // AND
        // if (digitalRead(buttonPin2) == LOW) is true
        if (digitalRead(buttonPin3) == LOW) {

You have nested all your if-conditions
These if-conditions are on different levels

and this means only if each and every if-condition that is on a level above is true
which means ALL the if-conditions must be true the same time
the next if-condition will be checked

You would have to press more and more buttons at the same time as deeper as you want to come in the "nest"

I'm very sure that this is not your intention.

I guess that you wrote a lot of code and only after writing a lot of code you started testing.
This writing too much code before testing lead to the situation where you are now.

Without other users that point you to the bugs you would have guessed around for weeks and months what the bug might be
and this means it would have taken you 10 times longer to find the bugs
compared to a different way of coding
add a few lines and

RE-test

You thought you could "save" time by not re-testing every few lines of code
I hope now you can see that re-testing every few lines of code is a big time-saver

additionally you should ask much more in the forum as an interactive way of learning new programming techniques

Example:
with defining an array for your IO-pin-numbers

const byte allMyLEDs[12] = {
  31,   // LED1 blue   Array-Index  0
  33,   // LED2 blue   Array-Index  1
  35,   // LED3 white  Array-Index  2
  37,   // LED4 white  Array-Index  3
  39,   // LED5 white  Array-Index  4
  41,   // LED6 white  Array-Index  5
  43,   // LED7 blue   Array-Index  6
  45,   // LED8 blue   Array-Index  7

   2,   // LED9 white  Array-Index  8
   3,   // LED10 blue  Array-Index  9
   5,   // LED11 blue  Array-Index 10
   6    // LED12 white Array-Index 11
};

your function Double_Pulse boils down to

void Double_Pulse() {  //2x Fast
  for (byte Index = 0; Index < 12; Index++) { // 12 LEDs index runs from ZERO to 11
    digitalWrite(allMyLEDs[Index], HIGH);
  }
  mydelay(70);
  for (byte Index = 0; Index < 13; Index++) {
    digitalWrite(allMyLEDs[Index], LOW);
  }
  mydelay(50);
  for (byte Index = 0; Index < 13; Index++) {
    digitalWrite(allMyLEDs[Index], HIGH);
  }
  mydelay(70);
  for (byte Index = 0; Index < 13; Index++) {
    digitalWrite(allMyLEDs[Index], LOW);
  }
  mydelay(200);  //Longer Pause Mid Cycle
  for (byte Index = 0; Index < 13; Index++) {
    digitalWrite(allMyLEDs[Index], HIGH);
  }
  mydelay(70);
  for (byte Index = 0; Index < 13; Index++) {
    digitalWrite(allMyLEDs[Index], LOW);
  }
  mydelay(50);
  for (byte Index = 0; Index < 13; Index++) {
    digitalWrite(allMyLEDs[Index], HIGH);
  }
  mydelay(70);
  for (byte Index = 0; Index < 13; Index++) {
    digitalWrite(allMyLEDs[Index], LOW);
  }
  mydelay(700);
}
  for (byte Index = 0; Index < 12; Index++) { // 12 LEDs index runs from ZERO to 11
    digitalWrite(allMyLEDs[Index], HIGH);
  }

does the same as

  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(LED12, HIGH);

This principle can be applied to the delaytime 50,70,200 and to the logic state HIGH,LOW too
and this makes it possible to shorten down your code to a few lines of code

In your other functions some of the LEDs are not changed
here in the additional arrays you just set logical state "LOW"

then you can use always the same basic structure to switch on/off in different pattern
and delaying with different times
just by using a different array

as a learning source
Take a look into this tutorial:

Arduino Programming Course

It is easy to understand and has a good mixture between explaining important concepts and example-codes to get you going. So give it a try and report your opinion about this tutorial.

best regards Stefan

Thank you to everyone for the help and advice, it really is appreciated. I haven't had much time to work on this project the past few weeks, but I will be looking into the course recommended. @StefanL38, you're absolutely correct, I really don't fully understand even the basics yet. I do enjoy the learning process that comes with anything new though. The advice I've received from the forums have been the most help so far. The basic stuff that's on the Arduino website help section has been useful to a point, but for novice folks like me it's still a little much to grasp the inner makings of how it all works best together. The example you've shown here looks simple enough, but for now I think I'll take your advice and further my education with some courses before attempting the re-write. I'll post back when I have an update.