ich habe einen Analogen Wert dessen Bereich ich wie folgt abfrage:
if (val>=320 && val<=486)
digitalWrite(led3,HIGH);
delay(100);
}
else{
digitalWrite(led3,LOW);
}
Wie ist das möglich, die Abfrage so zu machen, das sie wenn der Wert übereinstimmt erst nach ein paar millisekunden erfüllt wird?
Ich möchte so kurzzeitige Schwankungen ausschließen.
Einfach nach ein paar ms nochmal abfragen würde ich nicht, so kannst Du keine Schwankungen ausschließen. Es könnte ja sein, dass der Wert gerade in den zwei Momenten passt und ansonsten nicht.
Mein Vorschlag:
unsigned long zeit;
boolean check;
if (val >= 320 && val <= 486)
{
check = true;
zeit = millis();
while (millis() - zeit < 250)
{
if (val < 320 || val > 486)
check = false;
}
}
else
check = false;
if (check)
{
digitalWrite(led3,HIGH);
delay(100);
}
else
digitalWrite(led3,LOW);
Ungetestet, bin gerade auf dem Sprung in die Arbeit. Sollte aber so funktionieren.
Oder die Sparversion davon, sollte bei dem Wertebereich eigentlich aber auch gut funktionieren:
int valbuffer;
setup() {
... // val ein Mal einlesen
valbuffer = val; // Puffervariable initialisieren...
}
loop() {
... // val einlesen
valbuffer = valbuffer * .9 + val * .1; // So gleicht sich valbuffer langsam an val an und gleicht schnelle Schwankungen aus
if (valbuffer>=320 && valbuffer<=486)
...