Forum: Mikrocontroller und Digitale Elektronik Hilfe, ich finde den Fehler im Code nicht


von Tobias N. (silberkristall)


Angehängte Dateien:

Lesenswert?

Hallo,

da ich mit den alten Code nur Probleme hatte und ich nun auch einen 
Timer einsetze wollte ich mein Programm neu aufsetzten, so weit so gut 
aber nun hänge ich schon so ziemlich am anfang und finde den Code nicht,

Es geht um den Teil in der while schleife. Direkt dort wo das 
if(debounce..... ist.

Also solange man am Taster nichts macht blinken 2 LEDs, das klappt auch, 
nun soll eine variable mit klickst auf den Taster geschrieben werden, 
also bei jedem klick eine variable um 1 erhöht werden und nach einer 
bestimmten wartezeit soll dann eine aktion zu der passenden anzahl der 
klicks ausgeführt werden. im if Teil darunter sieht man ja wenn wenn die 
variable = 1 mache das, wenn die variable = 2 mache dies usw. Das ganze 
klappt aber nicht. also sobald der taster gedrückt wird blinkt nur noch 
eine LED aber die andere nicht mehr. Also ganz unten sieht man ja dann 
if variable = 2 kein led blinken ist die variable = 1 dann soll die led 
wieder blinken aber egal ob man nun einmal oder 5 mal auf den taster 
klickt die LED blinkt dann garnicht mehr. Die variable zvtime schreibt 
sich aber bei einem klick auf den taster wieder auf 0 also das "klicken" 
auf den taster geht, denn das sehe ich ja an der anderen kontroll led.

Ich hoffe ihr könnt mir weiter helfen.

von Peter D. (peda)


Lesenswert?

Tobias N. schrieb:
> if(debounce..... ist.

Vergiß dieses debounce.
Man sollte es aus der Artikelsammlung entfernen, macht ständig nur 
Ärger.


Die obige Routine hat leider mehrere Nachteile:

    sie detektiert nur das Loslassen (unergonomisch)
    sie verzögert die Mainloop immer um 100ms bei gedrückter Taste
    sie verliert Tastendrücke, je mehr die Mainloop zu tun hat.

Eine ähnlich einfach zu benutzende Routine, aber ohne all diese 
Nachteile findest Du hier: Entprellung für Anfänger
Beitrag "Entprellen für Anfänger"

Zum Thema Entprellen siehe auch:

    Artikel Entprellung


Peter

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.