#include "Backend.h"
PixelRing ring(CRGB(255, 0, 0), STATIC);
// Left side - mode ctrl (static, random, running cw, running ccw)
Led ledSTA(4);
Led ledRND(3);
Led ledCW(2);
Led ledCCW(1);
Button buttonSTA(12, STATIC);
Button buttonRND(8, RANDOM);
Button buttonCW(7, RUNNING_CW);
Button buttonCCW(5, RUNNING_CCW);
// Right side - color / tempo ctrl (red, green, blue, tempo)
Led ledRed(11);
Led ledGreen(10);
Led ledBlue(9);
Led ledWhite(6);
ColorController ctrlRed(A0, &ledRed);
ColorController ctrlGreen(A1, &ledGreen);
ColorController ctrlBlue(A2, &ledBlue);
Controller ctrlTempo(A3);
AnimationSelector aSel(STATIC, {{&buttonSTA, &buttonRND, &buttonCW, &buttonCCW}, {&ledSTA, &ledRND, &ledCW, &ledCCW}});
void setup() {
randomSeed(analogRead(A4));
ring.init();
ledRed.init();
ledGreen.init();
ledBlue.init();
ledWhite.init();
aSel.init();
}
void loop() {
// Global time
sysTime = millis();
ring.animation(ledWhite);
// Polling potentiometers and calling color setter of pixel ring
ctrlRed.update(&PixelRing::setRed, ring);
ctrlGreen.update(&PixelRing::setGreen, ring);
ctrlBlue.update(&PixelRing::setBlue, ring);
ctrlTempo.update(&PixelRing::setAnimationInterval, ring);
// Polling buttons, calling animation setter of pixel ring and turning on the led
aSel.update(&PixelRing::setAnimation, ring);
}