 void readSensors(){
   if ( digitalRead(PIN_PIR_UP) == HIGH ){  // Walk Down.
     previousOffMillis = currentMillis;
+    //if ( stage == stage_run ){
+    //  return;  //keep the animation fast.
+    //} else 
     if ( stage == off ){
       chooseEffects();
       stage = stage_init;

void chooseEffects(){
  randomSeed(millis());
  r = random8(1, 255);
  if ( r >= 0 && r <= 100 ){
    effect = ewalk;  // My favorite transition with random effect variations
  } else if ( r > 100 && r <= 175 ){

      if ( gStair < NUM_LEDS ){
        leds[gUpDown[gStair]] = CHSV(gStair + h, s, v);
        leds[gUpDown[gStair + 1]]= CHSV(gStair + h, s, v);
        v = qsub8(v, 1);
      } else {
        stage = off;
      }
