Aktion auslösen wenn Knopf mindestens 5 Sekunden gedrückt ist

Hallo liebe Community,
bitte entschuldigt falls dieses Thema bereits existiert, ich habe es leider nicht gefunden.

Ich möchte dass mein Arduino Nano bei einem Knopfdruck (HIGH Signal) welches mindestens 5 Sekunden anliegt eine Aktion ausgeführt wird.

Leider konnte ich keine passenden Dinge hierzu finden, und dazu bräuchte ich eure Hilfe.

Vielen Dank bereits im voraus, grüße Luca!

Bildschirmfoto 2021-09-09 um 10.30.13|618x500

const int summer = 4;
const int relais2 = 6;
const int klingel = 10;
int klingelState = 0;


void setup() {
  
  pinMode(summer, OUTPUT);
  pinMode(relais2, OUTPUT);
  pinMode(klingel, INPUT);
}


void loop() {



klingelState = digitalRead(klingel);

if (klingelState == HIGH) {       //Wenn dieses signal länger als 5 Sekunden anliegt 
                                 //soll folgender Loop ausgeführt werden
  

 digitalWrite(summer, HIGH);
 delay(4000);
 digitalWrite(summer, LOW);
 delay(1000);

                        
} else {

  digitalWrite(summer, LOW);
} }


Hi luca,

this is the english speaking forum.
If you prefer writing in german report your post to a moderator to move it to the german sub-forum.
the basic functionality that you need is
a timervalriable of variable type unsigend long gets assigned a snappshot of time each time a transistion from button-unpressed to button-pressed occures.
combined with an if-condition

if (millis() - buttonPressStarted > 5000) {
  //start action
}

through assigning the snapshot of time for each state-change unpressed to pressed shorter presses update the snapshot of time which results in
millis() - buttonPressStarted = less than 5000 milliseconds
=> if-condition stays false
best regards Stefan

Moin
Du hast recht. Dieses Thema ist hier schon mehrfach abgefackelt worden.
Für deinen Sketch brauchst du die folgenden Funktionen:

  • Button Handler
  • Time Handler

Die Grundlagen dazu findest du in den Beispielen aus dem IDE.
Viel Spass beim Programmieren.

Hallo,

du musst dich erstmal mit millis() vertraut machen. Danach musst du dich mit Pegelwechsel vertraut machen. Danach überlegst du dir wie das alles zeitlich abläuft. Male es dir auf. Du musst erkennen ob der Taster "erneut" gedrückt wurde. Erst dann wird der neue Vergleichswert gesetzt und der Vergleich mit millis fängt an. Sind schon paar Überlegungen wert sich dafür einzuarbeiten. Benötigt man öfters so oder so ähnlich.

Screenshots von Code möchte übrigens niemand, immer in Code Tags einbetten.

du erkennst wenn der Button gedrückt wird (previousState != currentState)
und merkst dir die Zeit (previousMillis = millis())

Wenn der Button gedrückt ist, kontrollierst ob ausreichend Zeit abgelaufen ist (millis()-previousMillis >5000).

zum lesen:
IDE Beispiele
State Change detection und Blink Without Delay

Hi Luca,

wenn dir Programmieren lernen zu aufwendig ist.
dann ist vielleicht Ardu-Block etwas für dich.
http://arduino-basics.com/

Die Steuerungsaufgabe ist wirklich einfach. Das müsste sich mit Ardu-Block
recht schnell verwirklichen lassen.

vgs