Inhaltsverzeichnis

Ultraschall alla Geiger Müller

Author: Florian Richter, bearbeitet von Wilfried Klaas

Board: Arduino Uno, Leonardo

Hallo, ein weiterer Ultraschall-Abstandssensor, diesmal like a Geiger-Müller-Zähler.

Material:

Das Modul mit dem Arduino wie folgt verbinden:
Vcc → 5V
Trig → Pin 3
Echo → Pin 2
Gnd → Gnd

Lautsprecher + → Pin 4
Lautsprecher - → Gnd

* Bei bedarf noch zwischen Lautsprecher - und dem Arduino einen Schalter, Knopf oder sowas bauen, dann hat man die akustische Anzeige nur auf Knopfdruck.


11.09.2013 WKLA

Ich hab mir mal die Teile besorgt und aufgebaut. Zus. habe ich einen Taster an Pin 7 angeschlossen. Damit kann man nun den Ultraschallsensor ein und ausschalten. Und ich habe den Sketch etwas kommentiert. Der originale Sketch ist weiter unten zu finden.

Ein/Ausschalter → Pin 7 und GND

Damit kann der Ein/Ausschalter in der Lautsprecherleitung wegfallen. Dafür aber bitte einen kleinen Widerstand in die Lautsprecherleitung (255Ohm). So wie hier.
Aufbau:

ultra.ino
// Serial Monitor einschalten!
 
// Pins für den HC-SR04 
#define trigPin 3
#define echoPin 2
 
// Pin für den Beeper
#define beeper 4
 
// Pin für den Ein/Ausschalter
#define onSwitch 7
 
void setup ()
{
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(onSwitch,INPUT_PULLUP);
}
 
void loop()
{
  // Nur einschalten wenn der Schalter gedrückt ist
  if (digitalRead(onSwitch)==0) {
    // Variablen definieren
    float zwischensumme, entfernt, tonTon;
 
    // Ultraschall module triggern
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(trigPin, LOW);
 
    // und Echo lesen
    zwischensumme = pulseIn(echoPin, HIGH);
 
    // entfernung berechnen
    entfernt = (zwischensumme/2) / 29.1;
 
    Serial.print(entfernt);
    Serial.println(" cm Entfernung");
 
    // Tonhöhe berechnen    
    tonTon = (zwischensumme) / 29.1;
    int thisPitch = map(entfernt, 0, 200, 2093, 22);
 
    // und ausgeben
    tone(beeper, thisPitch);
    delay(5);
    noTone(beeper);
    delay(tonTon);
  } 
  else {
    // einfach etwas warten
    delay(100);
  }
}

Originale Sketch

ultra.ino
// Serial Monitor einschalten!
 
#define trigPin 3
#define echoPin 2
 
void setup ()
{
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}
 
void loop()
{
  int zwischensumme, entfernt, tonTon;
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
  zwischensumme = pulseIn(echoPin, HIGH);
  entfernt = (zwischensumme/2) / 29.1;
  tonTon = (zwischensumme) / 29.1;
  Serial.print(entfernt);
  Serial.println(" cm Entfernung");
  int thisPitch = map(entfernt, 0, 200, 2093, 22);
  tone(4, thisPitch);
  delay(5);
  noTone(4);
  delay(tonTon);
}

Viel Spaß Florian