Ultraschallsensor Lautsprecher nur einmal ansteuern

Hallo Community,

heute habe ich mich zum ersten mal ausgiebig mit der Thematik Arduino beschäftigt und bin dabei gleich auf ein Problem gestoßen, weswegen ich mich mal hier im Forum angemeldet habe.

Ich möchte gerne mithilfe eines Ultraschallsensors einen Lautsprecher ansteuern. Das funktioniert mit dem untenstehenden Code auch wunderbar. Der Ausgang 5 wird bei einem Abstand von unter 10cm problemlos angesteuert.

Nun das Problem: Der Ausgang 5 (Lautsprecher) ist die ganze Zeit angesteuert wenn sich ein Objekt näher als 10cm am Sensor befindet. Ist es in dem Zusammenhang möglich, dass der Ausgang nur für 2 Sekunden angesteuert wird und die Abfrage ob sich ein Objekt unter 10cm am Sensorbefindet, erst nach 10 Sekunden wiederholt wird?

Es soll quasi eine Abstandsgesteuerte Hupe realisiert werden. Wenn man einem Objekt zu nahe kommt geht die Hupe für 2 Sekunden an und erst nach 10 Sekunden kann diese durch den Abstandssensor wieder aktiviert.

Hier der Code:

int trigger=7;
int echo=6;
long dauer=0;
long entfernung=0;
int piezo=5;         //Lautsprecher
void setup()
{
Serial.begin (9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(piezo, 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 >= 500 || entfernung <= 0)
{
Serial.println("Kein Messwert");
}
else
{
Serial.print(entfernung);
Serial.println(" cm");
}
if (entfernung <= 80)//Wenn der Wert für die Entfernung unter oder gleich 80 ist, dann... 
{
digitalWrite(piezo,HIGH); //...fange an zu piepsen. 
}
else 
{
digitalWrite(piezo,LOW);  
}
delay(1000);
}

Ich hoffe ich habe das Problem verständlich umschrieben. Über eine Antwort wäre ich sehr Dankbar!

Gruß Lukas

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *). Bitte quote und code unterscheiden.
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Außerdem entferne bitte die unnötigen Leerzeilem und formatiere den Code ordentlich (+T in der IDE hilft Dir dabei).

Zum Problem: Du darsft kein delay verwenden. Schau Dir das Beispiel BlinkWithoutDelay in der IDE an.

Gruß Tommy

Hallo,

Das hat ja eigendlich nichts mit der Messung zu tun, die kann (sollte) ja ständig weiterlaufen. Wenn Du unter 10cm bist machst Du die Hupe an und nach 2s wieder aus, dazu benutzt Du millis. Wenn sie dann aus ist und der Abstand immer noch unter 10cm ist darf sie erst wieder nach 10s angehen. Dazu benutzt Du auch millis.

Das ist einen schön Übung zum Thema millis, mit der Du lernst wie man mehrere Dinge quasi gleichzeitig machen kann. Stell dir vor das ist auf einem Fahrzeug und bei 5cm soll auch noch was anderes passieren, z.B anhalten, dann kannst Du ja nicht mit delay 10s warten bis die nächste Messung erfolgt. Ansonsten fährt dir dein Fahrzeug inzwischen gegen die Wand.

Heinz

Vielen Dank für die vielen Antworten!

Ich habe schonmal was von BlinkWithoutDelay funktion gelesen aber nach ein bisschen recheche bin ich leider nicht wirklich schlauer geworden. Ich bin ein absoult blutiger Anfänger und verstehe den Zusammenhang zwischen den unterschiedlichen If- Bedinungen nicht.

Es wäre wirklich toll wenn mir das jemand nochmal etwas näher beschreiben könnte, vielleicht auch bezogen auf den obrigen Code.

Über Hilfe freue mích mich sehr.

Gruß Lukas

Dann suche mal nach der Nachtwächtererklärung.

Gruß Tommy

Hallo Tommy56,

die Erklärung per Nachtwächter ist auf jeden fall schonmal sehr gut nachzuvollziehen. Allerdings für mich nur in dem beschriebenen Beispiel. Bezogen auf mein eigentliches Problem sehe ich da noch keinen richtigen Zusammenhang :confused:

Wäre es denn möglich das der von mir dargelegte Code von jemandem ergänzt wird? Dann könnte ich das vermutlich deutlich besser nachvollziehen, im Zusammenhang mit der Nachtwächtererklärung.

Wenn mir dahingehend jemand helfen könnte wäre ich ihm sehr dankbar!

Ich freue mich auf Rückmeldungen :slight_smile:

MfG Lukas

arduinouser369:
die Erklärung per Nachtwächter ist auf jeden fall schonmal sehr gut nachzuvollziehen. Allerdings für mich nur in dem beschriebenen Beispiel. Bezogen auf mein eigentliches Problem sehe ich da noch keinen richtigen Zusammenhang :confused:

Dann hast Du es noch nicht verstanden.

Gruß Tommy