Ich habe jetzt folgenden Code, der aus irgend einem mir nicht ganz ersichtlichen Grund rudimentär das macht, was er soll
#include "Tlc5940.h"
#include "tlc_fades.h"
#define interval 500
int fadingMode = 0; //Beginn mit TLC Reset
int ledPins[] = {2,3,4};
int pinCount = sizeof(ledPins)/sizeof(int);
int max = 100;
unsigned char x;
unsigned long startTime = 0;
unsigned long waitUntil=0;
//TLC_CHANNEL_TYPE channel;
void setup() {
Tlc.init();
Serial.begin(115200);
}
void loop()
{
if(Serial.available()){
if(Serial.peek() == 'l'){
Serial.flush();
}
else{
fadingMode = Serial.parseInt();
Serial.print("Mode set to ");
Serial.print(fadingMode);
Serial.print(": ");
startTime = millis();
switch(fadingMode){
case 0:
Serial.println("allet uff Null");
break;
case 1:
Serial.println("Flash");
break;
case 2:
Serial.println("Schalte Led an Pin 5 ein");
break;
case 3:
Serial.println("Dimme Led an Pin 5");
break;
case 4:
Serial.println("Slow Blinker");
break;
}
}
}
unsigned char brightness;
switch(fadingMode){
case 0:
// TLC Resert, alles aus
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
Tlc.clear();
tlc_removeFades(ledPins[thisPin]);
Tlc.update();
}
break;
case 1:
Flash();
break;
case 2:
ledset1();
break;
case 3:
ledset2();
break;
case 4:
slowBlink();
break;
break;
default:
Serial.println("Unknown Mode!");
delay(1000);
break;
}
}
void Flash(void){ // Flasher Variante
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
// if (!tlc_isFading(ledPins[thisPin])) {
// tlc_removeFades(ledPins[thisPin]);
uint16_t duration = 150;
uint32_t startMillis = millis()+ 2000;
uint32_t endMillis = startMillis + duration;
//Tlc.set (ledPins[thisPin], max);
tlc_addFade(ledPins[thisPin], 4095, max, startMillis, endMillis);
tlc_updateFades();
// Tlc.update();
}
}
void ledset1(void){ // schaltet einfach nur die Led ein
Tlc.set(5,4000);
Tlc.update();
}
void ledset2(void){ // verändert einfach Led
Tlc.set(5,500);
Tlc.update();
}
void slowBlink(void){ //slower blinking
Tlc.clear();
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
if (!tlc_isFading(ledPins[thisPin])) {
Tlc.set(ledPins[thisPin],0); //Versuch, die Leds komplett auschalten
uint16_t duration = 1000;
uint32_t startMillis = millis()+ 2000;
uint32_t endMillis = startMillis + duration;
//tlc_removeFades(ledPins[thisPin]);
//Tlc.set (ledPins[thisPin], max);
tlc_addFade(ledPins[thisPin], 0, 4095, startMillis, endMillis);
tlc_addFade(ledPins[thisPin], 4095, 0, startMillis, endMillis);
}
tlc_updateFades();
// Tlc.update();
}
}
aber was jetzt seltsam ist: wenn ich zwischen Mode 1 und 4 hin und her schalte, wird das Blinken manchmal zufällig. bzw. passieren dann Doppelblitzer oder sowas. Ich hab teilweise auskommentierten Code dringelassen, damit ihr sehr, was ich versucht habe.