Go Down

Topic: Tasterabfrage reagiert verzögert (Read 899 times) previous topic - next topic

Osten

Hallo an alle, ich hab ein kleines Problem mit meinem Sketch und komme allein einfach nicht auf die Lösung.

Mein Sketch arbeitet acht Temperaturabfragen ab und hat insgesamt ein delay von 80ms (10ms pro Messung). Nun ist aber auch ein Menü enthalten (MenuBackend.h Lib) um Peak Wert einzustellen die für Warnungen gedacht sind. Es werden vier LCD´s angesteuert. Das Problem ist jetzt, dass wenn ich eine Menütaste tippe, der Sketch gut eine halbe Sekunde bis Sekunde braucht bis darauf reagiert wird. Dies ist unglücklich da man so zusagen die Tasten gedrückt halten muss, macht man´s zu kurz passiert nichts, drückt man zu lang kann´s sein, dass man die debounce Zeit schon überschreitet und man zwei Menü ebenen auf einmal durchschaltet. Ich möchte es aber so haben, dass man wirklich nur kurz tippen muss um weiter im Menü zu wählen.
Mein Gedanke war zwischen denn Messungen jeweils Taster abfragen zuerstellen oder gibt es eine andere Möglichkeit?

Board: Mega1280
Schon einmal vielen Dank im Voraus  :)

melmann

Also wenn ich das Richtig verstanden habe funktioniert dein sketch in etwa so:
temp1 = A1;
delay(10);
Temp2 = A2;
delay(10);
und so weiter und dann kommt irgendwann deine Button abfrage richtig??

diese ganzen delays stoppen deinen Arduino und der kann dan nicht mehr reagieren versuche es doch mal mit dem beispiel Blink ohne delay
und für den button nutzt du Interrupts

ich hoffe ich konnte dir helfen
Mit freundlichem Gruß melmann

uwefed

Ohne Deinen Sketch können wir nur im dunkeln fischen oder die glücklichen die eine Kristallkugel haben könnten diese zu Rate ziehen.
Bitte gib uns Deinen Sketch.
Müßte mal eine Umfrage mache wer alles eine Kristallkugel hat ... ;) ;) ;) ;)

Grüße Uwe

Osten

#3
Oct 21, 2012, 10:08 pm Last Edit: Oct 21, 2012, 10:22 pm by Osten Reason: 1
Danke für eure Hilfe.

Ja, so in etwa. Jede Abfrage macht 2ms Pause und wiederholt dies fünf mal und teilt den Endwert durch fünf damit die Temperaturwerte nicht zu sehr schwancken.
Ich habs einmal ohne delay versucht einfach weg gelassen, selbst dann war er enorm verzögert.

Ich werd den Sketch morgen mit hochladen momentan ist der noch so unordentlich das man den kaum durchschauen kann.

Meine frage war mehr ob´s eine Möglichkeit gibt zwischen den Messungen immer wieder die gleiche Abfrage fürs Menü zu erstellen, hatte irgendwo mal sowas gesehen aber kann mich nicht mehr erinnern wo.


uwefed

Du kannst die Abfrage der Tastatur in eine Funktion packen und wiederholt aufrufen. Du mußt dann aber das Programm aich ändern da bei einer Tastaturbetätigung unter Umständen auch etwas anderes gemacht werden muß.
Ich bitte immernoch un den Setch  ;) Danke 
Grüße Uwe

BerndJM

Hi,

unabhängig von deinem Zeitverzögerungsproblem, finde ich dieses Vorgehen:
Quote
jede Abfrage macht 2ms Pause und wiederholt dies fünf mal und teilt den Endwert durch fünf damit die Temperaturwerte nicht zu sehr schwancken

als bischen "suboptimal".
Mal folgendes angenommen:

du mißt 5 x den Wert "10" -> 10 + 10 + 10 + 10 + 10 = 50 / 5 = 10
o.k. Mittelwert ist i.O.

nun mißt du (durch Schwankungen) 3 x den Wert "10" und 2 x den Wert "9"
dann hast du  -> 10 + 10 + 10 + 9 + 9 = 48 / 5 = 9,6
auch o.k

nun hast du aber bei einer (oder mehreren) Messung (durch irgendwelche Störungen) richtig "Schrott" dabei, z.B.:
10 + 10 + 1 + 10 + 1 = 32/5 = 6,4
ist das dann auch noch ein vernünftiger Mittelwert ?!?

IMHO müßte man da doch Meßwerte die zu weit von der "Norm" abweichen verwerfen und den Teiler entsprechend anpassen.

Grüßle Bernd
Theoretisch gibt es keinen Unterschied zwischen Theorie und Praxis ...

Osten

Wie sollen den solche Fehler auftretten? Aber eigentlich ist es genau das was ich auch will, da manche Werte ziemlich ordentlich schwanken dürfen damit die Anzeige aber nicht springt, gibt´s die fünf Messungen. Das klappt bisher alles recht gut ich häng nur am Menü fest...

Ich kann den sketch irgendwie nicht hochladen er ist zu groß für diese Funktion.

uwefed

Wie zu groß? Ist Dein Sketch größer als 4MByte?
Grüße Uwe

Go Up