// attention importer Toggle AVANT FastLED sinon il y a conflit sur un enum
#include <Toggle.h>
#include <FastLED.h>
const byte brocheBandeau = 2;
const byte nbLeds = 3;
CRGB leds[nbLeds];
class superToggle : Toggle {
public:
CRGB & led;
byte brocheBouton;
uint32_t couleur;
superToggle(CRGB & led, byte brocheBouton, uint32_t couleur) : Toggle(brocheBouton), led(led), brocheBouton(brocheBouton), couleur(couleur) {}
void begin() {
Toggle::begin(brocheBouton);
}
void on() {
led = couleur;
}
void off() {
led = 0x000000;
}
using Toggle::poll; // Expose la méthode poll de Toggle
using Toggle::onPress; // Expose la méthode onPress de Toggle
using Toggle::onRelease; // Expose la méthode onRelease de Toggle
};
superToggle boutons[] = {
{leds[0], 3, 0xFF0000},
{leds[1], 4, 0x00FF00},
{leds[2], 5, 0x0000FF},
};
void gestionBoutons() {
bool changement = false;
for (auto &bouton : boutons) {
bouton.poll();
if (bouton.onPress()) {
bouton.on();
changement = true;
} else if (bouton.onRelease()) {
bouton.off();
changement = true;
}
}
if (changement) FastLED.show();
}
void setup() {
FastLED.addLeds<WS2812B, brocheBandeau, GRB>(leds, nbLeds);
Serial.begin(115200);
for (auto &b : boutons) b.begin();
}
void loop() {
gestionBoutons();
}