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.