ArduinoForum.de - Das deutschsprachige Forum rund um den Arduino
Zeitmessung - Taster gedrückt - Druckversion

+- ArduinoForum.de - Das deutschsprachige Forum rund um den Arduino (https://www.arduinoforum.de)
+-- Forum: Arduino-Allgemein (/arduino-Forum-Arduino-Allgemein)
+--- Forum: Programmierung (/arduino-Forum-Programmierung)
+--- Thema: Zeitmessung - Taster gedrückt (/arduino-Thread-Zeitmessung-Taster-gedr%C3%BCckt)

Seiten: 1 2


Zeitmessung - Taster gedrückt - DEL - 08.08.2019 13:43

Hallo zusammen !

Ich versuche seit geraumer Zeit eine Zeitmessung zu realisieren bei der gemessen wird wie lange eine Taste gedrückt wurde. Das Ergebnis lasse ich mir auf einem 16x2 Display anzeigen.

Derzeit ist es so das ca 6ms am Display angezeigt werden egal wie lange ich den Taster gedrückt halte.

Leider bin ich noch immer ein blutiger Anfänger und ich komme hier nicht weiter.
Kann mir jemand weiterhelfen?



Hier der Code den ich verwende:

Code:
#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
unsigned long start, finished, elapsed;
void setup()
{
lcd.begin(16, 2);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Stoppuhr");
lcd.setCursor(0,1);
lcd.print("TEST2");
delay(2000);


lcd.clear();
lcd.setCursor(0,0);
lcd.print("(1)START/RESTART");

pinMode(7, INPUT); //Starttaste
}
void displayResult(){
  int s, ms;
unsigned long over;
elapsed = finished - start;
over = elapsed % 3600000;
over = over % 60000;
s = int(over / 1000);
ms = over % 1000;
lcd.print(s);
lcd.print("s ");
lcd.print(ms);
lcd.print("ms");
}
void loop(){
while (digitalRead(7) == HIGH)
{
start = millis();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ergebniss:");
lcd.setCursor(0,1);
finished = millis();
delay(200);
displayResult();
}
}
Danke
LG
DEL

Hier noch der Schaltplan!

LG
DEL

...und immer an die Code Tags denken... das geht über # oben im Editormenü.
lgbk



RE: Zeitmessung - Taster gedrückt - Tommy56 - 08.08.2019 14:13

Du hast ein Problem mit dem Prellen des Tasters.

Wenn Du wirklich Zeiten unter 10 ms messen willst, dann solltest Du die Hardwareentprellung mit Wechselschalter und RS-FlipFlop wählen.
Wenn Deine Zeiten > 10 ms sind, kannst Du softwareseitig entprellen. Schau Dir dazu das Beispiel Debounce aus den Beispielen der IDE an.
Dazu müssen aber alle Delay aus dem Loop raus.
Du brauchst auch keine while-Schleife, denn loop ist Deine Schleife. Die darfst Du nur nicht blockieren.

Gruß Tommy


RE: Zeitmessung - Taster gedrückt - DEL - 08.08.2019 14:59

Hallo Tommy,

Danke für deine rasche Antwort!

Ich denke für mich wäre es am einfachsten wenn ich mit der Kondensator Schaltung entprelle.
Anbei der neue Schaltplan. Ist das so richtig ? Oder habe ich was falsch verstanden...

Danke
LG
DEL


RE: Zeitmessung - Taster gedrückt - Tommy56 - 08.08.2019 15:16

Das hängt von der kleinsten Messdauer ab, die Du noch nicht beantwortet hast.

Gruß Tommy


RE: Zeitmessung - Taster gedrückt - DEL - 08.08.2019 16:54

(08.08.2019 15:16)Tommy56 schrieb:  Das hängt von der kleinsten Messdauer ab, die Du noch nicht beantwortet hast.

Gruß Tommy

Die kleinste Messdauer kann schon mal unter 10ms sein...

LG
DEL


RE: Zeitmessung - Taster gedrückt - Bitklopfer - 08.08.2019 17:01

(08.08.2019 14:59)DEL schrieb:  Hallo Tommy,

Danke für deine rasche Antwort!

Ich denke für mich wäre es am einfachsten wenn ich mit der Kondensator Schaltung entprelle.
Anbei der neue Schaltplan. Ist das so richtig ? Oder habe ich was falsch verstanden...

Danke
LG
DEL

...wohl falsch verstanden.
Deine Lösung ist ne Umgehung des Flip-Flops... aber es könnte auch funktionieren....nur der 20nF Kondensator dürfte zu klein sein... interessant wird das im Bereich von 220nF bis 470nF - Test it.
lgbk

(08.08.2019 16:54)DEL schrieb:  
(08.08.2019 15:16)Tommy56 schrieb:  Das hängt von der kleinsten Messdauer ab, die Du noch nicht beantwortet hast.

Gruß Tommy

Die kleinste Messdauer kann schon mal unter 10ms sein...

LG
DEL

10ms mit dem Finger....soso... also dann brauchst die Schaltung mit dem Flip-Flop sonst ist der Fehler durch das RC-Glied zu groß.
lgbk


RE: Zeitmessung - Taster gedrückt - Tommy56 - 08.08.2019 17:03

(08.08.2019 16:54)DEL schrieb:  Die kleinste Messdauer kann schon mal unter 10ms sein...

Dann würde ich Dir eher zur FlipFlop-Schaltung raten. Wobei Du mit einem handbetätigten Schalter nie kontrolliert unter 10 ms kommen wirst.

Soll die Länge eines Tastendrucks oder der Abstand zwischen 2 Tastendrücken gemessen werden?

Gruß Tommy


RE: Zeitmessung - Taster gedrückt - DEL - 08.08.2019 17:17

Ist die FlipFlop Schaltung genauer oder wieso würdest du eher zu dieser raten?

Es soll die länge des Tastendrucks gemessen werden, wobei irgendwann der Taster gegen 2 Schütz Kontakte ausgetauscht wird - Ist sozusagen mal mein erster Testaufbau... Die Messzeiten variieren recht stark!

LG
DEL


(08.08.2019 17:01)Bitklopfer schrieb:  ...wohl falsch verstanden.
Deine Lösung ist ne Umgehung des Flip-Flops... aber es könnte auch funktionieren....nur der 20nF Kondensator dürfte zu klein sein... interessant wird das im Bereich von 220nF bis 470nF - Test it.
lgbk


Erst jetzt gesehen - Danke !
Ich teste morgen - muss mir noch die Kondensatoren besorgen.
Bin jedoch nicht happy mit der "falschen" lösung... wie wäre es richtig ?