Ich glaube, Du bist spätestens jetzt an dem Punkt angelangt, an dem Du Dich mit den Grundlagen der Programmierung speziell in C/C++ beschäftigen musst, um die Hinweise, die Du bekommst verstehen zu können.
Auch einige Grundlagen des Arduino könnten sinnvoll sein.
millis() ist ein Arduino-interner Wert, Der die Anzahl Millisekunden seit Start zurück gibt.
Die Abfrage ist quasi:
if (aktuelle Uhrzeit - gemerkte Start-Uhrzeit >= Wartezeit){
mache was
gemerkte Startzeit += Wartezeit (ohne Verschleppen der laufenden Zeit, dafür muß aber die Abarbeitung kürzer als die Wartezeit sein)
gemerkte Startzeit = millis() (auf die aktuelle Zeit setzen, ab hier läuft wieder die Wartezeit, ggf. mit etwas 'Versatz')
}
'flag1' wird wohl am Anfang deklariert und stellt ein Flag/eine Flagge/einen Merker dar.
Damit wird sich nur gemerkt, daß irgend eine Routine an der Anzeige was geändert hat.
flag1= !flag1;
negiere 'flag1' - macht auf 0->1, auf 1->0
Weshalb 'updateLeds' gesetzt wird - kA, sollte auch direkt mit dem Flag machbar sein, aber egal.
Wenn 'updateLeds' gesetzt ist, wird der Befehl ausgeführt, damit alle LEDs Ihre neuen Werte bekommen - hier werden erst die LEDs auf die eingestellte Farbe gesetzt.
Ein Blick in die FastLED.h kann Dich ggf. die enthaltenen Aufruf-Varianten erkennen lassen.
Nicht wirklich schön (QB45 hatte Da eine schönere Hilfe ... Win98 oder so), aber wohl so gewollt.
Hoffe, konnte Dir etwas unter die Arme greifen - viel Spaß in der wohl arduinoreduzierten Weihnachtszeit - nicht, daß die Frau noch argwönisch wird
Hier werden die Variablen festgelegt. Die IDE setzt globale Variablen auf den Anfangswert 0 oder false. Wenn es für Dich gewohnter ist, kannst Du auch einen Anfangswert festlegen:
postmaster-ino:
Weshalb 'updateLeds' gesetzt wird - kA ...
Das ist auch ein Merker, der gesetzt wird, wenn die LEDs neue Werte bekommen sollen. Schicke nur neue Daten an die LEDs, wenn sich irgendwo die Farbe ändern soll. Da FastLED.show(); wegen der zeitkritischen Ansteuerung der IC in den WS2812-Lichtpunkten blockierend sein muß, sollte man das nur machen, wenn notwendig. Bei diesem Beispielsketch mit vier Lichtpunkten ist das eher nebensächlich, habe ich mir aber halt so als blockadearme Programmierung angewöhnt.
Undotiert ... klingt irgendwie nicht nach mächtig schnell wachsendem Reichtum ...
Ich würde auch Sachspenden nehmen ... noch wäre Zeit, stelle gleich erst das Bäumchen auf (Wink mit dem Zaunpfahl gg)
Denke, wenn Du (oder sonst wer) Seinen/Ihren Sketch hier rein stellt und 'egal wer' darin irgendwo nicht durchblickt, werden sich hier eine ganze Menge helfende User finden, Die Das auch machen werden - für's gleiche Geld !!
Das 'updateLeds' ein Merker ist, ist soweit klar - da Dieser aber, meinem Verständnis nach, einen äquivalenten Wert zum flag hat (Beide ändern sich immer nur gleichzeitig bzw wird updateLeds gesetzt, wenn flag1 rückgesetzt wird).
Somit sollte sich gleiche Funktionalität ergeben, wenn zum Aktualisieren der LEDs das flag1 geprüft wird und in beim .show() rückgesetzt würde.
Denke mir aber, daß irgendwo noch was Anderes mit Beiden passiert bzw. updateLeds wohl auch auf Flag2 reagiert und somit als ODER-Flag dient ... oder so.
Diese Funktion hat ja die beiden LEDs im linken Turm (der Krippe) zu einem schönen flackern gebracht. Das gleiche wird dann parallel für den anderen Turm (rechts) realisiert.
Diese beiden Funktionen möchte ich dann mit den Random Funktion unabhängig voneinander an und aus machen
Also Turm links an (flackern) ... irgendwann wieder aus und das gleiche mit dem anderen Turm zeitlich aber unabhängig
ich hab mal eine zusätzliche Variable eingefügt "Alt2MillisF"
jetzt mault mich der Kompiler an
mit
Krippe_Final_V11:31: error: 'alt1MillisF' was not declared in this scope
if (millis() - alt1MillisF >= 150) {
^
exit status 1
'alt1MillisF' does not name a type