   pinMode(3, INPUT);
 
   //interupt pin
-  attachInterrupt(0, readSidecar, RISING);
+  attachInterrupt(1, readSidecar, RISING);
+
+  //seed for random stuff
+  randomSeed(analogRead(3));
 
   //setup the led strip
   FastLED.addLeds<WS2801, RGB>(leds, ledsNumber);
 
+  //set 54 random leds for the idle animation
+  for(int i = 0; i<35; i++){
+    r = random(0, 79);
+    idleStart[r] = true;
+  }
+
   //clear the LED strip data
   FastLED.clear();
 
   //Debugging
   Serial.begin(9600);  //For debugging 
 
-  //random stuff
-  randomSeed(analogRead(0));
-
   //set brightness
-  FastLED.setBrightness(20);
+  FastLED.setBrightness(100);
 }
 
 void loop(){

void readSidecar(){
  //reads the data coming from the sidecar when the interrupt is detected
  delayMicroseconds(5000);
  dataRecieved[0] = digitalRead(3);
  delayMicroseconds(10000);
  dataRecieved[1] = digitalRead(3);
  delayMicroseconds(10000);
  dataRecieved[2] = digitalRead(3);
  delayMicroseconds(100000);
  dataRecieved[3] = digitalRead(3);
  delayMicroseconds(100000);

  Serial.print(dataRecieved[0]);
  Serial.print(dataRecieved[1]);

  if (Serial.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial.read();

    if (incomingByte == 97){ //a
      dataRecieved[0] = false;
      dataRecieved[1] = false;
      dataRecieved[2] = false;
      dataRecieved[3] = false;
      //    clearLeds();
    }
    else if (incomingByte == 98){ //b
      dataRecieved[0] = true;
      dataRecieved[1] = true;
      dataRecieved[2] = false;
      dataRecieved[3] = true;
      //    setRed();
    }
    else if (incomingByte == 99){ //c
      dataRecieved[0] = false;
      dataRecieved[1] = false;
      dataRecieved[2] = false;
      dataRecieved[3] = true;
      //    setGreen();
    }
    else if (incomingByte == 100){ //d
      dataRecieved[0] = false;
      dataRecieved[1] = false;
      dataRecieved[2] = true;
      dataRecieved[3] = true;
      //    shootAndCollect();
    }
    else if (incomingByte == 101){ //e
      dataRecieved[0] = false;
      dataRecieved[1] = true;
      dataRecieved[2] = false;
      dataRecieved[3] = false;
    }
    else if (incomingByte == 102){ //f
      dataRecieved[0] = true;
      dataRecieved[1] = false;
      dataRecieved[2] = true;
      dataRecieved[3] = false;
    }
  }
  //Possible cases
  if (dataRecieved[0] == false && dataRecieved[1] == false && dataRecieved[2] == false && dataRecieved[3] == false){
    //clears the strip
