Einzelnes Bit aktualsieren

Gast #5870347
Lesenswert?

Hi

Ich habe noch nicht so viel erfahrung mit Programmierungen von 
Mikrocontrollern, also bitte verzeiht mir wenn diese eine "zu einfache" 
Frage ist. Ich möchte mit einem Freund zusammen für ein Event etwas 
zusammenbauen.

Ich habe einen Arduino und daran ein TL595 IC angeschlossen, hierbei 
handelt es sich um ein Port-Expander welcher seriell angeschlossen ist. 
Es kann also nicht wie bei I2C Expandern ein einzelner Ausgang gesetzt 
werden ,es muss immger das ganze Register aktualisiert werden.

Nun habe ich verschiedene LEDs an den 8 Ausgängen. Ich habe bereits 
Experimente gemacht, und es funktioniert einwandfrei.

Mein Problem ist nun, das ich z.b. eine Funktion machen will, die z.b. 
"setLed(8)" heisst, und dann die 8te LED anschaltet. Nun müsste ich ja 
aber dafür wissen, was die Led gerade für einen Zustand haben, da ich ja 
auch die anderen LED "wieder" auf Ein bzw. aus setzen muss.

Irgendwie müsste man beim Ausführen von "setLed" abspeichern welche LED 
gerade welchen zustand hat, also etwas im stil von

byte ledStatus = 00100111

und dann

shiftOut(ledStatus)

Das habe ich auch schon probiert, also mit beliebigen werten von 
ledStatus, und es funktioniert.

Nun komme ich aber nicht weiter, wie ich die einzelnen Werte im byte 
ledStatus aktualisieren kann.

Kann mir jemand vielleicht weiterhelfen wie man sowas macht?

Grüsse Julian
Gast #5870379
Lesenswert?

Wenn du den Status nicht rücklesen kannst must du eine Variable 
deklarieren und dort immer speicheren was du sendest. Diese Variable ist 
dann quasi dein Ledstatus. Einzelne LEDs kannst du dann mit 
bitmanipulationen verändern.

Dabei gilt für die Bitmaske OR setzt AND löscht XOR toggelt.

Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren