Inhaltsverzeichnis

5.1. Ultraschallsensor HC-SR04 in OpenRoberta

Der Ultraschallsensor HC-SR04 zählt in der Mikroelektronik definitiv zu den bekanntesten Bauteilen. Mit Hilfe von Ultraschallsensoren können wir den Abstand von Objekten sehr genau messen. Du bist in deinem Alltag bestimmt auch schon Ultraschallsensoren begegnet: die kleinen Sensoren werden zum Beispiel in Autos verbaut. Dort unterstützen Sie uns beim Einparken und zeigen melden, wenn wir zu dicht an ein Hindernis (zum Beispiel an eine Wand) heranfahren. 

Dieses Szenario möchten wir jetzt nachstellen: dabei soll der Ultraschallsensor permanent einen Abstand erfassen
Wenn der Sensor in mindestens 30 Zentimetern Abstand kein Hindernis erkennt, soll die grüne LED leuchten.
Wenn der Abstand zum Objekt weniger als 30 Zentimeter beträgt, soll die rote LED leuchten.

5.1.1. Konfiguration in OpenRoberta

Schritt 1:

Wir starten zunächst mit unserer ROBOTERKONFIGURATION. Den Block für den Ultraschallsensor findest du im Menüpunkt „Sensoren„. 

Abbildung Schritt 1

Schritt 2:

Der Block für den Ultraschallsensor ist etwas versteckt: scrolle mit dem Mausrad im der Menüansicht weit nach unten, bis du den Baustein aus der Abbildung Schritt 2 entdeckst.

Füge den Block anschließend mit einem Klick der linken Maustaste zu deiner ROBOTERKONFIGURATION hinzu. 

Abbildung Schritt 2

Schritt 3:

Super! Jetzt müssen wir den Baustein nur noch konfigurieren.

Deine ROBOTERKONFIGURATION sollte jetzt so wie in Abbildung Schritt 3 dargestellt aussehen.

Abbildung Schritt 3

Schritt 4:

Jetzt schauen wir uns den Block mal ein wenig genauer an:

Damit wir im späteren Verlauf den Überblick nicht verlieren, legen wir zuerst den Namen für unseren Baustein fest. Unser Block soll den namen „Ultraschallsensor“ tragen. 

Abbildung Schritt 4

Schritt 5:

Jetzt wird es kniffliger: Wie misst eigentlich ein Ultraschallsensor Entfernungen?

Ultraschallsensoren geben durchgehend Ultraschallwellen aus. Dieser Vorgang wird Sendeimpuls genannt (Trigger). Sobald sich ein Objekt im Erkennungsradius eines Ultraschallsensors befindet, reflektiert dieses Objekt die Ultraschallwellen zum Sensor zurück (Echo). 
Diese reflektierten Wellen werden vom Ultraschallsensor erkannt. Dabei misst der Sensor die Zeit, die zwischen dem Versenden und dem Empfangen der Ultraschallwellen vergeht und leitet daraus einen Zahlenwert ab, welchen wir mit unserem Mikrocontroller auswerten und verarbeiten können.

Schaue doch einmal auf deinen Funduino Cube und versuche herauszufinden, an welchem digitalen Pin der trigger (Sendeimpuls) des Ultraschallsensors mit dem Mikrocontroller verbunden ist. 

Abbildung Schritt 5

Schritt 6:

Sehr gut! Das war nicht einfach, toll gemacht! Der Trigger, im Block mit „trig“ abgekürzt, liegt an Pin D6 an.

Jetzt müssen wir noch festlegen, an welchem digitalen Pin das Echo (reflektierte Ultraschallwellen) des Ultraschallsensors mit dem Mikrocontroller verbunden ist.

Schaue hierfür erneut auf deinen Funduino Cube. 

Abbildung Schritt 6

Schritt 7:

Auch das hast du hervorragend gemacht! 

Das Echo ist an Pin D5 mit dem Mikrocontroller verbunden. Nachdem du auch diesen Wert in deiner ROBOTERKONFIGURATION ergänzt hast, sind wir schon fast am Ziel. Es fehlen eigentlich nur noch die beiden LEDs. 

Abbildung Schritt 7

Schritt 8:

Die Bausteine für die beiden LEDs findest du im Menüpunkt „Aktion„. 

Wir verbinden die rote LED mit dem digitalen Pin D12 und die grüne LED mit dem digitalen Pin D10.

Wenn du alle Bausteine richtig konfiguriert hast, sieht dein Aufbau wie in Abbildung Schritt 8 aus. 

Toll gemacht!

Unsere ROBOTERKONFIGURATION ist somit abgeschlossen. Wir können uns jetzt also dem Programm zuwenden. 

Abbildung Schritt 8

5.1.2. Beispielprogramm in OpenRoberta

Kurze Erinnerung zur Aufgabenstellung:

Wenn der Sensor in mindestens 30 Zentimetern Abstand kein Hindernis erkennt, soll die grüne LED leuchten.
Wenn der Abstand zum Objekt weniger als 30 Zentimeter beträgt, soll die rote LED leuchten.

Schritt 1:

Wir navigieren zunächst in den Menüpunkt PROGRAMM und wählen das Untermenü Kontrolle aus.

In Lektion 3 haben wir den Umgang mit Schleifen erlernt. Eine solche Schleife wird jetzt wieder benötigt. 

Schleifen werden immer dann eingesetzt, wenn eine Aktion in Folge einer Abhängigkeit erfolgen soll. 

In unserem Aufbau soll eine LED immer dann aufleuchten, wenn der Ultraschallsensor einen Abstand von mehr oder weniger als 30cm zu einem Objekt erkennt

Abbildung Schritt 1

Schritt 2:

Den dafür notwendigen Baustein findest du im Untermenü Kontrolle.

Die Schleife, wie in Abbildung Schritt 2 zu sehen, fügen wir mit einem Linksklick zu unserem PROGRAMM hinzu. 

Abbildung Schritt 2

Schritt 3:

Wenn du alles richtig gemacht hast, sieht dein PROGRAMM jetzt so aus wie in Abbildung Schritt 3  dargestellt. 

Abbildung Schritt 3

Schritt 4:

Jetzt benötigen wir noch den Block für den Ultraschallsensor. 

Dieser Block ist ein wenig versteckt: Du findest den entsprechenden Baustein im Menüpunkt „Kontrolle“, relativ weit unten. 

Den Baustein fügen wir ebenfalls mit einem Linksklick zu unserem PROGRAMM hinzu. Anschließend nehmen wir einige Einstellungen vor.

Abbildung Schritt 4

Schritt 5:

Du wirst feststellen, dass sich dieser Baustein aus mehreren einzelnen Unterbausteinen zusammensetzt. Das mag auf den ersten Blick etwas verwirrend erscheinen, hat jedoch einen ganz klaren Zweck, welchen wir uns jetzt Schritt für Schritt langsam ansehen.

Wir beginnen damit, den hellblau hinterlegten Teil des Bausteins vom orangefarbigen Baustein zu trennen.
Den Baustein-Teil „Warte bis…benötigen wir für die Lösung unserer Aufgabenstellung nicht. Du kannst diesen Teil mit einem Linksklick auswählen und mit dem Drücken der „Entf-Taste“ auf deiner Tastatur löschen.

Abbildung Schritt 5

Schritt 6:

Den hellblau hinterlegten Teil können wir jetzt an die „wenn-Bedingung“ in unserer Schleife anfügen.

Toll gemacht!

Dein Aufbau sieht jetzt so aus, wie in Abbildung Schritt 6 dargestellt. 

Abbildung Schritt 6

Schritt 7:

Jetzt klicken wir mit der linken Maustaste in den grün hinterlegten Teil des Bausteins „gib analogen Wert Sensor…„. 

Es öffnet sich ein neues Menü, in welchem wir jetzt unseren Ultraschallsensor HC-SR04 auswählen können.

Praktisch: Der Menüpunkt „Abstand cm Ultraschallsensor HC-SR04“ beschreibt genau die Funktion, die wir zur Lösung unserer Aufgabenstellung benötigen.

„Wenn der Sensor in mindestens 30 Zentimetern Abstand kein Hindernis erkennt, soll die grüne LED leuchten.
Wenn der Abstand zum Objekt weniger als 30 Zentimeter beträgt, soll die rote LED leuchten.“

Abbildung Schritt 7

Schritt 8:

Gut gemacht!

Dein PROGRAMM sieht jetzt aus wie in Abbildung Schritt 8 dargestellt. Der grün hinterlegte Teil des Bausteins enthält sogar den Namen unseres Ultraschallsensors!

Jetzt wählen wir den sogenannten Operatoren aus.
Operatoren sind Logikbausteine, die uns bei der Verarbeitung von Signalen helfen.

Wenn du in das Feld für den Operatoren klickst (siehe Abbildung Schritt 8), öffnet sich ein neues Untermenü. In diesem Untermenü findest du die Operatoren

  • kleiner „<„
  • kleiner gleich „≤“
  • größer „>“
  • größer gleich „≥“
  • gleich „=“
  • ungleich „≠“

wieder. 

Kannst du erkennen, welchen Operatoren wir auswählen müssen, um unsere Aufgabe zu erfüllen?

Abbildung Schritt 8

Schritt 9:

„Wenn der Sensor in mindestens 30 Zentimetern Abstand kein Hindernis erkennt, soll…“

Mist! Aus diesem Satz können wir nicht direkt ableiten, welchen Operatoren wir benötigen. Deshalb versuchen wir jetzt, den Satz ein wenig umzuformulieren:

„Wenn der Abstand des Objektes größer als 30 Zentimeter ist, soll…“

Genau! Wir benötigen den Operatoren>„, also „größer„. 

Jetzt müssen wir nur noch eine letzte kleine Anpassung vornehmen. Im dunkelblau hinterlegten Feld unseres Blocks können wir den Abstand in Zentimetern eintragen.

In unserer Aufgabenstellung soll der Abstand, bei dem die LEDs entweder rot oder grün zu leuchten beginnen, 30 Zentimeter. Wir tragen hier also die Zahl „30 ein.

Abbildung Schritt 9

Schritt 10:

Wow! Das war ganz schön kompliziert. Nehmen wir uns jetzt doch einen kurzen Augenblick Zeit und schauen uns unser Ergebnis genauer an. 

Würden wir unser Programm in unsere Sprache übersetzen, wäre die Aussage wie folgt:

„Wenn der Abstand zum Ultraschallsensor größer als 30 Zentimeter ist…“

Toll gemacht! Damit haben wir unseren Block erfolgreich eingestellt. 

Abbildung Schritt 10

Schritt 11:

Jetzt müssen wir nur noch unsere beiden LEDs ergänzen. 

Wir starten mit der grünen LED

„Wenn der Sensor in mindestens 30 Zentimetern Abstand kein Hindernis erkennt, soll die grüne LED leuchten.“

Abbildung Schritt 11

Schritt 12:

Anschließend ergänzen wir noch unsere rote LED.

„Wenn der Abstand zum Objekt weniger als 30 Zentimeter beträgt, soll die rote LED leuchten.“

Gratulation! Wir haben das PROGRAMM damit erfolgreich abgeschlossen. 

Abbildung Schritt 12

5.1.3. Programmcode in der Arduino Synthax

				
					int led_Gruen = 10; // LED Grün an Pin D10
int led_Rot = 12; // LED Rot an PIN D12
int trigger_Ultraschallsensor = 6; // Trigger-Pin des Ultraschallsensors an Pin D6
int echo_Ultraschallsensor = 5; // Echo-Pin des Ultraschallsensors an Pin D5
double getUltrasonicDistance(int trigger, int echo) // Variable, in welcher der Abstand zum Objekt gespeichert wird

{ 
    digitalWrite(trigger, LOW); 
    delay(5);
    digitalWrite(trigger, HIGH);
    delay(10);
    digitalWrite(trigger, LOW);
    return pulseIn(echo, HIGH) * 0.03432/2;
}

void setup()
{
    pinMode(led_Gruen, OUTPUT);
    pinMode(led_Rot, OUTPUT);
    pinMode(trigger_Ultraschallsensor, OUTPUT);
    pinMode(echo_Ultraschallsensor, INPUT);
}

void loop()
{
    if ( getUltrasonicDistance(trigger_Ultraschallsensor, echo_Ultraschallsensor) > 30 ) {
        digitalWrite(led_Gruen, HIGH);
    } else {
        digitalWrite(led_Rot, HIGH);
    }
}