Guten Tag
Ich bin nicht der Hellste in sachen logic
ich würde gerne diesen "KnightRider effekt " mit 5 Led 1ste Hell 255 dann dunkler roduzieren
von LED 126 bis 167 un zurück
vileicht mit int speed als zeit 100-speed als FastLED delay
kann mir da jemand helfen ?
void larsonScanner(int startled, byte ledcount, byte hue, byte sat,speed)
{
//static unsigned long previousMillis=millis();
static int i; // Schrittzaehler
static int led=0;
static boolean reverse=false;
byte dim;
if(i > 32)
{
i = 0;
if (reverse) led--;
else led++;
// Anfang erreicht
if (led<0 ){
led=0;
reverse=!reverse;
}
// Ende erreicht
if (led>=ledcount){
led=ledcount-1;
reverse=!reverse;
}
}
//previousMillis=millis();
memset(LED,0,ledcount*3); // LED Array zuruecksetzen
dim = i*4;
i++;
// Aktuelle Led-2
if (led-2>=0 && !reverse) LED[led-2] = CHSV(hue,sat,128-dim); // FadeDown
else if (led-2>=0 && reverse) LED[led-2] = CHSV(hue,sat,dim); // FadeUp
// Aktuelle Led-1
if (led-1>=0 && !reverse) LED[led-1] = CHSV(hue,sat,255-dim); // FadeDown
else if (led-1>=0 && reverse) LED[led-1] = CHSV(hue,sat,127+dim); // FadeUp
// Aktuelle Led
LED[led] = CHSV(hue,sat,255);
// Aktuelle Led+1
if (led+1<ledcount && !reverse) LED[led+1] = CHSV(hue,sat,127+dim); // FadeUp
else if (led+1<ledcount && reverse) LED[led+1] = CHSV(hue,sat,255-dim); // FadeDown
// Aktuelle Led+2
if (led+2<ledcount && !reverse) LED[led+2] = CHSV(hue,sat,dim); // FadeUp
else if (led+2<ledcount && reverse) LED[led+2] = CHSV(hue,sat,128-dim); // FadeDown
FastLED.show();
FastLED.delay(100-speed);
}
Ich habe nun nur rudimentär heraus gefunden, wie die Lichtfolge wohl aussah (obwohl ich den Kram durchaus einige Male gesehen haben müsste ... Turbo-Boost )
Grundlegendes:
Die Variablen sollten nur so groß sein, wie Du Diese benötigst.
Bei <256 LEDs wäre meine Wahl BYTE (0...255), KEINE negativen Zahlen - haben ja auch keine negativen LED ...
Mein Ansatz wäre, daß ich quasi ZWEI Wander-Punkte hätte
Nummer 1 bringt die LED auf MAX
Nummer 2 (läuft Nummer 1 hinterher) bringt die LED auf Null
Damit kann ich die Länge des Nachleuchten (vorerst halt alle leuchtenden LED voll an) bestimmen.
Nun würde ich von der 'Nummer 2' schrittweise zur 'Nummer 1' gehen und den LEDs eine Helligkeit entsprechend dem Abstand zu 'Nummer 1' geben.
Das funktioniert auch, wenn die LED am Ende die Richtung wechselt - hier werden den LEDs teilweise zwei Helligkeiten zugewiesen - da wir aber von Dunkel nach Hell setzen, überschreiben wir mit dem hellen Wert den Dunklen.
Wenn alle nötigen LEDs gesetzt sind, ein .show() und ab in die Wartezeit, bis der nächste Pixel gesetzt werden soll.