AVR: Logikproblem in C Unterscheidung 1 Taste oder 2 Tasten gedrückt

Gast #3078985
Lesenswert?
• ▲
▼
Hi,

ich habe als Neuling ein Logikproblem und ich bitte um ein Code-Snippet. 
Ich möchte gerade programmieren, das

Taste eins UND zwei gedrückt oder beide nicht gedrückt = LED an
Mit XOR nun: Taste 1 xor Taste 2 gedrückt oder umgekehrt, LED aus, die 
soll aber auch aus bleiben! Nur wenn ich jetzt 1 und 2 wieder 
gleichzeitig drücke, dann soll die Led wieder an sein... oh man, total 
simpel, sorry...

Liebe Grüße,
Jens
#3079004
Lesenswert?
• ▲
▼
J.W. schrieb:
> Taste eins UND zwei gedrückt oder beide nicht gedrückt = LED an

J.W. schrieb:
> Nur wenn ich jetzt 1 und 2 wieder
>gleichzeitig drücke, dann soll die Led wieder an sein... oh man, total
>simpel, sorry...
Eher total widersprüchlich.

J.W. schrieb:
> ich habe als Neuling ein Logikproblem und ich bitte um ein Code-Snippet.
> Ich möchte gerade programmieren
Versuch nicht mit irgendwelcher Prosa zu erklären, was du vorhast, 
sondern zeig einfach, was du gemacht hast. Ohne Code kann dir auch 
keiner helfen.
Und ein Code-Snippet wird dich nicht weiterbringen. Wie willst du denn 
programmieren, wenn es Ernst wird.
Zumal das deiner Beschreibung zufolge auch gar nicht geht.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

mfg.
Gast #3079027
Lesenswert?
• ▲
▼
Das was du willst, ist in sich widersprüchlich.. oder du hast dich 
schlecht ausgedrückt.

Wenn es rein kombinatorisch sein soll, dann gibt es für jede Kombination 
an Tasten (4 Kombinationsmöglichkeiten) exakt einen Zustand der LED

Wenn die Abfolge eine Rolle spielt, dann gibt es deutlich mehr 
Möglichkeiten und du musst die Reihenfolge in deinem Programm erfassen. 
Das kann man z.B. mit einer Zustandsmaschine lösen. Auch statemachine 
oder FSM genannt.

Versuche mal ganz klar zu beschreiben, was du vor hast.
Gast #3079056
Lesenswert?
• ▲
▼
Hi,

klar, mir kommt es halt auf die Unterscheidung zwischen zwei Tasten 
gedrückt oder nur eine gedrückt an. Aber wahrscheinlich ist das in 
meinem Beispiel quatsch, weil man ja kaum gleichzeitigkeit erreichen 
kann. Mein Code ist angehangen, funktioniert aber überhaupt nicht.
Da sollte Led1 und 2 leuchten, egal ob beide Tasten gedrückt sind oder 
nicht, gleichzeitig. Falls nur eine gedrückt wird, dann gehen die Leds 
dauerhaft aus, bis man mit Taste 3 drückt, dann schaltet man wieder 
frei.
Der Code ist murks. Ich denke, es ist problematisch, wenn man zwei 
Schalter von einem unterscheiden möchte?

Danke...
Angehängte Dateien:
#3079072
Lesenswert?
• ▲
▼
Alles sehr wirr.

Du musst als erstes mal unterscheiden, was Du unter Taste "gedrückt" 
verstehst. Entweder "ist gerade gedrückt" oder "wurde gedrückt (und 
wieder losgelassen)". Das ist ein großer Unterschied.

Und dann überlegst Du Dir mal, welche Abläufe und Zustände es geben 
kann. Mit jedem Tastendruck (antippen und loslassen), wechselt das 
Programm seinen Zustand. Jedem Zustand ist zugeordnet, ob die LED an 
oder aus ist.

Lies Dir am besten den Artikel mal durch:
http://www.mikrocontroller.net/articles/Statemachine

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.