Ampel mit Ultra­schall­sen­sor schal­ten

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

Die Ampel zeigt zunächst rot. Wenn die Ent­fer­nung klei­ner als 10 cm ist, soll sie nach 1 Sekun­de War­te­zeit erst auf rot/gelb für eine Sekun­de, dann auf grün für drei Sekun­den sprin­gen. Anschlie­ßend folgt wie­der eine Sekun­de gelb und dann wie­der rot.werden klei­ner.

Ultra­schall­sen­sor

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

  • Ultra­schall­sen­sor HC-SR04
  • 3 LEDs (rot, gelb, grün)
  • 3 Wider­stän­de > 100 Ω
  • 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)

Defi­nie­re die benö­tig­ten Varia­blen:

# define Senden 8
# define Echo 9
# define ROT 5
# define GELB 6
# define GRUEN 7
long Zeit = 0;
long Entfernung = 0;

void setup()
{
  pinMode(Senden, OUTPUT);
  pinMode(Echo, INPUT);
  pinMode(ROT, OUTPUT);
  pinMode(GELB, OUTPUT);
  pinMode(GRUEN, OUTPUT);
}

Ver­wen­de die ➨Funk­ti­onEnt­fer­nungMes­sen():

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

Die ➨Metho­de Ampel­Schal­ten() sorgt dafür, dass die Ampel im fest­ge­leg­ten Rhyth­mus geschal­tet wird (rot/gelb → 1 Sekun­de, grün → 3 Sekun­den, gelb → 1 Sekun­de ).

void AmpelSchalten()
{
  delay(1000);
  digitalWrite(GELB, HIGH);
  delay(1000);
  digitalWrite(GELB, LOW);
  . . .
  . . .
}

Der loop-Teil:

void loop()
{
  digitalWrite(ROT, HIGH);

  // Funktion aufrufen
  Entfernung = EntfernungMessen();
  
  // Ampel schalten
  if (Entfernung < 10)
  {
    AmpelSchalten();
  }
}


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 23. Aug 2020 @ 22:56