TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
DU LERNST HIER... |
wie du einen Ultraschallsensor dafür verwenden kannst, um die Distanz zu einem Objekt (Target) zu bestimmen. Dazu sendet der Sensor ähnlich wie ein Radar einen kurzen Ultraschall-Puls aus und bestimmt die Zeit, die dieser benötigt, um zum Objekt und wieder zurück zu laufen. Daraus kann er aus der bekannten Schallgeschwindigkeit die Distanz ermitteln Der Sensor liefert die Distanz in cm im Bereich von ca. 5 cm und 100 cm, wobei -1 abgegeben wird, wenn kein Objekt im Messbereich ist. |
MUSTERBEISPIEL |
from raspibrick import * robot = Robot() gear = Gear() us = UltrasonicSensor() gear.setSpeed(15) gear.forward() while not isEscapeHit(): d = us.getValue() if d < 20: gear.backward() else: gear.forward() robot.exit() |
MERKE DIR... |
dass der Ultraschallsensor nicht häufiger als ungefähr alle ½ Sekunde einen Messwert liefern kann. Darum solltest du ihn in der Wiederholschleife auch nicht öfter abfragen. Du kannst das Programm nur für den Realmodus verwenden. |
ZUM SELBST LÖSEN |
|
Die Liste target definiert das reflektierende Objekt. Sie enthält die Koordinaten der 4 Eckpunkte relativ zum Mittelpunkt des Rechtecks. useTarget() verwendet ein Spritebild bar0.gif zur Darstellung des Objekts.
Das Problem kann auch im Simulationsmodus gelöst werden. Für die sechseckige Säule in der unteren rechte Ecke wir folgender Context verwendet:
target = [[50,0], [25,43], [-25,43], [-50,0], [-25,-43], [25,-43]]
RobotContext.useTarget("sprites/redtarget.gif", mesh, 400, 400)
Die beiden folgenden Zeilen bewirken, dass in der Simulation der Strahlbereich und ein Messkreis dargestellt werden.
us.setBeamAreaColor(makeColor("green")) us.setProximityCircleColor(makeColor("lightgray")
Beachte, dass getDistance() in der Simulation -1 zurückgibt, wenn kein Target gefunden wird.
Es ist hübsch, den aktuellen Messwert auf dem Siebensegment-Display anzuzeigen. Dazu definiert man mit display = Display() ein Objekt und ruft die Funktion display.showText(text) für die Anzeige von maximal 4 Zeichen auf. Da man den Messwert v als Float erhält, muss man ihn zuerst mit str(v) in einen String konvertieren.