FastLed: argument pour fill_solid

Bonjour à tous, je fais un petit projet assez simple pour mon amie qui veut une barre de LED et pouvoir choisir la couleur en appuyant sur un bouton

J'ai donc décidé d'utiliser la librairie fastled. Les sketchs d'exemple fonctionne bien avec mes WS2812B, aucun problème.

Voila mon souci: J'ai choisi fastle car il y a une liste prédéfinie de couleurs, ce qui me suffit largement. J'ai mis cette liste dans un char* array histoire de pouvoir monter/baisser de 1 a chaque pression sur un bouton haut/bas, aucun souci là aussi.

Sauf qu'une fois la couleur choisie, impossible de l'appliquer sur l'ensemble de mes LED. Je n'ai pas besoin d'effet de style ou autre, juste changer la couleur de l'ensemble des LED.

Par exemple lorsque j'affiche la valeur de ma table de couleurs:

Serial.println(couleur(i));

Il me retourne bien

White

Normalement on peut utiliser la fonction suivante:

fill_solid(leds, NUM_LEDS, CRGB::White);

Sauf que moi j'aimerais le remplacer par quelque chose du style:

fill_solid(leds, NUM_LEDS, CRGB::couleur(i));

Mais impossible, rien de ce que j'essaye ne fonctionne.

Avez-vous une idée de comment faire?

Merci bien

Bonjour,

CRGB::White est une constante numérique. Tu ne peux pas la remplacer par une chaine.

Il faut que tu déclares une table avec ces couleurs Par exemple:

const long color[]={CRGB::White,CRGB::Yellow,CRGB::Red};

Après tu fais

fill_solid(leds, NUM_LEDS,color[i]);

Salut et merci de ton aide !
j’ai testé mais j’ai un paquet de messages d’erreur
Notamment celui ci qui semble récurrent

C:\Users\paul\Documents\Arduino\libraries\FastLED/pixeltypes.h:133:12: note: no known conversion for argument 1 from ‘const char*’ to ‘uint32_t {aka long unsigned int}’

C:\Users\paul\Documents\Arduino\Ledmaman\Led.ino:49:39: warning: invalid conversion from ‘const char*’ to ‘uint32_t {aka long unsigned int}’ [-fpermissive]

fill_solid(leds, NUM_LEDS, couleur*);[/quote]*
Voici l’intégraité de mon code
> #include “FastLED.h”
> #define membersof(x) (sizeof(x) / sizeof(x[0]))
> #define NUM_LEDS 97
> #define DATALED 12
>
> const byte buttonPin1 = 2;
> const byte buttonPin2 = 3; *
> CRGB leds[NUM_LEDS];
>
> int i = 0;
_> const char
couleur = {_
> “CRGB::AliceBlue”,
> “CRGB::Amethyst”,
> “CRGB::AntiqueWhite”,
> “CRGB::Aqua”,
> “CRGB::Aquamarine”,
> “CRGB::Azure”,
> “CRGB::Beige”,
>
> };
>
> const int size = membersof(couleur);
>
> void setup() {
>
> // initialize the pushbutton pin as an input:
> pinMode(buttonPin1, INPUT_PULLUP);
> pinMode(buttonPin2, INPUT_PULLUP);
> attachInterrupt(digitalPinToInterrupt(buttonPin1), plus, RISING);
> attachInterrupt(digitalPinToInterrupt(buttonPin2), minus, RISING);
> Serial.begin(9600);
> FastLED.addLeds<WS2812, DATALED, RGB>(leds, NUM_LEDS);
> }
>
> void loop() {
> *
> }
> void plus() {
> *
> if(i<(size-1)){
> i++;
> }
> else {
> i = 0;
> }
> Serial.println(size);
_> Serial.println(couleur
);
_
> * Serial.println(i);*
> fill_solid(leds, NUM_LEDS, couleur*);
> _ FastLED.show(); _
> _}_
>
> _ void minus() {_
> _ if(i>0) {_
> _ i–;_
> _ }_
> _ else {_
> _ i = size-1;_
> _ }
> Serial.println(couleur);
> Serial.println(i);_

> fill_solid(leds, NUM_LEDS, couleur);
> _ FastLED.show();
> }[/quote]*_

Es-tu certain d’avoir bien lu ce qu’a écrit kamill?

Je n'avais en effet pas fait attention au changement de chaine en numerique J'avais ensuite fait plusieurs tests dans le fill_solid 8en appliquant d'abord ce qui m'a été conseillé puis en faisant d'autres tests plus hasardeux). J'ai encore mon arduino qui se deconnecte du PC a chaque fois que j'appuie sur le bouton, je dois avoir un probleme de connexion avec mes BP la compilation me semble bonne, je testerai en réel ce soir, merci !