Arduino Entfernungsmessung mit Ton?

1 Antwort

Ich habe diese Anleitung als Basis benutzt:

https://kkg-robotik.blogspot.com/2020/04/tinkercad-ubung-15-ultraschallsensor.html

Unten auf der Seite ist der Lösungsvorschlag.

https://www.tinkercad.com/things/fhfIQtbLM6O-kkg-robotik-ubung-15-pulsein

Dazu musst du dich auf TinkerCAD anmelden. Dort kann man virtuell einen Arduino simulieren. Diesen Code habe ich angepasst.

Ich habe einen Piezo Summer zusätzlich angeschlossen auf GND und Pin 8. Diesen Pulsweitenmonitor kannst du wieder entfernen, da du ihn nicht hast.

Die Entfernung wird gespeichert in der Variabel entfernung_cm.

Diese habe ich genommen und in ein Unterprogramm tonausgeben übergeben. Dort wird dann ein Ton ausgegeben wenn der Abstande zwischen 20 und 40 cm beträgt. Diesen Abstand kannst du anpassen. Eventuell sind bei die die 5 cm zu nah am Sensor und nicht messbar, musst du austesten.

Bild zum Beitrag

Das hier ist der Code.

const int PIN_ULTRASCHALL = 7;

void setup(){
  Serial.begin(9600);
}

long entfernung_lesen()
{
  // 1. Trigger:
  pinMode(PIN_ULTRASCHALL, OUTPUT);    // PIN_ULTRASCHALL im Trigger-Modus (Ausgang)
  digitalWrite(PIN_ULTRASCHALL, LOW);  // ausschalten
  delayMicroseconds(2);                // kurz warten, dass das Signal wirklich LOW wird
  digitalWrite(PIN_ULTRASCHALL, HIGH); // 10 Millisekunden-Puls erzeugen
  delayMicroseconds(10);
  digitalWrite(PIN_ULTRASCHALL, LOW);

  // 2. Auf Echo warten und messen
  pinMode(PIN_ULTRASCHALL, INPUT);       // PIN_ULTRASCHALL in Echo-Modus (Eingang)
  return pulseIn(PIN_ULTRASCHALL, HIGH); // warte auf Puls uns messe die Breite des Pulses in Millisekunden
}

void loop()
{
  // Formel aus dem Datenplatt:
  // Pulsbreite in Mikrosekunden / 58 = Abstand in Zentimetern
  double entfernung_cm = entfernung_lesen() / 58;

  // Abstand in cm im Serial Monitor ausgeben
  Serial.println(entfernung_cm);
  delay(100);
  tonausgeben(entfernung_cm);
}

void tonausgeben(double entfernung_cm){
  //ist die Entfernung innerhalb diesem Bereich wird ein Ton abgespielt
  if (entfernung_cm > 20 and entfernung_cm < 40){
    tone(8, 200); // Im Hauptteil wird nun mit dem Befehl "tone ( x , y )" ein Ton abgegeben.
    delay(100); // mit einer Dauer von 1 Sekunde
    noTone(8); // Der Ton wird abgeschaltet
    delay(200); // Der Lautsprecher bleibt eine Sekunde aus    
  }
}


 - (Computer, Schule, Technik)