Ein­park­hil­fe

Lese­zeit: 4 Minu­ten
Navi­ga­ti­on

Der Ultra­schall­sen­sor misst die Ent­fer­nung zum Hin­der­nis.
Je klei­ner der Abstand wird, des­to schnel­ler blinkt die LED und die Abstän­de zwi­schen den Ton­si­gna­len wer­den klei­ner.

Ultra­schall­sen­sor

Benö­tig­te Bau­tei­le:

  • rote LED
  • Wider­stand > 100 Ω
  • Ultra­schall­sen­sor HC-SR04
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Bewegt sich ein Objekt auf den Ent­fer­nungs­mes­ser zu, soll je nach dem noch ver­füg­ba­ren Abstand zum Ent­fer­nungs­mes­ser ein akus­ti­sches und opti­sches Signal gege­ben wer­den.

Abstand zum Ent­fer­nungs­mes­ser in cmAbstand zwi­schen den Signa­len in Mil­li­se­kun­den
13 bis 15700
11 bis 12500
9 bis 10300
7 bis 8200
5 bis 6100
2 bis 40

Klei­ne­re Abstän­de als 2 cm kön­nen nicht gemes­sen wer­den.

Im Kopf wer­den die Varia­blen defi­niert. Da die ➨switch-Abfra­ge sich nicht auf ein­zel­ne Wer­te, son­dern auf einen Wer­te­be­reich bezieht, muss die Biblio­thek stdio.h ein­ge­bun­den wer­den.

Außer­dem soll die Zuwei­sung der Varia­blen mit ➨defi­ne erfol­gen.

# include <stdio.h> 
# define LAUTSPRECHER 4 
# define LED 5 
# define SENDEN 6 
# define ECHO 7

Der setup-Teil defi­niert die Bau­tei­le als Eingabe-/Ausgabegeräte.

void setup() 
{ 
  pinMode(SENDEN, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(LAUTSPRECHER, OUTPUT); 
  pinMode(LED, OUTPUT);
}

Die Funk­ti­on Ent­fer­nungMes­sen() misst die Ent­fer­nung des Objekts zum Ent­fer­nungs­mes­ser.

int EntfernungMessen() 
{ 
  long Entfernung = 0;    

  // Sender kurz ausschalten um Störungen des Signal zu vermeiden 
  digitalWrite(SENDEN, LOW); 
  delay(5);

  // Signal senden 
  digitalWrite(SENDEN, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(SENDEN, LOW);  

  // pulseIn → Zeit messen, bis das Signal zurückkommt 
  long Zeit = pulseIn(ECHO, HIGH);  

  // Entfernung in cm berechnen 
  Entfernung = (Zeit / 2) * 0.03432; 
  return Entfernung;
}

Der loop-Teil sorgt dafür, dass je nach gemes­se­ner Zeit der Laut­spre­cher im Inter­vall piepst und die LED im glei­chen Inter­vall kurz auf­leuch­tet.

void loop() 
{ 
  // Funktion aufrufen 
  long Entfernung = EntfernungMessen();

  // versuchen Messfehler auszuschließen  
  if (Entfernung < 100)  
  {  
    switch (Entfernung)  
    {  
      case 13 ... 15:  
        tone(LAUTSPRECHER, 1000, 2);  
        digitalWrite(LED, HIGH);    
        delay(50); 
        digitalWrite(LED, LOW);   
        delay(500);   
        break;   
      case 11 ... 12:   
        tone(LAUTSPRECHER, 1000, 2);   
        digitalWrite(LED, HIGH); 
        delay(50);   
        digitalWrite(LED, LOW);  
        delay(400); 
        break; 
      case 9 ... 10:  
        tone(LAUTSPRECHER, 1000, 2);   
        digitalWrite(LED, HIGH);  
        delay(50);  
        digitalWrite(LED, LOW);   
        delay(300); 
        break;         
      . . . 
    }
  }
}


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 23. Aug 2020 @ 22:54