Frage Taster

Hallo!
Wie kann ich überprüfen ob ein Taster für 2 sek. gedrückt wurde?

mfg
Michael

Wie wärs mit "die Zeit messen in der der Taster seinen Zustand nicht ändert"?

Grüsse
Klaus

mit millis()

Sagen wir der Taste geht auf H wenn Du ihn drückst:
Du speicherst die Zeit ab wenn der Taster von L auf H geht und subtrahierst diese von der Zeit wenn der Taster von H auf L geht. Wenn diese Zeit größer als 2000 ist, dann wurde der Taster länger als 2 Sekunden gedrückt.
http://playground.arduino.cc/Learning/BlinkWithoutDelay_de

Grüße Uwe
Beispielcode:

unsigned long Zeit;
byte statustaster=0;

...
loop()
{
if (digitalRead (Taster) ==1 && statustaster ==0)     // taster gedrückt
{
delay (10);                // entprellen
Zeit = millis();
statustaster =1; 
}

if (digitalRead (Taster) ==0 && statustaster ==1)     // taster losgelasen
{
delay (10);                // entprellen
statustaster =0; 
if ( millis() - Zeit >2000)
{
mach irgendwas   //Taster länger als 2 Sek gedrückt
}
else
{
mach irgend etwas anderes // Taster kürzer als 2 Sek gedrückt
}
}

Bei der positiven Flanke vom Taster, speicherst du die Zeit mit dem Befehl millis().
Dann berechnest du, wenn der Taster noch gedrückt ist, die Differenz aus der aktuellen Zeit und der gespeicherten Zeit und schon hast du die Zeit, wielange du denn Taster schon drückst.

So mach ich es in meinem aktuellen Projekt auch, funktioniert einwandfrei.

Edit: Uwe, war schon wieder schneller :wink:

Grüße,
J3RE

J3RE:
Edit: Uwe, war schon wieder schneller :wink:

Ich bitte um Entschuldigung :wink: :wink: :wink: