ich steh eben total auf dem Schlauch...
Wie bekomme ich es es hin das Arduino Impulse eines Durchflussmessers prüft und sobald keine Impulse mehr kommen einen Ausgang schaltet.
Das die Impulse je nach Durchflussmenge unterschiedlich sind komme ich grad nicht weiter wie ich das am besten hin bekommen.
Wenn 30 Sekunden lange keine Impulse mehr ankommen, einen Ausgang zu schalten.
Kann mir jemand den Wald zeigen den ich vor lauter Bäumen nicht mehr sehe?
Einen Zähler oder Timer programmieren der dir jede Sekunde von 30 runter zählt. Wenn ein Impuls kommt wieder auf 30 setzen. Und dann auf 0 abfragen. Oder anders herum.
interrupt der vom Durchflußmesser ausgelöst wird und der den millis() in einer unsigned long Variablen abspeichert und dann im loop die Zeit zwischen abgespeicherten Wert und aktuellen millis() Wert kontrollieren. Falls größer als 30000 dan Ausgang schalten. Das funktioniert für Zeiten ohne Impulse von ca 49,5 Tagen.
Nimm den Vorschlag von uwefed. Das ist einfacher, da du dir einen Schritt sparst. Ist eigentlich offensichtlich, aber daran dass man konsequent millis() verwenden sollte muss ich mich noch gewöhnen. Dabei habe ich in meinem aktuellen Projekt eine Routine, die das LCD ausschaltet wenn 60 Sekunden lang nichts gedrückt wurde. Das ist das gleiche
Wobei millis() in Interrupt-Routinen nicht richtig updatet, da die Systemuhr selbst mit einem Interrupt läuft. Bei solch langsamen Ereignissen wie hier sollte das keine Rolle spielen, aber es ist nichts wenn man Präzision will.
Jetzt hab ich doch noch eine Frage.
Läuft der Code auch in einem ATTiny 85?
Bei der Datei die den ATTiny Support in der Arduino IDE herstellt, kann ich zwar was zum millis() finden aber nix zum Interrupt Support. Lauten Datenblatt hat der ATTiny 85 aber Interrupt Eingänge.
Geht der Code somit trotzdem in ATTIny 85?