Hallo,
ich bin ganz neu hier und hänge gerade an einer kleinen Aufgabe.
Ich messe mittels HC-SR04 Sensor eine Entfernung. Beim unterschreiten eines bestimmten Wertes (Abstand zum Sensor) wird über Ausgang 2 ein Relaismodul angesteuert, Relais zieht an bis der Wert (Abstand zum Sensor) wieder überschritten ist, dann fällt das Relais wieder ab.
So weit so gut, dies funktioniert schon mal. Anbei der Code. Die LED´s dienen nur zur optischen Erkennung, sind nicht relevant.
int trigger=5;
int echo=4;
long dauer=0;
long entfernung=0;
int hupe=2;
int LEDgruen=8;
int LEDgelb=7;
int LEDrot=6;
void setup()
{
pinMode (trigger, OUTPUT);
pinMode (echo, INPUT);
pinMode (hupe, OUTPUT);
pinMode (LEDgruen, OUTPUT);
pinMode (LEDgelb, OUTPUT);
pinMode (LEDrot, OUTPUT);
}
void loop()
{
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
dauer= pulseIn(echo, HIGH);
entfernung = (dauer/2) * 0.03432;
if (entfernung <=50 )
{
digitalWrite (hupe, LOW); // Relaismodul invertiert, zieht bei LOW an!!
digitalWrite (LEDrot, HIGH);
}
else if (entfernung <=75)
{
digitalWrite (LEDgelb, HIGH);
}
else if (entfernung <=90)
{
digitalWrite (LEDgruen, HIGH);
}
else
{
digitalWrite (hupe, HIGH); // Relaismodul invertiert, fällt bei HIGH ab!!
digitalWrite (LEDgelb, LOW);
digitalWrite (LEDrot, LOW);
digitalWrite (LEDgruen, LOW);
}
delay(100);
}
Nun möchte ich aber dass mein Relais bei unterschreiten der Entfernung nur einmal kurz ( z.B. 200ms) anzieht, und dann wieder abfällt. Erst wenn der Abstand vom Sensor den vorgegebenen Wert wieder überschritten hat, darf bei erneuter Annäherung an den Sensor und Unterschreitung des Abstandes das Relais erneut (für 200ms) anziehen.
Ich hoffe das Problem ist verständlich!
Ich komme hierbei irgendwie nicht weiter,
vielleicht könnt ihr mir ja nen Tipp geben, wie dies zu lösen ist!
Würde mich sehr freuen, vielen Dank!