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 für Distanzen im Bereich von ca. 10 cm und 200 cm Werte zwischen 0 und 255, wobei 255 dann abgegeben wird, wenn kein Objekt im Messbereich ist. |
MUSTERBEISPIEL |
from ev3robot import * robot = LegoRobot() gear = Gear() robot.addPart(gear) us = UltrasonicSensor(SensorPort.S3) robot.addPart(us) gear.setSpeed(15) gear.forward() while not robot.isEscapeHit(): d = us.getDistance() if d > 20: gear.forward() else: gear.backward() robot.exit() |
MERKE DIR... |
dass der Ultraschallsensor nicht häufiger als ungefähr alle 100 Millisekunde einen Messwert im Bereich von etwa 10 - 200 cm in Vorwärtsrichtung liefern kann. |
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 wird 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.