// C++ code
//
#define SIGNAL_PIN 12
int LED1 = 11;
int LED2 = 10;
int LED3 = 9;
int LED4 = 8;
int LED5 = 7;
int LED6 = 6;
int LED7 = 5;
int LED8 = 4;
int LED9 = 3;
int LED10 = 2;
int speed1 = 80;
int speed2 = 100;
int speed3 = 40;
void setup()
{
  Serial.begin(9600);
  pinMode(SIGNAL_PIN, INPUT);
  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);
}
void loop()
{
  if (digitalRead(SIGNAL_PIN) == HIGH)
  {
    // Pattern 1
    digitalWrite(LED1, HIGH);
    delay(speed1);
    digitalWrite(LED1, LOW);
    delay(speed1);
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, HIGH);
    delay(speed1);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    delay(speed1);
    digitalWrite(LED4, HIGH);
    digitalWrite(LED5, HIGH);
    delay(speed1);
    digitalWrite(LED4, LOW);
    digitalWrite(LED5, LOW);
    delay(speed1);
    digitalWrite(LED6, HIGH);
    digitalWrite(LED7, HIGH);
    delay(speed1);
    digitalWrite(LED6, LOW);
    digitalWrite(LED7, LOW);
    delay(speed1);
    digitalWrite(LED8, HIGH);
    delay(speed1);
    digitalWrite(LED8, LOW);
    delay(speed1);
    digitalWrite(LED9, HIGH);
    digitalWrite(LED10, HIGH);
    delay(speed1);
    digitalWrite(LED9, LOW);
    digitalWrite(LED10, LOW);
    delay(speed1);
    // Pattern 2
    digitalWrite(LED9, HIGH);
    digitalWrite(LED10, HIGH);
    delay(speed2);
    digitalWrite(LED8, HIGH);
    delay(speed2);
    digitalWrite(LED6, HIGH);
    digitalWrite(LED7, HIGH);
    delay(speed2);
    digitalWrite(LED4, HIGH);
    digitalWrite(LED5, HIGH);
    delay(speed2);
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, HIGH);
    delay(speed2);
    digitalWrite(LED1, HIGH);
    delay(speed2);
    digitalWrite(LED9, LOW);
    digitalWrite(LED10, LOW);
    delay(speed2);
    digitalWrite(LED8, LOW);
    delay(speed2);
    digitalWrite(LED6, LOW);
    digitalWrite(LED7, LOW);
    delay(speed2);
    digitalWrite(LED4, LOW);
    digitalWrite(LED5, LOW);
    delay(speed2);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    delay(speed2);
    digitalWrite(LED1, LOW);
    delay(speed2);
    // Pattern 3 x 3
    digitalWrite(LED1, HIGH);
    delay(speed3);
    digitalWrite(LED1, LOW);
    delay(speed3);
    digitalWrite(LED2, HIGH);
    delay(speed3);
    digitalWrite(LED2, LOW);
    delay(speed3);
    digitalWrite(LED4, HIGH);
    delay(speed3);
    digitalWrite(LED4, LOW);
    delay(speed3);
    digitalWrite(LED6, HIGH);
    delay(speed3);
    digitalWrite(LED6, LOW);
    delay(speed3);
    digitalWrite(LED9, HIGH);
    delay(speed3);
    digitalWrite(LED9, LOW);
    delay(speed3);
    digitalWrite(LED8, HIGH);
    delay(speed3);
    digitalWrite(LED8, LOW);
    delay(speed3);
    digitalWrite(LED10, HIGH);
    delay(speed3);
    digitalWrite(LED10, LOW);
    delay(speed3);
    digitalWrite(LED7, HIGH);
    delay(speed3);
    digitalWrite(LED7, LOW);
    delay(speed3);
    digitalWrite(LED5, HIGH);
    delay(speed3);
    digitalWrite(LED5, LOW);
    delay(speed3);
    digitalWrite(LED3, HIGH);
    delay(speed3);
    digitalWrite(LED3, LOW);
    delay(speed3);
    digitalWrite(LED1, HIGH);
    delay(speed3);
    digitalWrite(LED1, LOW);
    delay(speed3);
    digitalWrite(LED2, HIGH);
    delay(speed3);
    digitalWrite(LED2, LOW);
    delay(speed3);
    digitalWrite(LED4, HIGH);
    delay(speed3);
    digitalWrite(LED4, LOW);
    delay(speed3);
    digitalWrite(LED6, HIGH);
    delay(speed3);
    digitalWrite(LED6, LOW);
    delay(speed3);
    digitalWrite(LED9, HIGH);
    delay(speed3);
    digitalWrite(LED9, LOW);
    delay(speed3);
    digitalWrite(LED8, HIGH);
    delay(speed3);
    digitalWrite(LED8, LOW);
    delay(speed3);
    digitalWrite(LED10, HIGH);
    delay(speed3);
    digitalWrite(LED10, LOW);
    delay(speed3);
    digitalWrite(LED7, HIGH);
    delay(speed3);
    digitalWrite(LED7, LOW);
    delay(speed3);
    digitalWrite(LED5, HIGH);
    delay(speed3);
    digitalWrite(LED5, LOW);
    delay(speed3);
    digitalWrite(LED3, HIGH);
    delay(speed3);
    digitalWrite(LED3, LOW);
    delay(speed3);
    digitalWrite(LED1, HIGH);
    delay(speed3);
    digitalWrite(LED1, LOW);
    delay(speed3);
    digitalWrite(LED2, HIGH);
    delay(speed3);
    digitalWrite(LED2, LOW);
    delay(speed3);
    digitalWrite(LED4, HIGH);
    delay(speed3);
    digitalWrite(LED4, LOW);
    delay(speed3);
    digitalWrite(LED6, HIGH);
    delay(speed3);
    digitalWrite(LED6, LOW);
    delay(speed3);
    digitalWrite(LED9, HIGH);
    delay(speed3);
    digitalWrite(LED9, LOW);
    delay(speed3);
    digitalWrite(LED8, HIGH);
    delay(speed3);
    digitalWrite(LED8, LOW);
    delay(speed3);
    digitalWrite(LED10, HIGH);
    delay(speed3);
    digitalWrite(LED10, LOW);
    delay(speed3);
    digitalWrite(LED7, HIGH);
    delay(speed3);
    digitalWrite(LED7, LOW);
    delay(speed3);
    digitalWrite(LED5, HIGH);
    delay(speed3);
    digitalWrite(LED5, LOW);
    delay(speed3);
    digitalWrite(LED3, HIGH);
    delay(speed3);
    digitalWrite(LED3, LOW);
    delay(speed3);
    // Pattern 2 x 2
    digitalWrite(LED9, HIGH);
    digitalWrite(LED10, HIGH);
    delay(speed2);
    digitalWrite(LED8, HIGH);
    delay(speed2);
    digitalWrite(LED6, HIGH);
    digitalWrite(LED7, HIGH);
    delay(speed2);
    digitalWrite(LED4, HIGH);
    digitalWrite(LED5, HIGH);
    delay(speed2);
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, HIGH);
    delay(speed2);
    digitalWrite(LED1, HIGH);
    delay(speed2);
    digitalWrite(LED9, LOW);
    digitalWrite(LED10, LOW);
    delay(speed2);
    digitalWrite(LED8, LOW);
    delay(speed2);
    digitalWrite(LED6, LOW);
    digitalWrite(LED7, LOW);
    delay(speed2);
    digitalWrite(LED4, LOW);
    digitalWrite(LED5, LOW);
    delay(speed2);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    delay(speed2);
    digitalWrite(LED1, LOW);
    delay(speed2);
    digitalWrite(LED9, HIGH);
    digitalWrite(LED10, HIGH);
    delay(speed2);
    digitalWrite(LED8, HIGH);
    delay(speed2);
    digitalWrite(LED6, HIGH);
    digitalWrite(LED7, HIGH);
    delay(speed2);
    digitalWrite(LED4, HIGH);
    digitalWrite(LED5, HIGH);
    delay(speed2);
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, HIGH);
    delay(speed2);
    digitalWrite(LED1, HIGH);
    delay(speed2);
    digitalWrite(LED9, LOW);
    digitalWrite(LED10, LOW);
    delay(speed2);
    digitalWrite(LED8, LOW);
    delay(speed2);
    digitalWrite(LED6, LOW);
    digitalWrite(LED7, LOW);
    delay(speed2);
    digitalWrite(LED4, LOW);
    digitalWrite(LED5, LOW);
    delay(speed2);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    delay(speed2);
    digitalWrite(LED1, LOW);
    delay(speed2);
    if (digitalRead(SIGNAL_PIN) == LOW)
    {
      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);
    }
  }
}