   if ( digitalRead(PIN_PIR_DOWN) == HIGH  ){
     if ( lightsOn == LOW ) {
       lightsOn = HIGH;
-      //fade7(-1); //Up
+      setUpDown(GO_UP);
+      fade7(); //Up
       //walk(-1); // Up
-      flicker(-1);
+      //flicker(-1);
       delay(50);
     }
   }
 }
+
+void setUpDown(int8_t upDownDir){
+  // setup walking gUpDown array in forward: 0,1,2,3... or reverse:  ...3,2,1,0
+  gStairStart = 0;
+  if (upDownDir == GO_UP){
+    for ( gStair = NUM_LEDS -1; gStair >= 0; gStair-- ){
+      gUpDown[gStair] = gStairStart++;
+    }
+  } else {
+    for ( gStair = 0; gStair <= NUM_LEDS; gStair++ ){
+      gUpDown[gStair] = gStairStart++;
+    }  
+  }
+  //printUpDown();
+}
+
+void printUpDown(){
+  for (gStair = 0; gStair < NUM_LEDS; gStair++){
+    Serial.print (gStair);
+    Serial.print (" " );
+    Serial.println (gUpDown[gStair]);
+  }
+}
+
+void welcomeRainbow(){
+  // Sparkle rainbow welcome give delay to calibrate pir sensors.  This also indicates if program crashed.
+  for ( int i = 0; i < 500; i++ ){
+    rainbowWithGlitter();
+    FastLED.show();
+    FastLED.delay(8.3);
+    EVERY_N_MILLISECONDS( 20 ) { gHue++; }
+  }
+  for (int tick=0; tick < 64; tick++){ 
+    for ( uint8_t i = 0; i < NUM_LEDS; i++ ){
+      leds[i].fadeToBlackBy( 64 );
+      FastLED.show();
+      FastLED.delay(1);
+    }
+  }
+}
+
+
 
 void walk(int8_t dir) {
   Serial.print("Walk dir: ");

#include "FastLED.h"
/*
 * Jenn's colors RGB  0 0 81  BLUE

  if ( digitalRead(PIN_PIR_UP) == HIGH ){
    if ( lightsOn == LOW ) {
      lightsOn = HIGH;
      setUpDown(GO_DOWN);
      // TODO: Add random pattern picker.
      fade7();
      //walk(1);
      //flicker(1);
      delay(50);
    }
  }
