Ich arbeite seit gestern mit drei Schieberegistern, die an 24 LEDs
verbunden sind. Ich verstehe auch schon größtenteils den Code zur
Schaltung der Schieberegister. Nun möchte ich aber noch die Register mit
einer Variabel voll schieben.
Folgendes soll passieren:
Ich möchte mit einer Variable bestimmen wie die Schieberegister gesetzt
werden. Sprich wenn ich meine Variable hier Pin auf 1 setze soll LED 1
angehen. Bei 2 LED 2. Bei 3 LED 3 usw.
Bei meinem aktuellen Code bleiben lediglich alle LEDs aus, woran liegt
das? Wie kann ich mein Vorhaben richtig umsetzen?
Duda D. schrieb:> if (Pin == 0)> {> unsigned long binOutput[24] => {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};> }
Abgesehen von der Leistung, für nur 24 Bits stolze 96 Byte RAM zu
verschwenden, wird das der Compiler wohl komplett wegoptimieren, da
binOutput innerhalb seines Gültigkeitsbereiches nirgends verwendet wird.
Verwende besser die Typen aus der stdint.h, dann fällt sofort auf, daß
für 24 Bits ein einzelnes uint32_t (= 4 Byte) dicke ausreichend ist.
Und lese nochmal nach, welchen Gültigkeitsbereich Variablen haben, die
innerhalb eines Blocks {} definiert werden.
Bits lassen sich zwar nicht als Arrayindex zugreifen, aber kein Problem,
man kann einzelne Bits über ein AND-Verknüpfung testen: