Forum: Mikrocontroller und Digitale Elektronik AVR: Logikproblem in C Unterscheidung 1 Taste oder 2 Tasten gedrückt


von J.W. (Gast)


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

von Thomas E. (thomase)


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.

von Schlumpf (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Verstehe ich das richtig:
Die LED soll an sein, wenn der Zustand beider Tasten gleich ist, und 
aus, wenn sich der Zustand unterscheidet?

von J.W. (Gast)


Angehängte Dateien:

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...

von J.W. (Gast)


Lesenswert?

Hi Rufus,

ja, aber speichernd. Also nicht, das die LED leuchtet, wenn beide Tasten 
gedrückt sind, dauerhafter Druck, das ist sehr einfach. Vielleicht 
drücke ich mich noch, leider, sehr unklar aus...

Merci

von Fabian O. (xfr)


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

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
Noch kein Account? Hier anmelden.