Ein Soundsensor kann auf akustische Signale reagieren. Im EV3-Education-Set ist kein Soundsensor vorhanden. Man kann aber problemlos den Soundsensor für den NXT verwenden. Diese können auch einzeln nachbestellt werden. Im Programm für den EV3 muss der Soundsensor als NxtSoundSensor bezeichnet werden. Die Methode getValue() gibt die Geräuschwerte in Dezibel zurück. In einer leisen Umgebung betragen diese zwischen 0 und 20 Dezibel. Für den Simulationsmodus benötigt man Computer mit einem Mikrofon.
Die Sensorwerte können wie folgt erfasst werden:
Beispiel 1: Starten mit Klatsch |
# Ro5a.py # Simulation requires PC with a microphone from simrobot import * # from ev3robot import * # from nxtrobot import * robot = LegoRobot() gear = Gear() robot.addPart(gear) ss = NxtSoundSensor(SensorPort.S1) robot.addPart(ss) while not robot.isEscapeHit(): if ss.getValue() > 30: gear.forward() robot.exit() |
Programmcode markieren
|
Erklärungen zum Programmcode:
ss = NxtSoundSensor(SensorPort.S1): erzeugt ein Soundsensorobjekt am Sensorport S1 eines EV3Roboters. |
|
robot.addPart(ss): schliesst denSoundsensor am Roboter an |
Beispiel 2: Mit einem akustischen Signal Richtung ändern Der Roboter bewegt sich vorwärts. Wird ein Event (lautes Klatschen) registriert, so wird die Callbackmethode onLoud() aufgerufen. Der Roboter macht er eine Linkskurve und fährt in der neuen Richtung weiter. |
# Ro5b.py from simrobot import * # from ev3robot import * # from nxtrobot import * def onLoud(port, level): gear.left(580) gear.forward() robot = LegoRobot() gear = Gear() robot.addPart(gear) ss = NxtSoundSensor(SensorPort.S1, loud = onLoud) robot.addPart(ss) gear.forward() |
Programmcode markieren
|
Erklärungen zum Programmcode:
def onLoud(port, level): Callbackfunktion. Defniniert, war geschehen soll, wenn der Sensor laute Geräusche "hört" | |
ss = NxtSoundSensor(SensorPort.S1, loud = onLoud): die Callbackfunktion wird beim erzeugen des Sensors registriert |
Aufgaben: Serie 5 |
1) |
Roboter mit einem Soundsensor soll die Parcous aus durchfahren. Er bewegt sich zuerst vorwärt und bei jedem Klatsch, dreht er 90° nach links. Das Ziel ist es, den ganzen Parcous durchfahren. Für die Simulation kannst du Sie als Hintergundbild bg.gif oder parcours.gif verwenden. |
|
2) |
Mit einem Klatsch wird der Roboter in die Bewegung auf einem Kreibogen versetzt. Beim nächsten Klatsch stopt er. Beim nächsten Klatsch setzt er die Bewegung wieder fort usw. Um den Wechsel zwischen bewegen und stoppen zu programmieren, verwendet man in der Regel eine boolean Variable z.B. isMoved. Diese ist zu Beginn = False und wird beim ersten Klatschen auf True gesetzt. Beim nächsten Klatsch darf der Roboter nur dann stoppen, wenn isMoved = True ist. |