- removed delay(5000) as EVERY_N_MILLISECONDS should be in a loop so used a while loop
- changed hue--; to hue = hue - 6; so the difference int the color can be noticed
- placed your code inside EVERY_N_MILLISECONDS
try the code below
#include <FastLED.h>
#define DATA_PIN 3
#define NUM_LEDS 32
#define NUM_PATTERN1 4
#define NUM_PATTERN2 1
CRGB leds[NUM_LEDS];
void fadeall() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i].nscale8(120);
}
}
void setup() {
Serial.begin(9600);
Serial.println("resetting");
LEDS.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
LEDS.setBrightness(200);
}
void pattern1() {
uint8_t hue = 0;
for (int i = 0; i < NUM_LEDS; i++) {
uint8_t mappedHue = map(i, 0, NUM_LEDS - 1, 1, 250);
leds[i] = CHSV(mappedHue, 255, 255);
FastLED.show();
fadeall();
delay(70);
}
delay(500);
}
void pattern2() {
uint8_t hue = 0;
/* GERRY MOD
for (int i = 0; i < NUM_LEDS; i++) {
//leds[i] = CHSV(hue, 255, 255);
leds[i] = CHSV(hue, 255, 255);
}
EVERY_N_MILLISECONDS(125) {
hue--;
}
FastLED.show();
delay (5000);
*/
//GERRY MOD
unsigned long int prevTime = millis();
while (millis() - prevTime < 5000) {
EVERY_N_MILLISECONDS(125) {
hue = hue - 6; // 255 / 5000 * 125
for (int i = 0; i < NUM_LEDS; i++) {
//leds[i] = CHSV(hue, 255, 255);
leds[i] = CHSV(hue, 255, 255);
}
FastLED.show();
}
}
}
void loop() {
for (int i = 0; i < NUM_PATTERN1; i++) {
pattern1();
}
for (int i = 0; i < NUM_PATTERN2; i++) {
pattern2();
}
}