From e8fe98e0d1253aed3bd11226376c09a865f924ca Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 15 Feb 2023 17:58:44 +0100 Subject: [PATCH 01/14] Changed Logo from Happy to Sad --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index c6ba5c2..e998ddd 100644 --- a/main.py +++ b/main.py @@ -82,8 +82,8 @@ hub = PrimeHub() iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT) # Führe Funktionen aus unser Robot Klasse aus: -iqRobot.show('HAPPY') -iqRobot.driveForward_for_sec(2.0) +iqRobot.show('SAD') +iqRobot.driveForward_for_sec(0.5) colorIntensity = iqRobot.getColorIntensity() print("Farbintensität: " + str(colorIntensity)) From b8e12603c12edf6d840b9cac18d54c5b5ace546b Mon Sep 17 00:00:00 2001 From: vilenne Date: Wed, 15 Feb 2023 18:03:25 +0100 Subject: [PATCH 02/14] changed logo to sad --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index e998ddd..105d83d 100644 --- a/main.py +++ b/main.py @@ -82,7 +82,7 @@ hub = PrimeHub() iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT) # Führe Funktionen aus unser Robot Klasse aus: -iqRobot.show('SAD') +iqRobot.show('ANGRY') iqRobot.driveForward_for_sec(0.5) colorIntensity = iqRobot.getColorIntensity() print("Farbintensität: " + str(colorIntensity)) From fc3e54a5a4fa432e1c869fca7be76ae25621ad1e Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 15 Feb 2023 18:48:05 +0100 Subject: [PATCH 03/14] Added if-Schleife mit Colorsensor --- iqrobot.py | 9 +++++++++ main.py | 5 +---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 1595e5b..4a93360 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -39,8 +39,17 @@ class IQRobot: return colorIntensity + def main(self): + if self.colorSensor.get_reflected_light() > 1: + self.show('ANGRY') + else: + self.show('SAD') + colorIntensity = self.getColorIntensity() + print("Farbintensität: " + str(colorIntensity)) + + print("successfully loaded the IQ Lego teams code :)") diff --git a/main.py b/main.py index 105d83d..c1ee56d 100644 --- a/main.py +++ b/main.py @@ -82,10 +82,7 @@ hub = PrimeHub() iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT) # Führe Funktionen aus unser Robot Klasse aus: -iqRobot.show('ANGRY') -iqRobot.driveForward_for_sec(0.5) -colorIntensity = iqRobot.getColorIntensity() -print("Farbintensität: " + str(colorIntensity)) +iqRobot.main() From a55bd56f0c25f90ea1c5b0c161e7e2df4c182a74 Mon Sep 17 00:00:00 2001 From: vilenne Date: Wed, 1 Mar 2023 17:38:39 +0100 Subject: [PATCH 04/14] =?UTF-8?q?methode=20move=20stick=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iqrobot.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 4a93360..55cda1a 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -11,13 +11,13 @@ damit man dann später auch wieder Code Completion hat bei Nutzung der Variablen ''' class IQRobot: - def __init__(self, hub: PrimeHub, leftMotorPort: str, rightMotorPort: str, colorSensorPort: str): + def __init__(self, hub: PrimeHub, leftMotorPort: str, rightMotorPort: str, colorSensorPort: str, stickMotorPort: str): self.hub: PrimeHub = hub self.leftMotor: Motor = Motor(leftMotorPort) self.rightMotor: Motor = Motor(rightMotorPort) self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) - + self.stickMotor: Motor = Motor(stickMotorPort) def show(self, image: str): ''' @@ -40,6 +40,7 @@ class IQRobot: def main(self): + self.moveStick(30) if self.colorSensor.get_reflected_light() > 1: self.show('ANGRY') else: @@ -49,8 +50,12 @@ class IQRobot: colorIntensity = self.getColorIntensity() print("Farbintensität: " + str(colorIntensity)) - + def moveStick(self,degrees) : + #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts + self.stickMotor.run_for_degrees(degrees) print("successfully loaded the IQ Lego teams code :)") + + From 2511adc3c6560f0446274ad18661c4991f3117f3 Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 1 Mar 2023 17:50:33 +0100 Subject: [PATCH 05/14] =?UTF-8?q?unn=C3=B6tigen=20zeilen=20entfernt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index c1ee56d..fa4fcec 100644 --- a/main.py +++ b/main.py @@ -74,17 +74,13 @@ dh auch an die Funktionen im importierten Code übergeben werde COLOR_SENSOR_PORT = 'E' LEFT_MOTOR_PORT = 'A' RIGHT_MOTOR_PORT = 'B' +STICK_MOTOR_PORT = 'C' # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() # Initialisiere Robot Klasse mit unseren Funktionen -iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT) +iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT, STICK_MOTOR_PORT) # Führe Funktionen aus unser Robot Klasse aus: -iqRobot.main() - - - - - +iqRobot.main() \ No newline at end of file From 57096f642d6b37f4cdcd06dc6101be37a9ef686c Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 8 Mar 2023 17:50:37 +0100 Subject: [PATCH 06/14] Farbsensor funktionalisiert --- iqrobot.py | 16 ++++++++++++---- main.py | 15 ++++++++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 55cda1a..c56c882 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -33,6 +33,14 @@ class IQRobot: wait_for_seconds(seconds) self.movementMotors.stop() + + def driveBackward_for_sec(self, seconds: float): + # Fahre die übergebene Anzahl seconds gerade aus + self.movementMotors.set_default_speed(-100)() + self.movementMotors.start() + wait_for_seconds(seconds) + self.movementMotors.stop() + def getColorIntensity(self): # Ermittele Farbintensität über den Farbsensor (red, green, blue, colorIntensity) = self.colorSensor.get_rgb_intensity() @@ -40,6 +48,9 @@ class IQRobot: def main(self): + + self + ''' self.moveStick(30) if self.colorSensor.get_reflected_light() > 1: self.show('ANGRY') @@ -49,13 +60,10 @@ class IQRobot: colorIntensity = self.getColorIntensity() print("Farbintensität: " + str(colorIntensity)) + ''' def moveStick(self,degrees) : #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts self.stickMotor.run_for_degrees(degrees) print("successfully loaded the IQ Lego teams code :)") - - - - diff --git a/main.py b/main.py index fa4fcec..6f5ef1c 100644 --- a/main.py +++ b/main.py @@ -12,6 +12,7 @@ if battery.voltage() < 8000: #set threshold for battery level print("Spannung der Batterie zu niedrig: " + str(battery.voltage()) + " \n" + "--------------------------------------- \n " + "#### UNBEDINGT ROBOTER AUFLADEN !!! #### \n" + + "+++" + "---------------------------------------- \n") else: print("Spannung der Batterie " + str(battery.voltage()) + "\n") @@ -83,4 +84,16 @@ hub = PrimeHub() iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT, STICK_MOTOR_PORT) # Führe Funktionen aus unser Robot Klasse aus: -iqRobot.main() \ No newline at end of file +#iqRobot.main() + +while(True): + print('DIE FARBE IST ', iqRobot.colorSensor.get_color()) + if (iqRobot.colorSensor.get_color() == "cyan"): + iqRobot.driveForward_for_sec(1) + print('Blau du Affe') + elif(iqRobot.colorSensor.get_red() == "red"): + iqRobot.driveForward_for_sec(1) + print('Rot du Affe') + else: + print('Keine Farbe') + From 8e7a0c25896b9777cacce05481008f3f2cc9fd7b Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 8 Mar 2023 17:51:56 +0100 Subject: [PATCH 07/14] Test --- main.py | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/main.py b/main.py index 6f5ef1c..3a5bfa8 100644 --- a/main.py +++ b/main.py @@ -12,7 +12,7 @@ if battery.voltage() < 8000: #set threshold for battery level print("Spannung der Batterie zu niedrig: " + str(battery.voltage()) + " \n" + "--------------------------------------- \n " + "#### UNBEDINGT ROBOTER AUFLADEN !!! #### \n" - + "+++" + + "#### SONST KOMMT MARKUS OPTITZ !!!! #### \n" + "---------------------------------------- \n") else: print("Spannung der Batterie " + str(battery.voltage()) + "\n") @@ -55,22 +55,6 @@ importFile(slotid=6, precompiled=True, module_name="iqrobot") import iqrobot as iq print(iq.HELLO) -# Importiere Go Robot Code -#importFile(slotid=3, precompiled=True, module_name="gorobot") -#import gorobot as gr -#gr.exampleFour() -#gr.db.gyroRotation(90, 25, 35, 25) - - -################### Hauptcode #################################### -''' -Code zum Lösen einer Aufgabe, kann oben importierten Code nutzen -Es können auch pro Aufgabe eigene Funktionen geschrieben werden -Wichtig ist, dass die PORTS der Sensoren überall gleich sind -und auch `hub` als Instanz von PrimeHub -dh auch an die Funktionen im importierten Code übergeben werde -''' - # Definiere an welchen Ports die Sensoren angeschlossen sind COLOR_SENSOR_PORT = 'E' LEFT_MOTOR_PORT = 'A' @@ -83,9 +67,6 @@ hub = PrimeHub() # Initialisiere Robot Klasse mit unseren Funktionen iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT, STICK_MOTOR_PORT) -# Führe Funktionen aus unser Robot Klasse aus: -#iqRobot.main() - while(True): print('DIE FARBE IST ', iqRobot.colorSensor.get_color()) if (iqRobot.colorSensor.get_color() == "cyan"): @@ -95,5 +76,5 @@ while(True): iqRobot.driveForward_for_sec(1) print('Rot du Affe') else: - print('Keine Farbe') + print('Keine Farbe!') From 2dcd7cca0b8017038521c9d7ab6d7c77e348d05f Mon Sep 17 00:00:00 2001 From: viernst Date: Wed, 8 Mar 2023 17:59:10 +0100 Subject: [PATCH 08/14] STUFF --- iqrobot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index c56c882..31bac00 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -4,6 +4,7 @@ from spike import PrimeHub, Motor, MotorPair, ColorSensor from spike.control import wait_for_seconds HELLO = "HELLO IQ" +VERSION = "0.0.1" ''' Wir nutzen "Duck typing", dh wir schreiben hinter jede Variabel mit ':' die Klasse, zB `leftMotor: Motor` @@ -49,7 +50,6 @@ class IQRobot: def main(self): - self ''' self.moveStick(30) if self.colorSensor.get_reflected_light() > 1: @@ -66,4 +66,4 @@ class IQRobot: #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts self.stickMotor.run_for_degrees(degrees) -print("successfully loaded the IQ Lego teams code :)") +print("Loading library IQRobot in version " + VERSION) From 324123b97739b9c559d1535f8456c8dd87b917a9 Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 8 Mar 2023 18:03:42 +0100 Subject: [PATCH 09/14] =?UTF-8?q?Bibliothek-Version=20zu=20"V1"=20ge=C3=A4?= =?UTF-8?q?ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iqrobot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iqrobot.py b/iqrobot.py index 31bac00..c545200 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -4,7 +4,7 @@ from spike import PrimeHub, Motor, MotorPair, ColorSensor from spike.control import wait_for_seconds HELLO = "HELLO IQ" -VERSION = "0.0.1" +VERSION = "V1" ''' Wir nutzen "Duck typing", dh wir schreiben hinter jede Variabel mit ':' die Klasse, zB `leftMotor: Motor` From 756a382af33a8e7439a5ab7054dd70756f71ad05 Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 8 Mar 2023 18:09:55 +0100 Subject: [PATCH 10/14] =?UTF-8?q?Gabelmotor=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iqrobot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/iqrobot.py b/iqrobot.py index c545200..43cf88e 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -19,6 +19,7 @@ class IQRobot: self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) self.stickMotor: Motor = Motor(stickMotorPort) + self.gabelMotor: Motor = Motor(gabelMotorPort) def show(self, image: str): ''' From ee76b97d83ff6ce28628f99bc3da6a81b398f8b1 Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 8 Mar 2023 18:29:58 +0100 Subject: [PATCH 11/14] Gabel addiert --- iqrobot.py | 9 +++++++-- main.py | 13 ++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 43cf88e..10d81cd 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -12,7 +12,7 @@ damit man dann später auch wieder Code Completion hat bei Nutzung der Variablen ''' class IQRobot: - def __init__(self, hub: PrimeHub, leftMotorPort: str, rightMotorPort: str, colorSensorPort: str, stickMotorPort: str): + def __init__(self, hub: PrimeHub, leftMotorPort: str, rightMotorPort: str, colorSensorPort: str, stickMotorPort: str, gabelMotorPort: str): self.hub: PrimeHub = hub self.leftMotor: Motor = Motor(leftMotorPort) self.rightMotor: Motor = Motor(rightMotorPort) @@ -67,4 +67,9 @@ class IQRobot: #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts self.stickMotor.run_for_degrees(degrees) -print("Loading library IQRobot in version " + VERSION) + def moveGabel(self,degrees) : + #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts + self.gabelMotor.run_for_degrees(degrees) + + +print("Loading library IQRobot in version " + VERSION) \ No newline at end of file diff --git a/main.py b/main.py index 3a5bfa8..91baf87 100644 --- a/main.py +++ b/main.py @@ -60,13 +60,15 @@ COLOR_SENSOR_PORT = 'E' LEFT_MOTOR_PORT = 'A' RIGHT_MOTOR_PORT = 'B' STICK_MOTOR_PORT = 'C' +GABEL_MOTOR_PORT = 'D' # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() # Initialisiere Robot Klasse mit unseren Funktionen -iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT, STICK_MOTOR_PORT) +iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT, STICK_MOTOR_PORT, GABEL_MOTOR_PORT) +''' while(True): print('DIE FARBE IST ', iqRobot.colorSensor.get_color()) if (iqRobot.colorSensor.get_color() == "cyan"): @@ -77,4 +79,13 @@ while(True): print('Rot du Affe') else: print('Keine Farbe!') +''' + +iqRobot.moveGabel(50) + + + + + + From 377195855a429dd3b4cb4e302e11f209806f31ae Mon Sep 17 00:00:00 2001 From: vilenne Date: Wed, 15 Mar 2023 19:03:33 +0100 Subject: [PATCH 12/14] =?UTF-8?q?DistanceSensor=20hinzugef=C3=BCgt=20+=20g?= =?UTF-8?q?etDIstance=20Methode=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iqrobot.py | 35 +++++++++++++++++++++++++---------- main.py | 30 ++++++++++++++++-------------- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 10d81cd..7f3551d 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -1,6 +1,6 @@ # LEGO type:standard slot:6 autostart -from spike import PrimeHub, Motor, MotorPair, ColorSensor +from spike import PrimeHub, Motor, MotorPair, ColorSensor, DistanceSensor from spike.control import wait_for_seconds HELLO = "HELLO IQ" @@ -12,14 +12,22 @@ damit man dann später auch wieder Code Completion hat bei Nutzung der Variablen ''' class IQRobot: - def __init__(self, hub: PrimeHub, leftMotorPort: str, rightMotorPort: str, colorSensorPort: str, stickMotorPort: str, gabelMotorPort: str): + def __init__(self, hub: PrimeHub, leftMotorPort: str, rightMotorPort: str, colorSensorPort: str, stickMotorPort: str, gabelMotorPort: str, distanceSensorPort: str): self.hub: PrimeHub = hub - self.leftMotor: Motor = Motor(leftMotorPort) - self.rightMotor: Motor = Motor(rightMotorPort) - self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) - self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) - self.stickMotor: Motor = Motor(stickMotorPort) - self.gabelMotor: Motor = Motor(gabelMotorPort) + if (leftMotorPort != ''): + self.leftMotor: Motor = Motor(leftMotorPort) + if (rightMotorPort != ''): + self.rightMotor: Motor = Motor(rightMotorPort) + if (leftMotorPort != '' and rightMotorPort != ''): + self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) + if (colorSensorPort != ''): + self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) + if (stickMotorPort != ''): + self.stickMotor: Motor = Motor(stickMotorPort) + if (gabelMotorPort != ''): + self.gabelMotor: Motor = Motor(gabelMotorPort) + if (distanceSensorPort != ''): + self.distanceSensor: DistanceSensor = DistanceSensor(distanceSensorPort) def show(self, image: str): ''' @@ -71,5 +79,12 @@ class IQRobot: #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts self.gabelMotor.run_for_degrees(degrees) - -print("Loading library IQRobot in version " + VERSION) \ No newline at end of file + def getDistance (self) : + cmDistance = self.distanceSensor.get_distance_cm(short_range=False) + return cmDistance + + def getShortDistance (self) : + cmDistance = self.distanceSensor.get_distance_cm(short_range=True) + return cmDistance + + print("Loading library IQRobot in version " + VERSION) \ No newline at end of file diff --git a/main.py b/main.py index 91baf87..ab0bd36 100644 --- a/main.py +++ b/main.py @@ -56,21 +56,22 @@ import iqrobot as iq print(iq.HELLO) # Definiere an welchen Ports die Sensoren angeschlossen sind -COLOR_SENSOR_PORT = 'E' -LEFT_MOTOR_PORT = 'A' -RIGHT_MOTOR_PORT = 'B' -STICK_MOTOR_PORT = 'C' -GABEL_MOTOR_PORT = 'D' + +COLOR_SENSOR_PORT = '' +LEFT_MOTOR_PORT = '' +RIGHT_MOTOR_PORT = '' +STICK_MOTOR_PORT = '' +GABEL_MOTOR_PORT = '' +DISTANCE_SENSOR_PORT = 'F' # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() # Initialisiere Robot Klasse mit unseren Funktionen -iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT, STICK_MOTOR_PORT, GABEL_MOTOR_PORT) +iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT, STICK_MOTOR_PORT, GABEL_MOTOR_PORT, DISTANCE_SENSOR_PORT) ''' -while(True): - print('DIE FARBE IST ', iqRobot.colorSensor.get_color()) +while(True):iqRobot.moveGabel(50)or()) if (iqRobot.colorSensor.get_color() == "cyan"): iqRobot.driveForward_for_sec(1) print('Blau du Affe') @@ -81,11 +82,12 @@ while(True): print('Keine Farbe!') ''' -iqRobot.moveGabel(50) - - - - - +while (True): + print('Kurz:' + str(iqRobot.getShortDistance())) + wait_for_seconds(1) + ''' + print('Lang:' + str(iqRobot.getDistance())) + wait_for_seconds(5) + ''' From 3b2ed61e01e1aefad8989a39dd2b5619aaa1d70d Mon Sep 17 00:00:00 2001 From: flhipp Date: Wed, 29 Mar 2023 17:34:27 +0200 Subject: [PATCH 13/14] Vincenz's Stuff --- iqrobot.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 7f3551d..200abd9 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -1,6 +1,6 @@ # LEGO type:standard slot:6 autostart -from spike import PrimeHub, Motor, MotorPair, ColorSensor, DistanceSensor +from spike import PrimeHub, Motor, MotorPair, ColorSensor, DistanceSensor, MotionSensor from spike.control import wait_for_seconds HELLO = "HELLO IQ" @@ -70,13 +70,27 @@ class IQRobot: colorIntensity = self.getColorIntensity() print("Farbintensität: " + str(colorIntensity)) ''' - + + def rotateRobot(self,degrees,speed) : + #Lasse den Roboter bei Bedarf um eine bestimmte Anzahl an Grad sanft und behutsam nach Links oder Rechts drehen, + # um den Nutzer zu befriedigen + self.motionSensor.reset_yaw_angle() + if (degrees > 0): + self.leftMotor.start(speed) + self.rightMotor.start(-speed) + elif (degrees < 0): + self.leftMotor.start(-speed) + self.rightMotor.start(speed) + while (self.motionSensor.get_yaw_angle() > degrees) : + self.leftMotor.stop() + self.rightMotor.stop() + def moveStick(self,degrees) : #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts self.stickMotor.run_for_degrees(degrees) def moveGabel(self,degrees) : - #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts + #Bewege sanft und langsam die ungewöhnlich große sich bewegende Stange am vorderen Rumpf des Geräts self.gabelMotor.run_for_degrees(degrees) def getDistance (self) : @@ -87,4 +101,4 @@ class IQRobot: cmDistance = self.distanceSensor.get_distance_cm(short_range=True) return cmDistance - print("Loading library IQRobot in version " + VERSION) \ No newline at end of file + print("Loading library IQRobot in version " + VERSION)from spike import PrimeHub, Motor, MotorPair, ColorSensor, MotionSensor \ No newline at end of file From aa4365c087db1770853df156fc3a7d30145ea672 Mon Sep 17 00:00:00 2001 From: viernst Date: Wed, 17 May 2023 18:08:40 +0200 Subject: [PATCH 14/14] Challenge: draw LEGO First commit --- iqrobot.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++-- main.py | 76 ++++++++++++++++++++++++++++++++++++------------------ 2 files changed, 117 insertions(+), 27 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 200abd9..2d67cd8 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -29,6 +29,9 @@ class IQRobot: if (distanceSensorPort != ''): self.distanceSensor: DistanceSensor = DistanceSensor(distanceSensorPort) + self.motionSensor = MotionSensor() + + def show(self, image: str): ''' Zeige Bild auf LED Matrix des Spikes @@ -83,7 +86,65 @@ class IQRobot: self.rightMotor.start(speed) while (self.motionSensor.get_yaw_angle() > degrees) : self.leftMotor.stop() - self.rightMotor.stop() + self.rightMotor.stop() + print("Disabled") + + def gyroRotation(self, angle, rotate_mode = 0, stop = True): + + global run_generator, runSmall + + run_generator = False + + speed = 30 + + #set standard variables + rotatedDistance = 0 + steering = 1 + + #gyro sensor calibration + angle = angle * (2400/2443) #experimental value based on 20 rotations of the robot + + #Setting variables based on inputs + loop = True + gyroStartValue = self.motionSensor.get_yaw_angle() #Yaw angle used due to orientation of the self.hub. This might need to be changed + + #Inversion of steering value for turning counter clockwise + if angle < 0: + steering = -1 + + #Testing to see if turining is necessary, turns until loop = False + + while loop: + rotatedDistance = self.motionSensor.get_yaw_angle() #Yaw angle used due to orientation of the self.hub. This might need to be changed + + print(abs(rotatedDistance - gyroStartValue)) + + #Checking for variants + #Both Motors turn, robot moves on the spot + if rotate_mode == 0: + self.rightMotor.start_at_power(int(speed) * steering) + self.leftMotor.start_at_power(int(speed) * steering) + + elif rotate_mode == 1: + + if angle * speed > 0: + self.leftMotor.start_at_power(- int(speed)) + else: + self.rightMotor.start_at_power(+ int(speed)) + + + if abs(angle) <= abs(rotatedDistance - gyroStartValue): + loop = False + break + + + + #Stops movement motors for increased accuracy while stopping + if stop: + self.rightMotor.stop() + self.leftMotor.stop() + + return # End of gyroStraightDrive def moveStick(self,degrees) : #Bewege sanft und langsam die Schleuderstange am hinteren Rumpf des Geräts @@ -101,4 +162,7 @@ class IQRobot: cmDistance = self.distanceSensor.get_distance_cm(short_range=True) return cmDistance - print("Loading library IQRobot in version " + VERSION)from spike import PrimeHub, Motor, MotorPair, ColorSensor, MotionSensor \ No newline at end of file + + + +print("Programm Library loaded") \ No newline at end of file diff --git a/main.py b/main.py index ab0bd36..08e2983 100644 --- a/main.py +++ b/main.py @@ -51,43 +51,69 @@ def importFile(slotid=0, precompiled=False, module_name='importFile'): # Importiere Code aus der Datei "iqrobot.py" # Dateiname und Modulname sollten gleich sein, dann kann man Code Completion nutzen -importFile(slotid=6, precompiled=True, module_name="iqrobot") +importFile(slotid=6, precompiled=False, module_name="iqrobot") import iqrobot as iq print(iq.HELLO) # Definiere an welchen Ports die Sensoren angeschlossen sind -COLOR_SENSOR_PORT = '' -LEFT_MOTOR_PORT = '' -RIGHT_MOTOR_PORT = '' +COLOR_SENSOR_PORT = 'D' +LEFT_MOTOR_PORT = 'B' +RIGHT_MOTOR_PORT = 'F' STICK_MOTOR_PORT = '' -GABEL_MOTOR_PORT = '' -DISTANCE_SENSOR_PORT = 'F' - +GABEL_MOTOR_PORT = 'E' +DISTANCE_SENSOR_PORT = '' +#penStatus = False # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() # Initialisiere Robot Klasse mit unseren Funktionen iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_SENSOR_PORT, STICK_MOTOR_PORT, GABEL_MOTOR_PORT, DISTANCE_SENSOR_PORT) -''' -while(True):iqRobot.moveGabel(50)or()) - if (iqRobot.colorSensor.get_color() == "cyan"): - iqRobot.driveForward_for_sec(1) - print('Blau du Affe') - elif(iqRobot.colorSensor.get_red() == "red"): - iqRobot.driveForward_for_sec(1) - print('Rot du Affe') - else: - print('Keine Farbe!') -''' +# Das Programm + +# Variablen +penStatus = False # Oben +# Methoden +def togglePen(): + global penStatus + if(penStatus == True): + iqRobot.moveGabel(20) + penStatus = False + if(penStatus == False): + iqRobot.moveGabel(-20) + penStatus = True -while (True): - print('Kurz:' + str(iqRobot.getShortDistance())) - wait_for_seconds(1) +def printChar(c): + global penStatus + if(c == "L"): + print("Printing the character L") + if not(penStatus == "False"): + print("Toggling pen") + togglePen() + iqRobot.driveForward_for_sec(2.0) + # iqRobot.leftMotor.run_for_degrees(360) + # iqRobot.rotateRobot(degrees=100, speed=100) + iqRobot.gyroRotation(angle=90) + iqRobot.driveForward_for_sec(1.0) + if(c == "E"): + print("Printing the character E") + if(penStatus == True): + togglePen() + iqRobot.driveForward_for_sec(0.1) + togglePen() + iqRobot.driveForward_for_sec(1.0) + togglePen() - ''' - print('Lang:' + str(iqRobot.getDistance())) - wait_for_seconds(5) - ''' + if(c == "G"): + print("Printing the character G") + if(c == "O"): + print("Printing the character O") + +wait_for_seconds(5) + +printChar("L") +printChar("E") +printChar("G") +printChar("O")