Ich habe meine 300 LED Strip 2812 versuch zum blinken zu bringen mit dem folgenden Script.
Bei 60 LED geht das sehr schnell, bei 300 schaltet es die LED sehr langsam.
Verwende ich den falschen Befehl ?
Vielleicht wäre es eine Überlegung wert (wenn Du schon mit delay() arbeiten willst) die Wartezeit automatisch an die vorher verstrichene Zeit zum Setzen der Pixel anzupassen:
Schreib das strip.show(); außerhalb der for Schleife.
strip.show(); überträgt die Daten aus dem Buffer auf die LED. Pro LED dauert die Übertragung 24 x 1,25µS = 30µS und zusätzlich ca 50µS Reset vorher. Bei 300 LED sind das jedes mal ca 9mS. Wenn Du das 300 mal in der Schleife machst dann sind das ca 2,7s nur für die Übertragung.
Habe so was in meiner Led Kette auch umständlich über mehrere Vaiablen und if Versch. eingebaut.
Aber durch den Modulo Oper. ist das ja viel leichter zu lösen.Ja Mathematik hilft manchmal.
Viele Wege führen nach Rom - und Welcher davon der Beste ist, darüber wird man trefflich streiten können.
Vll. wird man sich einig, Welchen man ganz sicher nicht beschreiten sollte, aber in der anderen Richtung sehe ich schwarz
Wenn Der Code für Dich passt, schnell genug ist und Das macht, was Du willst: Glückwunsch! Erst Mal so belassen!!
Klar, man kann IMMER irgend was besser oder schöner machen - nur, ob's unterm Strich was bringt.
Auch ist RAM und Flash dafür da benutzt zu werden - unbenutzte Bereiche bringen Dir keinen VOrteil - wenn hier noch Optimierungspotential besteht, hat an 'für später' noch Reserven, mehr aber nicht.
Thorsten4171:
Aha
Es ist so aber die beste wenn nicht ein zigste Möglichkeit dem Compiler mitzuteilen was ich will.
Sehe ich das so ungefähr richtig?
i & 1 unterscheidet grade/ungrade.
Postmaster hat natürlich Recht.
Wenn der Compiler einen unterstützt, und aus % 2 das erheblich elegantere &1 macht, schadet es nicht, das zumindest zu wissen.