Frage zu einfacher Schleife/Bedingung

OP #1916871
Lesenswert?

Wenn ein Taster gedrückt wird, startet eine Schleife die unterbrochen 
werden soll, wenn der gleiche Taster nochmal gedrückt wird.
Wie kann ich das realisieren?
Mein Problem ist, dass ich ja beide Male auf das gleiche Ereignis 
reagieren muss, aber mit einem anderen Ausgang und ich nicht weiß was 
ich zu tun habe.
Ich habe probiert, in die Schleife noch eine Abfrage zu setzen um diese 
zu unterbrechen, aber das hat nicht funktioniert.

Danke für jeden Denkanstoß!
#1916895
Lesenswert?

Bastian F. schrieb:

> Ich habe probiert, in die Schleife noch eine Abfrage zu setzen um diese
> zu unterbrechen, aber das hat nicht funktioniert.

Dann zeig doch mal, was genau nicht funktioniert hat.

Hast du auch berücksichtigt, dass die Taste zuvor losgelassen werden 
muss ehe sie zum 2ten mal als gedrückt erkannt werden kann?
Nur dadurch dass dein Programm feststellt, dass die Taste auch 
losgelassen wurde, kannst du von einer gedrückten Taste unterscheiden ob 
sie jetzt das erste mal oder das zweite mal gedrückt wurde.


(Und dann gibt es natürlich noch das Problem des Tastenprellens)
OP #1917807
Lesenswert?

Ich kriege es nicht hin, selbst wenn ich mit zwei Tastern arbeite :(
1
    switch (tast)        {
2
            default:
3
            case NO_TASTER:
4
            break;
5
            case 0:
6
 while(1) {
7

8
irgendwas_passiert();
9
              
10
              if (tast==1) { break;}
11
        
12
          }

tast überwacht die Taster und gibt die Änderung weiter, was auch überall 
funktioniert, nur sobald die while Schleife läuft, "sieht" das Programm 
das wohl nicht mehr.
Auch sowas wie while(!tast==1) funktioniert nicht.
Kann mir eventuell jemand ein Beispiel geben, wie es funktioniert, oder 
sonstwie auf die Sprünge helfen?
Gast #1917815
Lesenswert?

>aber das wirst du wohl selber merken...

Vielleicht merk ich das....

Aber ich warte einfach, bis Du Code postest, der, auf das Notwendigste 
reduziert, den Fehler noch enthaltend, kompiliert werden kann.

LCD hast Du in Deiner Problembeschreibung nicht erwähnt. Also entfernen. 
"Auf das Notwendigste reduzieren".

Konsequent einrücken. Lesen wollen wir das auch können.

Das kann noch ein halbes Jahr so gehen. Lass Dir Zeit.... ;-)
#1917829
Lesenswert?

Huch schrieb:
> Konsequent einrücken. Lesen wollen wir das auch können.

Wenn der Code konsequent eingerückt wäre, hatte man sehen können, dass 
in versuch_led_2.c schließende geschweifte Klammern (vermutlich 2) 
fehlen.  Auch enthält es toten Code (in einem switch stehen nach dem 
break Anweisungen, die kein Label haben - die Einrückungen führen einen 
allerdings in die Irre, weil man nicht sieht, dass die Anweisungen noch 
innerhalb der switch stehen).  Vermutlich wurden da Einrückungen erst 
schludrig gehandhabt und dann wurde dem geglaubt, was sie vortäuschen.

Weiter habe ich nicht gesucht.

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