LBotics.at

Der mBot2 Roboter ist in seiner Standardkonfiguration mit dem Ultra Sonic Sensor 2 ausgestattet. Mit diesem können Entfernungen zwischen 3 und 300 cm gemessen werden. Das Prinzip dieser Messung beruht darauf, dass von diesem Sensor Ultraschallsignale ausgesandt und reflketierte Signale empfangen werden. Mit der gemessenen Zeit, wie lange die Schallwellen bis zu einem Hindernis und wieder zurück benötigen, kann die Distanz zwischen dem Sensor und dem Hindernis berechnet werden.

Im Modul mbulid wird die Funktion mbuild.ultrasonic2.get() zum Bestimmen der Entfernung zwischen dem Sensor und einem sich davor befindenden Gegenstand bereitgestellt. Diese Funktion liefert float-Werte zwischen 3 und 300 zurück, die dem Abstand in cm entsprechen.

Bedingungen in if-Abfragen

Bei if-Abfragen werden Bedingungen überprüft. Ob eine Bedingung erfüllt ist oder nicht, entscheidet über die weitere Ausführung des Codes. In Bedingungen kommen Vergleichsoperatoren zum Einsatz um zwei Werte miteinader zu vergleichen.

Vergleichsoperatoren in Python
Operator Funktion Beispiel Erklärung
== vergleichendes Istgleich if a==5: Hat a den Wert 5?
!= ungleich if b!=7: Hat b einen anderen Wert als 7?
< kleiner if c<3: Ist der Wert von c kleiner als 3?
> größer if d>7 Ist der Wert von d größer als 7?
<= kleiner gleich if e<=10: Ist der Wert von e kleiner oder gleich 10?
>= größer gleich if f>=2: Ist der Wert von f größer oder gleich 2?
Beispiel - Automatisches Stehenbleiben bei einem Hindernis

Mit diesem Skript fährt ein Roboter gerade aus und bleibt automatisch stehen, sobald ein Hindernis innerhalb einer Entfernung von 10 cm vor ihm auftaucht. Nachdem der Roboter zu fahren begonnen hat, wird in einer Endlosschleife laufend der Abstandswert des Ultraschallsensor mit einer if-Abfrage überprüft. Sollte dieser kleiner als 10 cm sein, so werden die beiden Motoren gestoppt. Begleitend dazu wird auch der aktuelle Messwert des Ultraschallsensors am Display angezeigt.

import cyberpi, mbot2, mbuild

mbot2.EM_set_speed(20, 1)
mbot2.EM_set_speed(-20, 2)

while True:
float_distance = mbuild.ultrasonic2.get()
cyberpi.display.show_label("Abstand: " + str(float_distance),16,0,0)
if float_distance<10:
mbot2.EM_stop()
Erklärungen zu diesem Skript

1: import cyberpi, mbot2, mbuild

Import des Moduls cyberpi, mbot2 und mbuild

Das Modul mbuild wird benötigt, da darin der vorgefertigte Code für den Ultraschallsensor bereitgestellt wird.

3: mbot2.EM_set_speed(20, 1)
4: mbot2.EM_set_speed(-20, 2)

Mit der Funktion mbot2.EM_set_speed(speed, port) wird die Drehgeschwindigkeit der beiden Motoren auf 20 RPM gesetzt. Der rechte Motor (port 2) muss sich im Uhrzeigersinn drehen, damit der Roboter vorwärts fährt.

6: while True:

Hier beginnt die Endlosschleife, in der laufend der aktuelle Abstandswert des Ultraschallsensors ermittelt und überprüft wird. Alle Codezeilen, die innerhalb dieser Schleife laufend wiederholt ausgeführt werden sollen, werden eingerückt geschrieben.

7: float_distance = mbuild.ultrasonic2.get()

Die Funktion mbuild.ultrasonic2.get() liefert einen float-Wert zurück, der dann der Variable float_distance zugewiesen wird.

return: 3 - 300 (Dezimalwerte zwischen 3 und 300, die für den gemessenen Abstand in cm stehen)

8: cyberpi.display.show_label("Abstand: " + str(float_distance),16,0,0)

Zunächst wird der Wert der float-Variable float_distance in einen String konvertiert und dann mit dem Verknüpfungsoperator für Strings (dem +) mit dem String "Abstand: " verbunden. Dieser String wird dann mit der Funktion cyberpi.display.show_label(text, size, x, y) an der Position 0, 0 mit der Schriftgröße 16 auf dem Display angezeigt.

9: if float_distance<10:

Mit dieser if-Abfrage wird überprüft, ob der aktuell gemessene Abstandswert des Ultraschallsensors, der in der Variable float_distance abgelegt wurde, kleiner als 10 cm ist. Alle Code-Zeilen, die ausgeführt werden sollen, wenn die Bedingung erfüllt ist, werden im Anschluss daran eingerückt geschrieben.

10: mbot2.EM_stop()

Ist die Bedingung der if-Abfrage erfüllt, also der Abstand zwischen dem Ultraschallsensor und einem Hindernis vor dem Roboter kleiner als 10 cm, werden beide Motoren mit der Funktion mbot2.EM_stop() angehalten.

Zusammenfassung - Was wurde in diesem Abschnitt gelernt?
mBot2
  • Mit der Funktion mbuild.ultrasonic2.get() kann der Abstand zwischen dem Ultraschallsensor und einem vor ihm liegenden Hindernis ermittelt werden. Diese Funktion liefert einen float-Wert zwischen 3 und 300 zurück, was einer Distanz von 3 - 300 cm entspricht.
Python
  • In if-Abfragen werden Bedingungen überprüft, bei denen zwei Werte miteinander verglichen werden. Dazu werden die sechs Vergleichsoperatoren ==, !=, <, >, <= und >= verwendet.