Ein­park­hil­fe

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF

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.

So sieht es aus:

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
  • Laut­spre­cher
  • Wider­stand 220 Ω
  • 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)

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. Außer­dem soll die Zuwei­sung der Varia­blen mit ➨defi­ne erfol­gen.
Der set­up-Teil defi­niert die Bau­tei­le als Ein­ga­be-/Aus­ga­be­ge­rä­te.

# define LAUTSPRECHER 4 
# define LED 5 
# define SENDEN 9
# define ECHO 8

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

Die Funk­ti­on Ent­fer­nung­Mes­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.

switch fragt einen Wer­te­be­reich ab.

Beach­te, dass vor und nach den drei Punk­ten ein Leer­zei­chen ste­hen muss.

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;     
    }
  }
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 2. Jan 2024 @ 10:10