 }
 
 void loop() {
-  for (unsigned char hue=0; hue < 255; hue++) {
-    for (unsigned char index=0; index < PIXELS; index++) {
-        unsigned char offset = index * delta * direction;
-        hsv2rgb_rainbow(hue + offset, led_colors[index]);
+    if (constant) {
+        for (uint8_t index=0; index < PIXELS; index++) {
+            //hsv2rgb_rainbow(constant_color_hue, led_colors[index]);
+            memcpy(led_colors[index], rgb_colors[constant_color_index], 3);
+            //led_colors[index][0] = rgb_colors[constant_color_index][0];
+            //led_colors[index][1] = rgb_colors[constant_color_index][1];
+            //led_colors[index][2] = rgb_colors[constant_color_index][2];
         }
-    show_all_led_colors();
-    delay(20);
-  }
-}
-
-
-
+        show_all_led_colors();
+        delay(20);
+    } else {
+        for (uint8_t hue=0; hue < 255; hue++) {
+            for (uint8_t index=0; index < PIXELS; index++) {
+                uint8_t offset = index * delta * direction;
+                hsv2rgb_rainbow(hue + offset, led_colors[index]);
+            }
+            show_all_led_colors();
+            delay(20);
+            if (constant) {
+                break;
+            }
+        }
+    }
+}
+
+
+


// I rewrite this one from scrtach to use high resolution for the color wheel to look nicer on a *much* bigger string
                                                                            
void rainbowCycle(unsigned char frames , unsigned int frameAdvance, unsigned int pixelAdvance ) {
  
  // Hue is a number between 0 and 3*256 than defines a mix of r->g->b where
  // hue of 0 = Full red

#endif
} 

void hsv2rgb_rainbow(uint8_t hue, uint8_t colors[3])
{
    // Yellow has a higher inherent brightness than
    // any other color; 'pure' yellow is perceived to
