Analoger Eingang if-Anweisung mit delay

Hallo zusammen, absoluter Programmier- sowie Arduinonewbie hier.
Ich habe ein Problem bei einem, eigentlich recht simplen, Code.
Ich möchte, dass nachdem der Analoge Eingang A1 einen Input bekommen hat, PIN13 nach 5s Verzögerung ein HIGH bekommt.
Das ganze klappt soweit auch schon ganz gut, jedoch soll PIN13 sofort wieder auf LOW springen, wenn A1 keinen Input mehr bekommt. Dabei gibt es jedoch eine Verzögerung von etwa 3s. Das ganze muss mit dem delay zusammenhängen, da es ohne diesen Befehl reibungslos klappt.
Ich hoffe hier weiß jemand des Rätsels Lösung, da ich mit meiner bescheidenen Programmier-Weisheit am Ende bin.
Vielen Dank euch allen im Voraus.

Hier der Code:

int SensorPin = A1;
int LEDPin = 13;




void setup() {


pinMode (LEDPin, OUTPUT);


Serial.begin (9600);

}

void loop() {

int input = analogRead (SensorPin);

Serial.println(input);

if (input > 205)
  { 
    delay (5000);
      digitalWrite (13, HIGH);
  }

else
  {
    
     digitalWrite (13, LOW);
   
  }

}

Das ist zu unbestimmt.
Was passiert, wenn in der Wartezeit der Analogwert unter die Grenze fällt? Und was,wenn in dieser Zeit der Wert wiederkommt?

Ja.
Schau in die Beispiele das blinkwithout delay an.

prinzipiell und ohne Anspruch auf etwas könnte das so aussehen....

void loop() {
  int input = analogRead (SensorPin);
  Serial.println(input);
  if (input > 205 )
  {
    if (!isstartet)
    {
      startzeit = millis();
      isstartet = true;
    }
  }
  else if (digitalRead(13) == HIGH)
  {
    iststartet = false;
  }
  if (millis() - startzeit > 5000 && isstartet)
    digitalWrite (13, HIGH);
  else
    digitalWrite (13, LOW);
}
// die CombieLib.zip findest du mit der Forensuche
#include <CombieTypeMangling.h> 
using namespace Combie::Millis;

#include <CombiePin.h>
using Led = Combie::Pin::OutputPin<13>;

#include <CombieTimer.h>
Combie::Timer::RisingEdgeTimer  ton(5_Sekunden);     // steigende Flanke wird verzoegert


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

void loop() 
{
 Led{} = ton = analogRead(A1) > 205;
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.