From 7abd2bbd3f495d614d79a939b2fa9baa828dfc03 Mon Sep 17 00:00:00 2001 From: Lars Haferkamp <> Date: Wed, 10 Jan 2024 20:55:51 +0100 Subject: [PATCH] =?UTF-8?q?Neue=20Stop=20Optionen=20in=20der=20Geradefahrf?= =?UTF-8?q?unktion:=20Farbintensit=C3=A4t=20und=20Abstand.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iqrobot.py | 22 ++++++++++++++++++---- main.py | 23 +++++++++++++---------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 7a37375..dc11612 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -102,7 +102,7 @@ class IQRobot: self.antrieb.stop() print ("Final Ziel: {}, Aktuell: {}".format(ziel, aktuell)) - def fahre_gerade_aus(self, cm, speed=20): + def fahre_gerade_aus(self, cm, speed=20, intensity_stop=None, abstand_stop=None, abstand_greater=True): """ Funktion um den Roboter geradeaus fahren zu lassen @@ -126,8 +126,8 @@ class IQRobot: self.bewegungsSensor.reset_yaw_angle() # Mit irgendeiner Geschwindigkeit g>0 starten. Wert ist irrelevant - self.antrieb.start_tank(10, 10) - self.antrieb.set_default_speed(10) + self.antrieb.start_tank(richtung*10, richtung*10) + self.antrieb.set_default_speed(richtung*10) linker_speed=speed # Geschwindigkeit linker Motor rechter_speed=speed # Geschwindigkeit rechter Motor @@ -138,7 +138,21 @@ class IQRobot: sum_versatz = 0 # Summe des Versatzes über Zeit # wiederhole solange die gefahrene Strecke noch nicht erreicht ist - while sum_cm < cm * richtung: + while sum_cm < cm * richtung: + if intensity_stop: + red, green, blue, intensity = self.farbSensor.get_rgb_intensity() + print("Farbintensität: " + str(intensity)) + if intensity == intensity_stop: + break + if abstand_stop: + abstand = self.abstandsSensor.get_distance_cm() + print("Abstand: " + str(abstand)) + if abstand_greater: + if abstand >= abstand_stop: + break + else: + if abstand <= abstand_stop: + break wait_for_seconds(0.05) # Sonst wird das zu oft ausgeführt sum_cm = self.strecke_gefahren() * richtung # Gefahrene Strecke, ggf. eben negativ machen versatz = self.bewegungsSensor.get_yaw_angle() # Um wie viel sind wir falsch? diff --git a/main.py b/main.py index 0f27e6f..c026078 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,4 @@ -# LEGO type:standard slot:5 autostart +# LEGO type:standard slot:5 import os, sys @@ -104,9 +104,10 @@ def hologram(): iqRobot.fahre_gerade_aus(-15,30) def augmented_reality(): - iqRobot.drehe(-135) - iqRobot.fahre_gerade_aus(40,30) - iqRobot.drehe(90) + iqRobot.drehe(45) + # cm should be greater than real distance as we stop at color intensity + iqRobot.fahre_gerade_aus(cm=-50,speed=30, abstand_stop=89) + iqRobot.drehe(-90) iqRobot.fahre_gerade_aus(12,30) iqRobot.schaufel(-2200) iqRobot.fahre_gerade_aus(-4,30) @@ -127,9 +128,10 @@ def backHome(): #iqRobot.schaufel(1600, speed=100 ) #iqRobot.schaufel(-1600, speed=100 ) -# druckmaschine() -# hologram() -# augmented_reality() +iqRobot.schaufel(3000) +druckmaschine() +hologram() +augmented_reality() #backHome() #huenchenaufgabe() @@ -137,9 +139,10 @@ def backHome(): #wait_for_seconds(2) -while 0 == 0: +#while 0 == 0: #print(iqRobot.abstandsSensor.get_distance_cm()) #print(iqRobot.farbSensor.get_reflected_light()) - print(str(iqRobot.farbSensor.get_blue())+" "+str(iqRobot.farbSensor.get_green())+" "+str(iqRobot.farbSensor.get_red())) - wait_for_seconds(0.5) + #print(str(iqRobot.farbSensor.get_blue())+" "+str(iqRobot.farbSensor.get_green())+" "+str(iqRobot.farbSensor.get_red())) + #wait_for_seconds(0.5) + #print(str(iqRobot.abstandsSensor.get_distance_cm()))