Probleme bei der steuerung der Helligkeit von ws2811 per Taster und FastLED

Hi zusammen,
Ich habe vor mit der FastLed Library einen Led streifen vom Typen WS2811 anzusteuern. Gleichzeitig habe ich vor mittels nur einem Taster (an D2) die Helligkeit der Leds zu verändern. Ich benutze übrigens eine zweite Library namens ONEbutton von Matthias Hertel, da sie Funktionen wie attachClick, attachDoubleClick usw. zur verfügung stellt.
Die Led animation wird außerdem von einer SD-Karte abgerufen, aber das ist hierfür nicht wichtig...

Nun zu meiem Recht simplen Problem:
Sobald ich den Taster einmal betätige erkennt die Funktion "button.attachClick()" die Tasteneingabe und die Funktion ''HelligkeitsStufe()" wird aufgerufen. In dieser Funktion soll die Helligkeit, die standardmäßig auf 100 ist, in 50er Schritten bzw. in drei Stufen bis 250 erhöht werden, um dann nach 250 wieder bei 100 anzufangen.

Also das erkennen der Tasteneingabe ist kein Problem, sowie das Aufzählen in drei Stritten bis 250 und wieder zurück, auch nicht, aber die einstellung mit FastLED.setBrightness() funktiioniert einfach nicht.
Am SeriellenMonitor wird mir die Zahl, die auf der Variable "Helligkeit" gespeichert ist ausgegeben, aber die Helligket der Leds verändert sich nicht...

Ich vermute weil die Funktionen voneinander im Sketch getrennt sind habe ich die Funktion FastLED.setBrightness() wahrscheinlich falsch platziert.

Hier mein Sketch( ich habe es auf das nötigste Reduziert):

#include <FastLED.h>
#include <OneButton.h>
#include <SPI.h>
#include <SD.h>

#define NUM_LEDS 40 // LED number
#define DATA_PIN 6    // your data arduino pin
#define CHIPSET WS2811  // your LED chip type
#define CS_PIN 4  // SD DataPin
#define Taster_PIN 2

int helligkeit = 100;  

OneButton button(Taster_PIN, true);
File fxdata;
CRGB leds[NUM_LEDS];

void setup(){
  
  Serial.begin(9600);
  pinMode(CS_PIN, OUTPUT); // CS/SS pin as output for SD library to work.
  pinMode(Taster_PIN, INPUT_PULLUP); 
  
  FastLED.addLeds<CHIPSET, DATA_PIN, BRG>(leds, NUM_LEDS); 
  
  if (!SD.begin(4)){
    Serial.println("sdcard initialization failed!");
    return;
  }
  Serial.println("sdcard initialization done.");

  button.attachClick(HelligkeitsStufe);  //Drei Helligkeitsstufen 
}

void loop(){

  fxdata = SD.open("myanim03.dat");

   while (fxdata.available()){
    
    fxdata.readBytes((char*)leds, NUM_LEDS*3);
    button.tick(); // wartet auf Tasteneingabe
    FastLED.show();
    delay(50);
  }
  fxdata.close();
}
void HelligkeitsStufe() {
  Serial.println(helligkeit);
  if (helligkeit != 250){
    helligkeit += 50;
    FastLED.setBrightness(helligkeit);
  }else{
    helligkeit = 100;
    FastLED.setBrightness(helligkeit);
  }
}

Ich danke euch im Vorraus für eure hilfe. Ich glaube nähmlich ich habe ein brett vorm Kopf.

Hallo,

wenn du den Zustand der LED änderst musst Du anschliessend auch ein FastLED.show() machen damit wird der Zustand an die LED ausgegeben.

Heinz

Danke für die schnelle Antwort,
ich habe die meine Funktion HelligkeitsStufe() ergänzt aber es scheint sich noch immer nichts zu tun...

void HelligkeitsStufe() {
  Serial.println(helligkeit);
  if (helligkeit != 250){
    helligkeit += 50;
    FastLED.setBrightness(helligkeit);
    FastLED.show();
  }else{
    helligkeit = 100;
    FastLED.setBrightness(helligkeit);
    FastLED.show();
  }
}
[\code]

Oh danke, der tipp war sehr hilfreich. Hatte das ganz vergessen. Habe das sketck jetzt etwas anders aber war gut jemanden zu fragen und eine hilfreiche antwort zu bekommen.

Hallo,

du must in die einzelnen LED erst mal was reinschreiben, hatte ich ganz übersehen das das fehlt. Schau Dir mal das an:

Doku FastLED

Heinz