Best of FastLED Community

Hi,

ich stolpere immer wieder ueber Codebeispiele, welche besonders schnell, originell, schoen, nuetzlich oder anderweitig bemerkenswert sind.

Deshalb beginne ich hier mal einen Thread, wo ich das fuer Euch (und mich) sammle.

Heute: Eine speichersparende "funkelnde Sterne" Animation, welche kein extra Array benoetigt, um den Zustand der LEDs (wird gerade heller oder wird gerade dunkler) zu speichern - es wird stattdessen das niedrigste Bit vom Rot Kanal dafuer benutzt.
Und das Ganze mit nur 8 Zeilen Code...

Mark Kriegsmanns SoftTwinkles Code (warmweiss)

Und Beitag + Diskussion dazu (englisch)

Viel Spass beim Weihnachtsdeko programmieren wuenscht

Helmuth

Ich denke dann kann man hier auch einen Link zur "originalen" FastLED Lib packen >HIER<
Gruß
DerDani

Sternenhimmel / Weihnachtslichterkette in bunt

Hmm, wenn Du weniger Codezeilen willst:

for( int i = 0; i < NUM_LEDS; i++) if (leds[i]) {
    leds[i] += (leds[i].r & 1)? -lightcolor: lightcolor;
}

Oder noch kürzer:

for( int i = 0; i < NUM_LEDS; i++, leds[i] += (!!leds[i]) * ((leds[i].r & 1)? -lightcolor: lightcolor)) {};

:smiling_imp:

Den ternaeren Operator verstehe ich, aber was bedeutet

!!leds[i]

?

Das ist kein eigener Operator, sondern zwei NOTs hintereinander. Das macht aus einer Zahl entweder 0 oder 1.
!x ist das gleiche wie (x == 0 ? 1 : 0), d.h. gibt 1 zurück, wenn der Wert 0 ist
!!x ist das gleiche wie (x != 0 ? 1 : 0), d.h. gibt 1 zurück wenn der Wert ungleich 0 ist

Das stammt aus früheren C Zeiten, wo es noch keinen eigenen Datentyp bool gab und man einfach einen ein typedef auf unsigned char genommen hat (was allerdings auch die Arduino IDE so macht). Es ist aber noch ein weit verbreitetes Idiom, genauso wie einige andere Eigenheiten die man heute nicht mehr unbedingt bräuchte, aber historisch geblieben sind, weil einfach Code abgeschrieben wird (z.B. typedefs von structs in C++, was in den aller meisten Fällen nur in C was bringt).
Man sollte das aber nur verwenden wenn unbedingt nötig, z.B. bei APIs die in C geschrieben sind. Manchmal wird es auch gemacht um bestimmte Warnungen zu unterdrücken.

Info: Die stable version von FastLED 3.1 ist jetzt verfügbar.

Hier die Beschreibung aller neuen Features.

Viel Spaß damit,

Helmuth

Jason Coon hat eine Matrix mit 4096 LEDs aus 4 Smartmatrixpanels gebaut.

Hier ein kurzes Video, wie das Ding in Aktion aussieht.