wenn ein Wert länger überschritten dann...

Hallo,

ich würde gerne einen Pin HIGH schalten wenn ein Sensorwert länger (3s) einen Grenzwert durchgehend überschreitet.
Hat jemand einen Tipp für mich, wie ich das umsetzen kann?

Hi

Das ist eigentlich ganz einfach - Du musst nur 'anders herum' denken :).
Wenn der Wert NICHT überschritten ist, merkst Du Dir die aktuelle Uhrzeit (millis(); ).
IMMER, wenn millis() minus der gemerkten Uhrzeit größer der Wartezeit ist, hast Du Deinen Event.

Dann musst Du nur noch die LED wieder ausschalten, Das macht nämlich bis hier hin noc hKeiner wieder.

MfG

Vielen Dank, da habe ich die ganze Zeit "falschrum" gedacht.
Funktioniert :slight_smile:

Ja, das Denken kann eine Vielfalt erreichen.
(wenn man es denn zulässt)

#include <CombieTimer.h>
#include <CombiePin.h>

#include <CombieTypeMangling.h>
using namespace Combie::Millis;

const byte messPin  {A0};
const int grenzWert {400};

Combie::Pin::OutputPin<3> out;
Combie::Timer::RisingEdgeTimer  ton {3_sec};  // steigende Flanke wird verzoegert


void setup() 
{
  out.init();
}

void loop() 
{
  out = ton = grenzWert < analogRead(messPin);
}

Die nötigen Libs findest du hier im Forum, irgendwo....

Ja, das Denken kann eine Vielfalt erreichen.
(wenn man es denn zulässt)
...

Combie::Timer::RisingEdgeTimer  ton {3_sec};  // steigende Flanke wird verzoegert

"Da hat doch der combie mal einen Zaubertrick erfunden. Keine Ahnung wie es geht, aber es funktioniert"

Das halte ich für das Gegenteil von Denken. Eher ein gutes Gedächtnis :slight_smile:

michael_x:
"Da hat doch der combie mal einen Zaubertrick erfunden. Keine Ahnung wie es geht, aber es funktioniert"

Das halte ich für das Gegenteil von Denken. Eher ein gutes Gedächtnis :slight_smile:

Die Sprachmittel finden sich im tollen, dicken und modernem C++ Buch.
Der Rest ist Abstaktion + Kapselung.

Also nur eine Neuanordnung, von schon lange bekannten Prinzipien.
z.B. des Nachtwächters.

Ja, "das Denken", versuche ich bewusst auf ein Mindestmaß zu reduzieren.
Breites Denken, ja.
Tiefes Denken, eher nein.
(das geht konform mit meinen Talenten)

Combie::Timer::RisingEdgeTimer  ton {3.14_sec};
// oder
Combie::Timer::RisingEdgeTimer  ton {3_sec + 140_ms};

Was Kapselung angeht, sind deine Bibliotheken super.
Als Beispiele für C++ Programmierung auch, wenn man genau reinschaut.

Als Erklärung für die Frage "wenn ein Wert länger überschritten dann...?" ist der Quelltext der Library eine Antwort (natürlich nicht so einfach verständlich wie postmasters Prosa).

Der gezeigte Sketch selber ist eine Demo dafür, wie hübsch man die Antwort verstecken kann.