Quelques petits soucis dans le code mais ce qui empêche le fonctionnement attendu, est je crois, l'utilisation de la fonction FastLED.clear().
Vous déclarez plusieurs instances de -> FastLED.addLeds ... etc
mais lorsque vous utilisez FastLED.clear(), vous n'indiquer pas sur quelle bandes vous souhaitez agir et ça doit effacer l'intégralité des données de tous les tableaux.
J'ai été voir l'aide de la lib FastLed, on peut garder votre façon de faire mais dans ce cas, on ne va pas utiliser FastLED.clear() mais mettre nous même les données à 0.
-
Supprimer toutes les lignes FastLED.clear()
-
On va déclarer 3 procédures pour effacer les données des tableaux concernés:
void black_leds_Visit() {
for (int i = 0; i <NUM_LEDS_Visit; i++) {
leds_Visit[i] = CRGB::Black;
}
}
void black_leds_Manche() {
for (int i = 0; i <NUM_LEDS_Manche; i++) {
leds_Manche[i] = CRGB::Black;
}
}
void black_leds_Local() {
for (int i = 0; i <NUM_LEDS_Local; i++) {
leds_Local[i] = CRGB::Black;
}
}
- Ajouter l'appel de ces nouvelles procédures ici:
etatBoutonVisit = digitalRead(boutonPlusVisit);
if (etatBoutonVisit == HIGH) {
VarVisit = VarVisit + 1;
VarVisit = constrain(VarVisit, 0, 1); // VarVisit dans votre code prend la valeur minimum à 0
black_leds_Visit(); // et la valeur maximum à 1
}
etatBoutonVisit2 = digitalRead(boutonMoinsVisit);
if (etatBoutonVisit2 == HIGH) {
VarVisit = VarVisit - 1;
VarVisit = constrain(VarVisit, 0, 1); // VarVisit dans votre code prend la valeur minimum à 0
black_leds_Visit(); // et la valeur maximum à 1
}
etatBoutonVisit3 = digitalRead(boutonZeroVisit);
if (etatBoutonVisit3 == HIGH) {
VarVisit = 0; // A corriger, ici vous aviez écrit VarVisit = VarVisit = 0
black_leds_Visit();
}
etatBoutonManche = digitalRead(boutonPlusManche);
if (etatBoutonManche == HIGH) {
VarManche = VarManche + 1;
VarManche = constrain(VarManche, 0, 24); // VarManche dans votre code prend la valeur minimum à 0
black_leds_Manche(); // et la valeur maximum à 24
}
etatBoutonManche2 = digitalRead(boutonMoinsManche);
if (etatBoutonManche2 == HIGH) {
VarManche = VarManche - 1;
VarManche = constrain(VarManche, 0, 24); // VarManche dans votre code prend la valeur basse minimum à 0
black_leds_Manche(); // et la valeur maximum à 24
}
etatBoutonManche3 = digitalRead(boutonZeroManche);
if (etatBoutonManche3 == HIGH) {
VarManche = 0; // A corriger, ici vous aviez écrit VarManche = VarManche = 0
black_leds_Manche();
}
etatBoutonLocal = digitalRead(boutonPlusLocal);
if (etatBoutonLocal == HIGH) {
VarLocal = VarLocal + 1;
VarLocal = constrain(VarLocal, 0, 1); // VarLocal dans votre code prend la valeur basse minimum à 0
black_leds_Local(); // et la valeur maximum à 1
}
etatBoutonLocal2 = digitalRead(boutonMoinsLocal);
if (etatBoutonLocal2 == HIGH) {
VarLocal = VarLocal - 1; // VarLocal dans votre code prend la valeur minimum à 0
VarLocal = constrain(VarLocal, 0, 1); // et la valeur maximum à 1
black_leds_Local();
}
etatBoutonLocal3 = digitalRead(boutonZeroLocal);
if (etatBoutonLocal3 == HIGH) {
VarLocal = 0; // A corriger, ici vous aviez écrit VarLocal = VarLocal = 0
black_leds_Local();
}
Vous remarquerez ci dessus, l'utilisation de la fonction -> variable = constrain(variable, ValeurMin, ValeurMax) qui vous évitera de devoir gérer le dépassement des valeurs que vous aurez fixées, ainsi même si vous incrémentez indéfiniement la valeur de la variable, elle prendra au maximum la valeur définit par ValeurMax. Sinon quelques erreurs sont indiquées aussi.
Il ne vous reste plus qu'à tester et penser à modifier les valeurs Max de la fonction constrain si vous modifier votre code, le mieux est d'ajouter une constante, je vous laisse faire.