My changes are in bold
Also to note that when i change it resets to zero and has to be updated. creating a strobe like effect to start with.
#include <Adafruit_NeoPixel.h>
#include <EEPROM.h>
#define BRIGHTNESS 5
#define NUM_LEDS 21
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
#define BUTTON 2
byte selectedEffect=0;
int analogPin = 3;
int val;
int fast;
void setup()
{
strip.begin();
strip.show(); // Initialize all pixels to ‘off’
digitalWrite (BUTTON, HIGH); // internal pull-up resistor
attachInterrupt (digitalPinToInterrupt (BUTTON), changeEffect, CHANGE); // pressed
strip.setBrightness(BRIGHTNESS);
Serial.begin(9600);
}
// *** REPLACE FROM HERE ***
void loop() {
EEPROM.get(0,selectedEffect);
if(selectedEffect>8) {
selectedEffect=0;
EEPROM.put(0,0);
}
switch(selectedEffect) {
case 1 : { int fast = map(val, 0, 1023, 0, 100);
// CylonBounce - Color (red, green, blue, white), eye size, speed delay, end pause
CylonBounce(255, 0, 0, 0, 1, fast, 0);
break;
}
case 2 : { int fast = map(val, 0, 1023, 0, 100);
// CylonBounce - Color (red, green, blue, white), eye size, speed delay, end pause
CylonBounce(0, 255, 0, 0, 1, fast, 0);
break;
}
case 3 : { int fast = map(val, 0, 1023, 0, 100);
// CylonBounce - Color (red, green, blue, white), eye size, speed delay, end pause
CylonBounce(0, 0, 255, 0, 1, fast, 0);
break;
}
case 4 : { int fast = map(val, 0, 1023, 0, 100);
// CylonBounce - Color (red, green, blue, white), eye size, speed delay, end pause
CylonBounce(0, 0, 0, 255, 1, fast, 0);
break;
}
case 5 : {
// NewKITT - Color (red, green, blue, white), eye size, speed delay, end pause
NewKITT(255, 0, 0, 0, 1, 50, 0);
break;
}
case 6 : {
// NewKITT - Color (red, green, blue, white), eye size, speed delay, end pause
NewKITT(0, 255, 0, 0, 1, 50, 0);
break;
}
case 7 : {
// NewKITT - Color (red, green, blue, white), eye size, speed delay, end pause
NewKITT(0, 0, 255, 0, 1, 50, 0);
break;
}
case 8 : {
// NewKITT - Color (red, green, blue, white), eye size, speed delay, end pause
NewKITT(0, 0, 0, 255, 1, 50, 0);
break;
}
}
}
void changeEffect() {
if (digitalRead (BUTTON) == HIGH) {
selectedEffect++;
EEPROM.put(0, selectedEffect);
asm volatile (" jmp 0");
}
}
// *************************
// ** LEDEffect Functions **
// *************************
void CylonBounce(byte red, byte green, byte blue, byte white, int EyeSize, int fast, int ReturnDelay){
val = analogRead(analogPin);
** Serial.println(fast);**
for(int i = 0; i < NUM_LEDS-EyeSize; i++) {
setAll(0,0,0,0);
setPixel(i, red/10, green/10, blue/10, white/10);
for(int j = 1; j == EyeSize; j++) {
setPixel(i, red, green, blue, white);
}
showStrip();
delay(fast);
}
delay(ReturnDelay);
for(int i = NUM_LEDS-EyeSize; i > 0; i–) {
setAll(0,0,0,0);
for(int j = 1; j == EyeSize; j++) {
setPixel(i, red, green, blue, white);
}
showStrip();
delay(fast);
}
delay(ReturnDelay);
}
void NewKITT(byte red, byte green, byte blue, byte white, int EyeSize, int SpeedDelay, int ReturnDelay){
OutsideToCenter(red, green, blue, white, EyeSize, SpeedDelay, ReturnDelay);
}
// used by NewKITT
void OutsideToCenter(byte red, byte green, byte blue, byte white, int EyeSize, int SpeedDelay, int ReturnDelay)
{
for(int i = 0; i <= NUM_LEDS; i++) {
setAll(0,0,0,0);
for(int j = 0; j <= 0; j++) {
setPixel(i+j-1, red, green, blue, white);
}
for(int j = 1; j <= EyeSize+1; j++) {
setPixel(NUM_LEDS-i, red, green, blue, white);
}
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
}
// ***************************************
// ** FastLed/NeoPixel Common Functions **
// ***************************************
// Apply LED color changes
void showStrip() {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show();
#endif
}
// Set a LED color (not yet visible)
void setPixel(int Pixel, byte red, byte green, byte blue, byte white) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor(Pixel, strip.Color(red, green, blue, white));
#endif
}
// Set all LEDs to a given color and apply it (visible)
void setAll(byte red, byte green, byte blue, byte white) {
for(int i = 0; i < NUM_LEDS; i++ ) {
setPixel(i, red, green, blue, white);
}
showStrip();
}