How to select functions randomly in my program

I have very basic programming experience (as you will see) and I want to be able to select from a list of functions in my program randomly or create a program that will randomly select one of four digital outputs and randomly change delays.

The project is a 4-Channel Christmas Light Controller using 4 digital outputs from an UNO board to trigger 4 Crydom Solid State Relays.

Here is the code:

void setup() {
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);

  Chase();      //List of functions
  Alternate1();
  OneOfFour();
  AllOnOff();
  FlipFlop();
  ChaseSlow();
  TwoOfFour();
  ReverseChase();
  Jitter();
  Twinkle();
  AllOn();
  Chase2();
  TwoStep();
}
void loop() {
  for (int i = 0; i, i <= 255; i++) { // Run program 255 times
    AllOn();
    Chase2();
    TwoStep();
    Jitter();
    Jitter();
    ChaseSlow();
    ChaseSlow();
    AllOn();
    FlipFlop();
    Twinkle();
    Chase();
    Chase();
    AllOn();
    Jitter();
    ReverseChase();
    ReverseChase();
    AllOn();
    Chase2();
    TwoStep();
    Twinkle();
    Alternate1();
    Alternate1();
    AllOn();
    Chase();
    Chase();
    OneOfFour();
    Jitter();
    OneOfFour();
    Twinkle();
    Chase2();
    AllOnOff();
    AllOnOff();
    TwoStep();
    AllOn();
    FlipFlop();
    FlipFlop();
    FlipFlop();
    Jitter();
    Jitter();
    AllOn();
    ChaseSlow();
    ChaseSlow();
    TwoOfFour();
    TwoOfFour();
    Twinkle();
    ReverseChase();
    ReverseChase();
    ReverseChase();
    AllOn();
    FlipFlop();
    Chase();
    Chase();
    ReverseChase();
    Chase();
    ReverseChase();
    Jitter();
    Twinkle();
    AllOn();
    TwoStep();
  }
}
void AllOn() {
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(10000);
}
void Chase() {
  digitalWrite(9, HIGH); // 1000  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(300);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(300);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(300);
  //digitalWrite(9, LOW);  // 0001
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(300);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(300);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(300);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(300);
  //digitalWrite(9, LOW);  // 0001
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, HIGH);  //1000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(200);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(300);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(300);
  //digitalWrite(9, LOW);  // 0001
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(10000);
}
void Chase2() {
  digitalWrite(9, HIGH); // 1000  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW);  // 0001
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW);  // 0111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH);  // 1011
  digitalWrite(10, LOW);
  //digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(500);
  //digitalWrite(9, HIGH);  //1101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, HIGH);
  delay(500);
  //digitalWrite(9, HIGH);  // 1110
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  //digitalWrite(9, HIGH); // 1000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW);  // 0111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH);  // 1011
  digitalWrite(10, LOW);
  //digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(500);
  //digitalWrite(9, HIGH);  //1101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, HIGH);
  delay(500);
  //digitalWrite(9, HIGH);  // 1110
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, HIGH);  // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, HIGH);  // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, HIGH); // 1000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW);  // 0001
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW);  // 0111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, HIGH);  // 1011
  digitalWrite(10, LOW);
  //digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(200);
  //digitalWrite(9, HIGH);  //1101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, HIGH);
  delay(200);
  //digitalWrite(9, HIGH);  // 1110
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(200);
  //digitalWrite(9, HIGH);  // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(200);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(200);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(200);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(200);
  digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(200);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(200);
  //digitalWrite(9, LOW);  // 0111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, HIGH);  // 1011
  digitalWrite(10, LOW);
  //digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(200);
  //digitalWrite(9, HIGH);  //1101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, HIGH);
  delay(200);
  //digitalWrite(9, HIGH);  // 1110
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(200);
  //digitalWrite(9, HIGH);  // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  //digitalWrite(9, HIGH);  // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(200);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
}
void Alternate1() {
  digitalWrite(9, HIGH); // 1001 Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(3000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(3000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(3000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(3000);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
}
void AllOnOff() {
  digitalWrite(9, HIGH);  // 1111  Initialize
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(1500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(1500);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(1500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(1500);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, HIGH);  // 1111  Initialize
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(1500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(1500);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(1500);
  digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(1500);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(3000);
}
void OneOfFour() {
  digitalWrite(9, HIGH);  // 1000  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(1000);
  digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(1000);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(1000);
  digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH);  // 1000  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH);  // 1000  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(250);
  digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(250);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(250);
  digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(250);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH);  // 1000  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH);  // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
}
void FlipFlop() {
  digitalWrite(9, HIGH); // 1010  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(500);
  //digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  //digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(9, HIGH); // 1010  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(2000);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(2000);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(2000);
  //digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  //digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(2000);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(2000);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(1000);
}
void ChaseSlow() {
  digitalWrite(9, LOW); // 0111  Initialize
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, HIGH);  // 1011
  digitalWrite(10, LOW);
  //digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(3000);
  //digitalWrite(9, HIGH); // 1101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, HIGH);
  delay(3000);
  //digitalWrite(9, HIGH);  // 1110
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(3000);
  //digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, LOW); // 0111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(3000);
  digitalWrite(9, HIGH);  // 1011
  digitalWrite(10, LOW);
  //digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(3000);
  //digitalWrite(9, HIGH); // 1101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, HIGH);
  delay(3000);
  //digitalWrite(9, HIGH);  // 1110
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(3000);
  //digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(5000);
}
void TwoOfFour() {
  digitalWrite(9, HIGH); // 1010  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(2000);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(2000);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1010  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(1000);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(1000);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(9, HIGH); // 1010  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(250);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(250);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(250);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(250);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(9, HIGH); // 1010  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH); // 1010  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH); // 1010  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH); // 1010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(125);
  digitalWrite(9, LOW);  // 0101
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(125);
  digitalWrite(9, HIGH); // 1111
  //digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, HIGH);
  delay(1000);
}
void ReverseChase() {
  digitalWrite(9, LOW); // 0001  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(1000);
  //digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(1000);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(1000);
  digitalWrite(9, HIGH);  // 1000
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(1000);
  //digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(9, LOW); // 0001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, HIGH);
  delay(500);
  //digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(500);
  digitalWrite(9, HIGH);  // 1000
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(500);
  //digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(5000);
}
void Twinkle() {
  digitalWrite(9, HIGH); // 1000  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW); // 0001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW); // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH);  // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW); // 0001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW); // 0001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH);  // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);   // 0001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);   // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW );  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH );  // 1111
  digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(75);
  digitalWrite(9, HIGH); // 1000  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW); // 0001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW); // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH);  // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW); // 0001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);  // 0010
  //digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW ); // 0100
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0001
  digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH); // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW); // 0001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);  // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW);  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH);  // 1000
  //digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, LOW);   // 0001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(75);
  //digitalWrite(9, LOW);   // 0100
  digitalWrite(10, HIGH);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(75);
  //digitalWrite(9, LOW );  // 0010
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(75);
  digitalWrite(9, HIGH );  // 1111
  digitalWrite(10, HIGH);
  //digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(5000);
}
void Jitter() {
  digitalWrite(9, HIGH); // 1001  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH);  // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(200);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH);  // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 0110
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(50);
  //digitalWrite(9, HIGH); // 1001  Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH);  // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH);  // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(250);
  //digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW);  // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 0110
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW);  // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(5000);
}
void TwoStep() {
  digitalWrite(9, HIGH); // 1001 Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1001 Initialize
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(100);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(100);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
  digitalWrite(9, HIGH); // 1001
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1001
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  delay(50);
  digitalWrite(9, LOW); // 0000
  //digitalWrite(10, LOW);
  //digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0000
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  //digitalWrite(12, LOW);
  delay(50);
  //digitalWrite(9, LOW); // 0110
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  //digitalWrite(12, LOW);
  delay(50);
  digitalWrite(9, HIGH); // 1111
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  delay(2000);
}

The functions select variable patterns of output and delays which creates changing visual patterns. My goal is to create a program that will randomly select from the list of functions (or eliminate functions altogether) and possibly even randomize the delays so that the visual patterns are constantly changing without repeating. Crazy.

So I need some ideas of how to accomplish this. I looked at RANDOM and RANDOMSEED and I believe creating an ARRAY may be part of the answer.

The controller works great as is and as time allows I'll post the project.

Thank you for your time.

create an array of pointers to your functions
pick a random number within the bounds of the array
call the function at that index

something like this

// Declare your functions
void Chase();
void Alternate1();
void OneOfFour();
void AllOnOff();
void FlipFlop();
void ChaseSlow();
void TwoOfFour();
void ReverseChase();
void Jitter();
void Twinkle();
void AllOn();
void Chase2();
void TwoStep();

typedef void (*FunctionPtr)();

FunctionPtr functions[] = {
    AllOn,
    AllOnOff,
    Alternate1,
    Chase,
    Chase2,
    ChaseSlow,
    FlipFlop,
    Jitter,
    OneOfFour,
    ReverseChase,
    Twinkle,
    TwoOfFour,
    TwoStep
};
size_t functionsCnt = sizeof functions / sizeof *functions;

// define the functions
void AllOn() {}
void AllOnOff() {}
void Alternate1() {}
void Chase() {}
void Chase2() {}
void ChaseSlow() {}
void FlipFlop() {}
void Jitter() {}
void OneOfFour() {}
void ReverseChase() {}
void Twinkle() {}
void TwoOfFour() {}
void TwoStep() {}



// your main code
void setup() {
    Serial.begin(115200);
}

void loop() {
    size_t randomIndex = random(0, functionsCnt);
    functions[randomIndex](); // <=== this is where you call the random function
}

typed here so mind mistakes

Hello Jack_Meadows

Welcome to the world's best Arduino forum ever.

Consider this Q&D sketch for your 4-Channel Christmas Light Controller project:

//https://forum.arduino.cc/t/how-to-select-functions-randomly-in-my-program/1195254
//https://europe1.discourse-cdn.com/arduino/original/4X/7/e/0/7e0ee1e51f1df32e30893550c85f0dd33244fb0e.jpeg
#define ProjectName " 4-Channel Christmas Light Controller"
#define NotesOnRelease "A"
// make names
enum TimerEvent {NotExpired, Expired};
// make variables
constexpr uint8_t LedPins[] {9,10,11,12};
// make structures
struct TIMER
{
  uint32_t interval;
  uint8_t control;
  uint32_t now;
  uint8_t expired(uint32_t currentMillis)
  {
    uint8_t timerEvent = currentMillis - now >= interval and control;
    if (timerEvent == Expired) now = currentMillis;
    return timerEvent;
  }
};
TIMER blinkMe {1000, HIGH, 0};
// make support
void heartBeat(const uint8_t LedPin, uint32_t currentMillis)
{
  static bool setUp = false;
  if (setUp == false) pinMode (LedPin, OUTPUT), setUp = true;
  digitalWrite(LedPin, (currentMillis / 500) % 2);
}
// make application
void setup()
{
  Serial.begin(115200);
  Serial.print("Source: "), Serial.println(__FILE__);
  Serial.print(ProjectName), Serial.print(" - "), Serial.println(NotesOnRelease);
  for (auto LedPin:LedPins) pinMode(LedPin,OUTPUT); 
  Serial.println(" =-> and off we go\n");
}
void loop()
{
  uint32_t currentMillis = millis();
  heartBeat(LED_BUILTIN, currentMillis);
  if (blinkMe.expired(currentMillis) == Expired)
  {
    Serial.println("Blink");
    blinkMe.interval=random(100,500); 
    for (auto LedPin:LedPins) digitalWrite(LedPin,random(0,2));
  }
}

Have a nice day and enjoy coding in C++.

Thank you for the fast response. I'll study your code and give it a go. This will be a great learning experience for me since I seem to learn best from real world examples.

Cheers,
Jack

Wow! I can see from your response that once you get to be an experienced coder you can "see" the global picture quickly. Please send me the code of your brain! I'll take the time to study and look up all of the references in your code and give it a try.

Cheers,
Jack

But you will have just random stuff no longer the patterns you were seeing. So he picked this suggestion very literally

Got it. I'll try both methods soon. The UNO board is currently installed in the controller outdoors and I'll need to extract it. I should purchase another board to go along with my simple breadboard simulator.

Jack

I should purchase another board several boards to go along with my simple breadboard simulator.

Pretty much falls by the wayside, when you look at Wokwi. Not so simple still demands a breadboard, but blinky blinky, well, go Wokwi!

void funcA() {
  Serial.print(" funcA ");
}
void funcB() {
  Serial.print(" funcB ");
}
void funcC() {
  Serial.print(" funcC ");
}
void funcD() {
  Serial.print(" funcD ");
}

// declare type of pointer to array of functions
void (*ptr_funcArray[4])() = {funcA, funcB, funcC, funcD};

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(A0)); // for a more random value
}

void loop() {
  for (int i = 0; i < 4; i++) {
    (*ptr_funcArray[random(4)])(); // call the function from the array
    delay(1000);
  }
  Serial.println();
}

Consider a Nano and breakout board for final implementation

That’s basically the code from my answer #2 :slight_smile:

An improvement would be to ensure the same animation does not get selected twice in a row for example - many ways to do that

Thank you all for your replies. I printed out your code responses and put them in sketches so I can study them along with the Arduino Reference and learn how to follow the code. I'll order another board so I can set up a test without having to retrieve my existing board from the outdoor controller. I'm sure to have further questions in the near future.

One again, thanks to all of you for your time.

The original sketch is a series of animations, many times duplicate, often repeating. The nature of randomness includes repetition. Uniform distribution is artificial. Ask any electron. : )

Sure
It was a suggestion

And a good suggestion... I enjoy random light shows.

Thank you, more food for thought.

Jack

Hello J-M-L,

Your sketch has been edited with the functions defined and everything compiled without errors. I printed out your sketch and made notes after looking up some of the language references and also ordered another UNO board so I can set up a test set without having to break into the light controller.

More soon....

well done !

(I try not to print any more, it kills trees :wink: )

@J-M-L - Your random-function-calling-function works...

@Jack_Meadows - Your code... revised

Using @J-M-L code in post 2... used "helper" functions to reduce duplication and replaced digitalWrite(LEDx, y); with direct PORTB writes.

Original code length: 2152 lines
This code length: 356 lines

Original patterns and delay values remain.

// https://forum.arduino.cc/t/how-to-select-functions-randomly-in-my-program/1195254/
// Original code: 2152 lines
// New version: 356 lines

// Web sites explaining PORTB and BIT math for lighting LEDs
// https://docs.arduino.cc/hacking/software/PortManipulation
// https://docs.arduino.cc/learn/programming/bit-math

// Defined delay values
#define D10 10000 // ten seconds
#define D05  5000 // five seconds
#define D03  3000 // three seconds
#define D02  2000 // two seconds
#define D01  1000 // one second

#define Dx15 1500 // 1500ms
#define Dx5   500 // 500ms
#define Dx3   300 // 300ms
#define Dx250 250 // 250ms
#define Dx2   200 // 200ms
#define Dx125 125 // 125ms
#define Dx100 100 // 100ms
#define Dx075  75 // 75ms
#define Dx050  50 // 50ms
#define zero    0 // 0ms

// J-M-L
// https://forum.arduino.cc/t/how-to-select-functions-randomly-in-my-program/1195254/2

// Declare your functions
void Chase();
void Alternate1();
void OneOfFour();
void AllOnOff();
void FlipFlop();
void ChaseSlow();
void TwoOfFour();
void ReverseChase();
void Jitter();
void Twinkle();
void AllOn();
void Chase2();
void TwoStep();

typedef void (*FunctionPtr)();

FunctionPtr functions[] = {
  AllOn,
  AllOnOff,
  Alternate1,
  Chase,
  Chase2,
  ChaseSlow,
  FlipFlop,
  Jitter,
  OneOfFour,
  ReverseChase,
  Twinkle,
  TwoOfFour,
  TwoStep
};

size_t functionsCnt = sizeof functions / sizeof * functions;

void setup() {
  randomSeed(analogRead(A0)); // for random values
  DDRB = DDRB | B1111 << 1; // pinMode direct addressing for four LEDs as OUTPUT

  // test(); // testing function
}

void loop() {
  size_t randomIndex = random(0, functionsCnt);
  functions[randomIndex](); // <=== this is where you call the random function

  // test(); // for testing functions
}

//*************************************************
// helper functions - to facilitate other functions
//*************************************************

// "show()" the main function to display LED patterns
// It first clears the existing LEDs on 12, 11, 10, 9
// Then displays the binary value sent to the function

void show(byte binValue, int thisDelay) {
  PORTB = PORTB & B0000 << 1; // clear LEDs shifting "0" left one bit into PORTB
  PORTB = PORTB | binValue << 1; // display binary value shifted left one bit into PORTB
  delay(thisDelay); // delay for this amount of milliseconds
}

void allLEDsOn(int thisDelay) {
  show(B1111, thisDelay); // all LEDs on, delay value
}

void allLEDsOff(int thisDelay) {
  show(B0000, thisDelay); // all LEDs OFF
}

void onOff(int thisLoop, int thisDelay) { // helper function for various
  for (int i = 0; i < thisLoop; i++) {
    allLEDsOn(thisDelay); // All LEDs on with a delay
    allLEDsOff(thisDelay); // All LEDs off with a delay
  }
}

void offOn(int thisLoop, int thisDelay) { // helper function for various
  for (int i = 0; i < thisLoop; i++) {
    allLEDsOff(thisDelay); // All LEDs off with a delay
    allLEDsOn(thisDelay); // All LEDs on with a delay
  }
}

void alt60(int thisLoop, int thisDelay) { // helper function for Alternate1()
  show(B0110, thisDelay); // 0110 = 6
  show(B0000, thisDelay); // 0000 = 0
}

void alt90(int thisLoop, int thisDelay) { // helper function for Alternate1()
  show(B1001, thisDelay); // 0110 = 9
  show(B0000, thisDelay); // 0000 = 0
}

void alt96(int thisLoop, int thisDelay) { // helper function for Alternate1()
  show(B1001, thisDelay); // 1001 = 9
  show(B0110, thisDelay); // 0110 = 6
}

void altA5(int thisLoop, int thisDelay) { // helper function for TwoOfFour()
  show(B1010, thisDelay); // 1010 = A
  show(B0101, thisDelay); // 0101 = 5
}

void alt4142(int thisLoop, int thisDelay) { // helper function for OneOfFour()
  show(B0100, thisDelay); // 4
  show(B0001, thisDelay); // 1
  show(B0100, thisDelay); // 4
  show(B0010, thisDelay); // 2
}

void alt4182(int thisLoop, int thisDelay) { // helper function for OneOfFour()
  show(B0100, thisDelay); // 4
  show(B0001, thisDelay); // 1
  show(B1000, thisDelay); // 8
  show(B0010, thisDelay); // 2
}

void alt4281(int thisLoop, int thisDelay) { // helper function for OneOfFour()
  show(B0100, thisDelay); // 4
  show(B0010, thisDelay); // 2
  show(B1000, thisDelay); // 8
  show(B0001, thisDelay); // 1
}

void alt4282(int thisLoop, int thisDelay) { // helper function for OneOfFour()
  show(B0100, thisDelay); // 4
  show(B0010, thisDelay); // 2
  show(B1000, thisDelay); // 8
  show(B0010, thisDelay); // 2
}

void alt8142(int thisLoop, int thisDelay) { // helper function for OneOfFour()
  show(B1000, thisDelay); // 8
  show(B0001, thisDelay); // 1
  show(B0100, thisDelay); // 4
  show(B0010, thisDelay); // 2
}

void alt8241(int thisLoop, int thisDelay) { // helper function for OneOfFour()
  show(B1000, thisDelay); // 8
  show(B0010, thisDelay); // 2
  show(B0100, thisDelay); // 4
  show(B0001, thisDelay); // 1
}

void chaseRight(int thisLoop, int thisDelay) { // helper function for various
  for (int k = 0; k < thisLoop; k++) { // single LED ON chase right
    for (int i = 4; i > 0; i--) { // four bits descending
      show(B0000, zero); // PORTB LEDs off, zero delay
      PORTB = PORTB | 1 << i; // shift 1 to bit "i"
      delay(thisDelay); // original 300ms
    }
  }
}

void chaseLeft(int thisLoop, int thisDelay) { // helper function for various
  for (int k = 0; k < thisLoop; k++) { // single LED ON chase left
    for (int i = 1; i < 5; i++) { // four bits
      show(B0000, zero); // PORTB LEDs off, zero delay
      PORTB = PORTB | 1 << i; // shift 1 to bit "i"
      delay(thisDelay); // original 300ms
    }
  }
}

void invChaseRight(int thisLoop, int thisDelay) { // helper function for various
  for (int k = 0; k < thisLoop; k++) { // inverted LED OFF chase right
    for (int i = 4; i > 0; i--) { // descending bits from 4 to 1
      show(B0000, zero); // PORTB LEDs off, zero delay
      PORTB = ~(PORTB | 1 << i); // shift value "1" to bit "i" and invert LEDs
      delay(thisDelay); // original 300ms
    }
  }
}

//*************************************************
// test function - to experiment with functions
//*************************************************

void test() { // write test functions here, call from setup() [run once] or loop() [repeat]
  show(B0001, Dx5); // first LED on, 500ms delay
  show(B0000, Dx5); // first LED off, 500ms delay
}

//*************************************************
// original functions
//*************************************************

void AllOn() {
  show(B1111, D10); // all LEDs on, 10s delay
}

void Chase() { // chaseLeft, 3 times, end all LEDS ON, 10s delay
  chaseLeft(3, Dx3);
  allLEDsOn(D10); // all LEDs on, 10s delay
}

void Chase2() { // ChasaeRight, on/off, reverse chase
  chaseRight(1, Dx5); // 1 time, 500ms delay
  onOff(2, Dx5); // 2 times, 500ms delay
  invChaseRight(1, Dx5);
  offOn(2, Dx5);
  chaseRight(1, Dx5);
  onOff(2, Dx5);
  invChaseRight(1, Dx5);
  onOff(2, Dx5);
  chaseRight(1, Dx5);
  onOff(2, Dx5);
  invChaseRight(1, Dx2);
  onOff(1, Dx2);
  chaseRight(1, Dx2);
  onOff(2, Dx2);
  invChaseRight(1, Dx2);
  onOff(2, Dx2);
}

void Alternate1() { // alternate 1001, 0110, 1111
  alt96(4, D03); // 4 times, 3s delay
  allLEDsOn(D03); // 3s delay
  alt96(4, D03);
  allLEDsOn(D02);
  alt96(4, Dx100);
  allLEDsOn(D02);
  alt96(4, Dx100);
  allLEDsOn(D02);
  alt96(4, Dx100);
  allLEDsOn(D02);
}

void AllOnOff() {
  onOff(5, Dx15); // 5 times, 1500ms delay
  allLEDsOn(D03); // 3s delay
}

void OneOfFour() {
  alt8241(1, D02); // 1 time, 1s delay
  allLEDsOn(D02); // show(B1111, thisDelay);
  alt8241(1, D02); // 1 time, 1s delay
  allLEDsOn(D02); // show(B1111, thisDelay);
  alt8241(1, Dx5); // 1 time, 500ms delay
  allLEDsOn(D02);
  alt8241(1, Dx250); // 1 time, 200ms delay
  allLEDsOn(D02);
  alt8241(1, Dx125); // 1 time, 125ms delay
  allLEDsOn(D02);
}

void FlipFlop() {
  altA5(2, Dx5);
  allLEDsOn(Dx5);
  altA5(2, Dx5);
  allLEDsOn(D01);
  altA5(2, D02);
  allLEDsOn(D05);
  altA5(2, D02);
  allLEDsOn(D01);
}

void ChaseSlow() {
  invChaseRight(1, D03);
  allLEDsOn(D03);
  invChaseRight(1, D03);
  allLEDsOn(D05);
}

void TwoOfFour() {
  altA5(2, D02);
  allLEDsOn(D02);
  altA5(2, D01);
  allLEDsOn(D01);
  altA5(2, Dx250);
  allLEDsOn(D01);

  altA5(2, Dx125);
  allLEDsOn(Dx125);
  altA5(2, Dx125);
  allLEDsOn(Dx125);
  altA5(2, Dx125);
  allLEDsOn(D01);
}

void ReverseChase() {
  chaseLeft(1, D01); // 1 time, single LED ON, 1s delay
  allLEDsOn(D01);
  chaseLeft(1, Dx5); // 1 time, single LED ON, 500ms delay
  allLEDsOn(D05);
}

void Twinkle() {
  for (int i = 0; i < 2; i++) {
    alt8241(2, Dx075); // 2 times, 75ms delay
    alt4281(2, Dx075);
    alt4282(1, Dx075); // 1 time, 75ms delay
    alt4182(1, Dx075);
    alt4142(2, Dx075);
    alt8142(2, Dx075);
    allLEDsOn(Dx075);
  }
  allLEDsOn(D05);
}

void Jitter() {
  for (int j = 0; j < 2; j++) {
    for (int i = 0; i < 4; i++) {
      alt90(2, Dx050); // 1001 0000, 2 times, 50ms delay
      alt60(2, Dx050); // 0110 0000, 2 times, 50ms delay
    }
    allLEDsOn(Dx050);
  }
  delay(D05);
}

void TwoStep() {
  alt90(4, Dx100); // 1001 0000, 4 times, 100ms delay
  alt60(4, Dx100); // 0110 0000, 4 times, 100ms delay
  allLEDsOn(D02);
  alt90(4, Dx050); // 1001 0000, 4 times, 50ms delay
  alt60(4, Dx050); // 0110 0000, 4 times, 50ms delay
  allLEDsOn(D02);
  alt90(4, Dx100); // 1001 0000, 4 times, 100ms delay
  alt60(4, Dx100); // 0110 0000, 4 times, 100ms delay
  allLEDsOn(D02);
  alt90(4, Dx050); // 1001 0000, 4 times, 50ms delay
  alt60(4, Dx050); // 0110 0000, 4 times, 50ms delay
  allLEDsOn(D02);
}