Monoflop

Ein Monoflop kommt zum Einsatz, wenn z. B. eine Lampe, ein Motor, ein anderes Gerät o. ä. für eine bestimmte Zeit eingeschaltet werden soll. im folgenden Beispiel wird das Monoflop durch eine Taste an Pin 9 getriggert, wobei die Tastenentprellung nicht erforderlich ist. Am Pin 11 wird als Ausgang eine LED, ein MOSFET o. ä. zum Schalten/Anzeigen der Laufzeit angeschlossen. Die Laufzeit kann über die zugehörige Konstante leicht angepasst werden.

/* Beispiel für ein Monoflop mit 5 Minuten Laufzeit
*  Version 1.0
*  Datum: 12.12.2021
*  Autor: Hans M. Herbrand
*  Website: herbrand.org
*/

const byte buttonPin = 9;               // Taster für Trigger (gegen Masse) 
const byte outputPin = 11;              // Ausgang für LED, MOSFET, Relais 
unsigned long Laufzeit = 5*60*1000UL;   // Laufzeit Monoflop (5 min.)
uint32_t previousMillis = 0; 


void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(outputPin, OUTPUT);
}

void loop() {
  if (digitalRead(buttonPin) == LOW) {
    digitalWrite(outputPin, HIGH);
    previousMillis = millis();   // save the time when we switched on the output
  }
  if (millis() - previousMillis > Laufzeit && digitalRead(outputPin) == HIGH)  
  {
    digitalWrite(outputPin, LOW);
  }
}

Für die Laufzeit wird „millis()“ verwendet, um den weiteren Programmablauf nicht zu blockieren.