 
 void pixelWipe(uint32_t c, uint32_t b, uint8_t wait) {
   for(uint16_t i=0; i<strip.numPixels(); i++) {
+    // Clear all
+    for(uint16_t t=0; t<strip.numPixels(); t++) {
+      strip.setPixelColor(t, b);
+    }
     strip.setPixelColor(i, c);
-    strip.setPixelColor(i - 1, b);
+    strip.show();
+    delay(wait);
+
+  }
+}
+
+void pixelWipeReverse(uint32_t c, uint32_t b, uint8_t wait) {
+  for(uint16_t i=strip.numPixels(); i>0; i--) {
+    strip.setPixelColor(i, c);
+    strip.setPixelColor(i + 1, b);
     strip.show();
     delay(wait);
   }

  }
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {

   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}
