#include <Adafruit_NeoPixel.h>
#define PIN 4
#define NUMPIXELS 60
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int LED_HUE = 64;
char LED_BRIT = 180;
char LED_PIX = 60;
char LED_PIX_POS = 0;
char LED_PIX_ANIM = 1;
char LED_PIX_SPEED = 0;
char LED_FADE_SPEED = 0;
char LED_HUE_SPEED = 0;
int anim_phase;
int fade_phase;
int hue_phase;
bool fadegodown;
bool animgoleft;
void setup() {
pixels.begin();
pixels.show(); // Initialize all pixels to 'off'
pixels.setBrightness(255);
}
void loop() { //------------------- void loop --------------------------
if(LED_PIX_ANIM == 0){ pixels.clear(); pixels.show(); }
if(LED_PIX_ANIM == 1){ noanim(); }
if(LED_PIX_ANIM == 2){ anim1(); }
readPots();
} //------------------- void loop end --------------------------
void noanim(){
pixels.clear();
for(int i=0; i<LED_PIX; i++){
pixels.setPixelColor(i+(60-LED_PIX)/2+LED_PIX_POS, pixels.ColorHSV(LED_HUE*LED_HUE, 255, LED_BRIT));
readPots();
}
pixels.show();
}
void anim1(){
pixels.clear();
for(int i=0; i<LED_PIX; i++){
pixels.setPixelColor(i-LED_PIX+anim_phase, pixels.ColorHSV(hue_phase*hue_phase, 255, fade_phase));
readPots();
}
pixels.show();
delay(50-LED_PIX_SPEED);
if(fadegodown==0){ fade_phase = fade_phase + LED_FADE_SPEED; fade_phase = constrain(fade_phase,0,255); if(fade_phase>254){fadegodown=1;}}
else if(fadegodown==1){ fade_phase = fade_phase - LED_FADE_SPEED; fade_phase = constrain(fade_phase,0,255); if(fade_phase<1){fadegodown=0;} }
hue_phase = hue_phase + LED_HUE_SPEED;
if(hue_phase>255){hue_phase=1;}
if(animgoleft==0){ anim_phase = anim_phase + LED_PIX_SPEED/2; if(anim_phase>119-(60-LED_PIX)){animgoleft=1;} }
else if(animgoleft==1){ anim_phase = anim_phase - LED_PIX_SPEED/2; if(anim_phase<1){animgoleft=0;} }
}
void readPots() {
LED_PIX_ANIM = map(analogRead(A7),0,1023,0,2);
LED_BRIT = map(analogRead(A6),0,1023,0,255);
LED_HUE = map(analogRead(A5),0,1023,0,230);
LED_PIX = map(analogRead(A4),0,1023,0,60);
LED_PIX_POS = map(analogRead(A3),0,1023,0,63);
LED_FADE_SPEED = map(analogRead(A2),0,1023,0,120); if(LED_FADE_SPEED>0 && LED_FADE_SPEED<10){ LED_FADE_SPEED=10; }
LED_HUE_SPEED = map(analogRead(A1),0,1023,0,30);
LED_PIX_SPEED = map(analogRead(A0),0,1023,0,20);
}