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 kleiner.

Ultra­schall­sen­sor

Benö­tig­te Bauteile:

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

Damit der Ultra­schall­sen­sor ord­nungs­ge­mäß arbei­ten kann, musst du ihn so ein­ste­cken, dass Sen­der und Emp­fän­ger nach vorn zei­gen, damit das Signal unge­hin­dert gesen­det und emp­fan­gen wer­den kann. Die Lei­tungs­dräh­te wer­den auf der Rück­sei­te eingesteckt.

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 werden.

Abstand zum Ent­fer­nungs­mes­ser in cmAbstand zwi­schen den Signa­len in Millisekunden
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 werden.

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 werden.

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

# 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 Entfernungsmesser.

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 aufleuchtet.

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;   
 
       case 7 ... 8: 
         tone(LAUTSPRECHER, 1000, 2); 
         digitalWrite(LED, HIGH); 
         delay(50); 
         digitalWrite(LED, LOW); 
         delay(200); 
         break; 

       case 5 ... 6: 
         tone(LAUTSPRECHER, 1000, 2);
         digitalWrite(LED, HIGH);
         delay(50); 
         digitalWrite(LED, LOW); 
         delay(100); 
         break;

       case 2 ... 4:
         tone(LAUTSPRECHER, 1000); 
         digitalWrite(LED, HIGH); 
         break;     
    }
  }
}


Ver­wand­te Aufgaben:


Letzte Aktualisierung: 23. Nov 2020 @ 11:23