Hallo, ich möchte eine led mit mehreren unabhängig voneinander funktionierenden Schaltern schalten, d.h. jeder Schalter kann ein und jeder kann ausschalten. es sind Schalter keine taster. kann mir jemand Hilfe geben, welche grundlegende Struktur ich dafür nehmen sollte (d.h. if oder switch oder so)? Danke
mikrocontroller_controller schrieb: > ich möchte eine led mit mehreren unabhängig voneinander funktionierenden > Schaltern schalten, d.h. jeder Schalter kann ein und jeder kann > ausschalten. es sind Schalter keine taster. kann mir jemand Hilfe geben, > welche grundlegende Struktur ich dafür nehmen sollte (d.h. if oder > switch oder so)? If natürlich. Der Trick ist, zwei Stati zu vergleichen, den letzten bekannten und den aktuellen, wobei sich jeder Status aus den Einzelstati aller Schalter zusammensetzt. Wenn sich irgendwas am Status geändert hat: LED toggeln und aktuellen Status als "letzten bekannten" merken. Das immer wiederholen. Falls es sich bei den Schaltern um gewöhnliche mechanische Schalter handelt: Entprellen nicht vergessen, sonst kommt Müll raus.
Mehrere schalter machen das leben Schwirig. Wenn es umschalter sind könntest du immerhin noch eine Wechselschaltung machen. Ansonsten Schalter raus Taster rein und ein Stromstossrelais. Wenn du umbedingt deine Schalter behalten willst würde ich sagen Optokoppler -> µC -> Relais -> Led Wenns wirklich nur eine kleine led ist kannste das Relais sparen.
Also jeder Schalter kann die LED ein oder ausschalten, egal welche Stellung grade aktiv ist? Dann würde ich die LED umschalten, sobald eine Änderung irgendeines Schalters erkannt wurde: Pseudo-Code: Zyklisch: state = Schalter1 + Schalter2 + ... ; //Jeder Schalter hat eine Bitstelle von state if(state != state_alt) toggle_LED; state_alt = state; Zyklisch_ende;
dete schrieb: > Mehrere schalter machen das leben Schwirig. Wenn es umschalter sind > könntest du immerhin noch eine Wechselschaltung machen. Ansonsten > Schalter raus Taster rein und ein Stromstossrelais. Es ist dir bestimmt nicht aufgefallen, aber es geht um Mikrocontroller. Abgesehen davon kann man in der Elektroinstallation mit der Wechselschaltung lediglich 2 Schalter verwenden und nicht mehrere. Dazu braucht man dann die Kreuzschaltung. Aber wie gesagt, hier geht es um Mikrocontroller.
npn schrieb: > Abgesehen davon kann man in der Elektroinstallation mit der > Wechselschaltung lediglich 2 Schalter verwenden und nicht mehrere. Dafür gobt es dann auch die Kreuzschaltung.
Ützelbrützel schrieb: > npn schrieb: >> Abgesehen davon kann man in der Elektroinstallation mit der >> Wechselschaltung lediglich 2 Schalter verwenden und nicht mehrere. > > Dafür gobt es dann auch die Kreuzschaltung. Ich zitiere mal vollständig. Fällt dir was auf? :-) npn schrieb: > Abgesehen davon kann man in der Elektroinstallation mit der > Wechselschaltung lediglich 2 Schalter verwenden und nicht mehrere. Dazu > braucht man dann die Kreuzschaltung.
Z.B. mit ATtiny13:
1 | #include <sbit.h> |
2 | |
3 | int main() |
4 | {
|
5 | DDR_B0 = 1; |
6 | PORT_B1 = 1; // Pullup ein |
7 | PORT_B2 = 1; // Pullup ein |
8 | PORT_B3 = 1; // Pullup ein |
9 | PORT_B4 = 1; // Pullup ein |
10 | for(;;) |
11 | PORT_B0 = PIN_B1 ^ PIN_B2 ^ PIN_B3 ^ PIN_B4; |
12 | }
|
:
Bearbeitet durch User
dete schrieb: > Wenn es umschalter sind > könntest du immerhin noch eine Wechselschaltung machen. Die meisten Wechselschalter haben beim Umschalten einen kurzen Zwischenstatus, bei dem keiner der beiden Kontakte geschlossen ist. Schaltet man beide Kontakte parallel und alle Schalter in Reihe, so hat man normalerweise Dauer- durchgang. Nur im Augenblick des Schaltens gibts eine kurze Unterbrechung. Diese Unterbrechung kann man detektieren und zum Ein- oder Ausschalten der LEDs benutzen. Gruss Harald
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.