#include void HSVtoRGB(float H, float S,float V,int &R, int &G, int &B){ while(H>360) H-=360; if(H>360 || H<0 || S>100 || S<0 || V>100 || V<0){ return; } float s = S/100; float v = V/100; float C = s*v; float X = C*(1-abs(fmod(H/60.0, 2)-1)); float m = v-C; float r,g,b; if(H >= 0 && H < 60){ r = C,g = X,b = 0; } else if(H >= 60 && H < 120){ r = X,g = C,b = 0; } else if(H >= 120 && H < 180){ r = 0,g = C,b = X; } else if(H >= 180 && H < 240){ r = 0,g = X,b = C; } else if(H >= 240 && H < 300){ r = X,g = 0,b = C; } else{ r = C,g = 0,b = X; } R = (r+m)*255; G = (g+m)*255; B = (b+m)*255; } #define PIN1 0 #define NUMPIXELS 25 // 24 #define CENTER 12.5 int mode; Adafruit_NeoPixel pixels[] = { Adafruit_NeoPixel(NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800), }; int PIN_COUNT = 1; double hue = 0.0; void setup() { pinMode(13, OUTPUT); //LED on Model A pinMode(10, INPUT); //LED on Model A digitalWrite(13, LOW); //LED on Model A pinMode(PIN1, OUTPUT); pixels[0].begin(); randomSeed(analogRead(10)); mode = random(1,4); for(int i=0;i<=mode;i++) { digitalWrite(13, LOW); //LED on Model A delay(100); digitalWrite(13, HIGH); //LED on Model A delay(100); } } // the loop routine runs over and over again forever: void loop() { static double power = 1.5; static double fac = 0.5/pow(0.5,power); for(int i=0;i1) h-=1; if(h<=0.5) y = pow(h,power)*fac; else y = 1-pow(1-h,power)*fac; HSVtoRGB(y*360, 100, 55,r,g,b); pixels[0].setPixelColor(i, pixels[0].Color(r,g,b)); // Moderately bright green color. } pixels[0].show(); // This sends the updated pixel color to the hardware. hue -= 0.4; if(hue>=360) { hue -= 360; } if(hue<=0) { hue = 360 + hue; } // digitalWrite(1, LOW); //LED on Model A delay(15); // Delay for a period of time (in milliseconds). digitalWrite(13, LOW); //LED on Model A }