#include <Adafruit_NeoPixel.h>
#include "ColorConstants.h"
#define PIN 6
#define NUMPIXELS 60
#define NUMBERGROUPS 15
Adafruit_NeoPixel neoPixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Declare our NeoPixel strip object
uint32_t pixels[NUMPIXELS];
unsigned long startTime;
unsigned long intervalTime = 250;
const uint32_t colors[] = { ccRGB(255, 0, 0), ccRGB(255, 255, 255)};
const uint8_t NUMBERCOLORS = sizeof(colors) / sizeof(uint32_t);
unsigned long targetColor;
uint8_t colorIndex;
uint8_t position;
void setup() {
Serial.begin(115200);
neoPixels.begin();
neoPixels.clear();
SetPixels(ccWHITE, true);
colorIndex = 0;
}
void loop() {
IntervalUpdate();
}
void IntervalUpdate() {
unsigned long currentTime = millis();
unsigned long elapsedTime = currentTime - startTime;
if (elapsedTime < intervalTime) return;
startTime = currentTime;
targetColor = colors[colorIndex];
position = SetPixels(targetColor, position, NUMBERGROUPS, true);
}
void ShiftPixels(uint32_t color) {
uint8_t index = NUMPIXELS - 1;
while (index > 0) {
pixels[index] = pixels[index - 1];
neoPixels.setPixelColor(index, pixels[index]);
index--;
};
pixels[0] = color;
neoPixels.setPixelColor(0, color);
neoPixels.show();
}
uint8_t SetPixels(uint32_t color, uint8_t start, uint8_t count, bool show) {
uint8_t pIndex = start;
for (uint8_t index = start; index < start + count ; index++) {
neoPixels.setPixelColor(pIndex, color);
pixels[pIndex] = color;
pIndex = (pIndex + 1) % NUMPIXELS;
}
if (show) neoPixels.show();
return pIndex;
}
void SetPixels(uint32_t color, bool show) {
for (uint8_t index = 0; index < NUMPIXELS ; index++) {
neoPixels.setPixelColor(index, color);
pixels[index] = color;
}
if (show) neoPixels.show();
}