From e57d4afba62f75b4c6288f6acc37f4f81b034196 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 May 2023 19:06:03 +0200 Subject: [PATCH 01/10] Schreibe L mit Movement und HubMotor --- iqrobot.py | 28 +++++++++++++++++++++++++++- main.py | 9 +++------ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 1595e5b..6a6f4f4 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -16,7 +16,8 @@ class IQRobot: self.leftMotor: Motor = Motor(leftMotorPort) self.rightMotor: Motor = Motor(rightMotorPort) self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) - self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) + #self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) + self.hubMotor: Motor = Motor("F") def show(self, image: str): @@ -38,9 +39,34 @@ class IQRobot: (red, green, blue, colorIntensity) = self.colorSensor.get_rgb_intensity() return colorIntensity + def schreibeL(self): + print("Schreibe L") + self.hubMotor.run_for_rotations(-0.06) + self.movementMotors.move(5) + self.rightMotor.run_for_degrees(90) + self.movementMotors.move(2) + self.hubMotor.run_for_rotations(0.06) + + # Fahre 5 cm rückwerts + # dann drehe nach rechts 90° + # und fahre 2cm fohrwärts + #stift hoch + + def schreibeE(self): + print("Schreibe E") + + def schreibeG(self): + print("Schreibe G") + def schreibeO(self): + print("Schreibe O") + def schreibeLego(self): + self.schreibeL() + self.schreibeE() + self.schreibeG() + self.schreibeO() print("successfully loaded the IQ Lego teams code :)") diff --git a/main.py b/main.py index c6ba5c2..8e7aa3e 100644 --- a/main.py +++ b/main.py @@ -72,8 +72,8 @@ 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' -RIGHT_MOTOR_PORT = 'B' +LEFT_MOTOR_PORT = 'D' +RIGHT_MOTOR_PORT = 'A' # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() @@ -83,10 +83,7 @@ iqRobot: iq.IQRobot = iq.IQRobot(hub, LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT, COLOR_S # Führe Funktionen aus unser Robot Klasse aus: iqRobot.show('HAPPY') -iqRobot.driveForward_for_sec(2.0) -colorIntensity = iqRobot.getColorIntensity() -print("Farbintensität: " + str(colorIntensity)) - +iqRobot.schreibeLego() From e07670468c3ef0630cb728f5cd0cd35f853a9a50 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 17 May 2023 18:41:35 +0200 Subject: [PATCH 02/10] =?UTF-8?q?Neue=20Motorzuweisung=20und=20Methode=20f?= =?UTF-8?q?=C3=BCr=20Drehung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iqrobot.py | 23 ++++++++++++++++++----- main.py | 8 ++++---- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 6a6f4f4..307b7d9 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, MotionSensor from spike.control import wait_for_seconds HELLO = "HELLO IQ" @@ -17,7 +17,9 @@ class IQRobot: self.rightMotor: Motor = Motor(rightMotorPort) self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) #self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) - self.hubMotor: Motor = Motor("F") + self.frontMotorLeft: Motor = Motor("C") + self.frontMotorRight: Motor = Motor("D") + self.motionSensor: MotionSensor = MotionSensor() def show(self, image: str): @@ -39,13 +41,24 @@ class IQRobot: (red, green, blue, colorIntensity) = self.colorSensor.get_rgb_intensity() return colorIntensity + def drehe(self, grad=90): + self.motionSensor.reset_yaw_angle() + steering = 100 if grad > 0 else -100 + self.movementMotors.start(steering=steering, speed=10) + while abs(self.motionSensor.get_yaw_angle()) < abs(grad): + pass + self.movementMotors.stop() + + def schreibeL(self): print("Schreibe L") - self.hubMotor.run_for_rotations(-0.06) + self.frontMotorRight.run_for_rotations(-0.1) + self.movementMotors.set_default_speed(20) self.movementMotors.move(5) - self.rightMotor.run_for_degrees(90) + #self.movementMotors.move(7, steering=100) + self.drehe(-90) self.movementMotors.move(2) - self.hubMotor.run_for_rotations(0.06) + self.frontMotorRight.run_for_rotations(0.1) # Fahre 5 cm rückwerts # dann drehe nach rechts 90° diff --git a/main.py b/main.py index 8e7aa3e..6775d00 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 @@ -71,9 +71,9 @@ 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 = 'D' -RIGHT_MOTOR_PORT = 'A' +COLOR_SENSOR_PORT = 'E' #not implemented yet +LEFT_MOTOR_PORT = 'E' +RIGHT_MOTOR_PORT = 'F' # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() From 6b094d3f9cf6557492af54fb39715b5fce309cc0 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 24 May 2023 19:17:57 +0200 Subject: [PATCH 03/10] schreibe L mit Backstein Robot --- iqrobot.py | 55 +++++++++++++++++++++++++++++++++++++++++------------- main.py | 13 +++++++------ 2 files changed, 49 insertions(+), 19 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 307b7d9..0ff3148 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -1,9 +1,9 @@ -# LEGO type:standard slot:6 autostart +# LEGO type:standard slot:7 autostart from spike import PrimeHub, Motor, MotorPair, ColorSensor, MotionSensor from spike.control import wait_for_seconds -HELLO = "HELLO IQ" +HELLO = "HELLO IQ 2" ''' Wir nutzen "Duck typing", dh wir schreiben hinter jede Variabel mit ':' die Klasse, zB `leftMotor: Motor` @@ -17,8 +17,8 @@ class IQRobot: self.rightMotor: Motor = Motor(rightMotorPort) self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) #self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) - self.frontMotorLeft: Motor = Motor("C") - self.frontMotorRight: Motor = Motor("D") + #self.frontMotorLeft: Motor = Motor("C") + self.frontMotorRight: Motor = Motor("E") self.motionSensor: MotionSensor = MotionSensor() @@ -50,16 +50,44 @@ class IQRobot: self.movementMotors.stop() - def schreibeL(self): - print("Schreibe L") - self.frontMotorRight.run_for_rotations(-0.1) - self.movementMotors.set_default_speed(20) - self.movementMotors.move(5) - #self.movementMotors.move(7, steering=100) - self.drehe(-90) - self.movementMotors.move(2) - self.frontMotorRight.run_for_rotations(0.1) + + def schreibeL(self, schreibe=True, zurueck=False): + if zurueck: + step = 5 + faktor = -1 + else: + step = 1 + faktor = 1 + print("Schreibe L") + radius=9.5 + stift_versatz=2.2 + if schreibe: + self.frontMotorRight.run_for_rotations(0.4) + self.movementMotors.set_default_speed(10) + + while (True): + if step == 0: + break + if step == 1: + self.movementMotors.move(faktor * 5) + if schreibe: + self.frontMotorRight.run_for_rotations(-0.4) + if step == 2: + self.movementMotors.move(faktor * (-radius - stift_versatz)) + if step == 3: + self.drehe(faktor * -90) + if step == 4: + self.movementMotors.move(faktor*(radius - stift_versatz)) + if schreibe: + self.frontMotorRight.run_for_rotations(0.4) + if step == 5: + self.movementMotors.move(faktor * 2) + if schreibe: + self.frontMotorRight.run_for_rotations(-0.4) + if step == 6: + break + step += faktor # Fahre 5 cm rückwerts # dann drehe nach rechts 90° # und fahre 2cm fohrwärts @@ -77,6 +105,7 @@ class IQRobot: def schreibeLego(self): self.schreibeL() + self.schreibeL(schreibe=False, zurueck=True) self.schreibeE() self.schreibeG() self.schreibeO() diff --git a/main.py b/main.py index 6775d00..2179ecb 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,4 @@ -# LEGO type:standard slot:5 +# LEGO type:standard slot:4 autostart import os, sys @@ -33,9 +33,10 @@ def importFile(slotid=0, precompiled=False, module_name='importFile'): program = f.read() print(program) try: - os.remove("/"+module_name+suffix) + os.remove("/"+module_name+".py") + os.remove("/"+module_name+".mpy") except: - pass + print("Couldn't remove old module") with open("/"+module_name+suffix,"w+") as f: print("trying to write import program") f.write(program) @@ -50,7 +51,7 @@ 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=7, precompiled=True, module_name="iqrobot") import iqrobot as iq print(iq.HELLO) @@ -72,8 +73,8 @@ dh auch an die Funktionen im importierten Code übergeben werde # Definiere an welchen Ports die Sensoren angeschlossen sind COLOR_SENSOR_PORT = 'E' #not implemented yet -LEFT_MOTOR_PORT = 'E' -RIGHT_MOTOR_PORT = 'F' +LEFT_MOTOR_PORT = 'F' +RIGHT_MOTOR_PORT = 'B' # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() From 8e7836dac5e06069e9e9eab2e7223ca8c75eaa05 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jun 2023 18:58:27 +0200 Subject: [PATCH 04/10] =?UTF-8?q?Anpassung=20f=C3=BCr=20energy=20brickies?= =?UTF-8?q?=20bot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iqrobot.py | 3 ++- main.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 0ff3148..01bf6dc 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -18,7 +18,7 @@ class IQRobot: self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) #self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) #self.frontMotorLeft: Motor = Motor("C") - self.frontMotorRight: Motor = Motor("E") + self.frontMotorRight: Motor = Motor("B") self.motionSensor: MotionSensor = MotionSensor() @@ -60,6 +60,7 @@ class IQRobot: step = 1 faktor = 1 print("Schreibe L") + #self.frontMotorRight.run_for_rotations(-0.4) radius=9.5 stift_versatz=2.2 if schreibe: diff --git a/main.py b/main.py index 2179ecb..bc0a848 100644 --- a/main.py +++ b/main.py @@ -73,8 +73,8 @@ dh auch an die Funktionen im importierten Code übergeben werde # Definiere an welchen Ports die Sensoren angeschlossen sind COLOR_SENSOR_PORT = 'E' #not implemented yet -LEFT_MOTOR_PORT = 'F' -RIGHT_MOTOR_PORT = 'B' +LEFT_MOTOR_PORT = 'E' +RIGHT_MOTOR_PORT = 'F' # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() From e29586681acf803e5327b58b5e4bb1df209aca8f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2023 18:42:53 +0200 Subject: [PATCH 05/10] schreibe Lego mit Segmenten --- iqrobot.py | 48 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 01bf6dc..da99961 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -50,8 +50,36 @@ class IQRobot: self.movementMotors.stop() + def buchstabe_zu_segmenten(self, buchstabe): + # Segmente um Buchstaben zu schreiben + # 5_ + # 6 |__|4 + # 1 |7_|3 + # 2 + # + buchstabe_zu_segmenten = {"L": [1,1,0,0,0,1,0], "E": [1,1,0,0,1,1,1], "G": [1,1,1,0,1,1,0], "O": [1,1,1,1,1,1,0]} + return buchstabe_zu_segmenten[buchstabe] + def bewege_stift(self, richtung): + self.frontMotorRight.run_for_rotations(richtung*0.4) + + def schreibe_buchstabe(self, buchstabe): + print(f"Schreibe {buchstabe}") + segmente = self.buchstabe_zu_segmenten(buchstabe) + grad_drehung=90 + self.movementMotors.move(2) + self.drehe(grad_drehung) + for segment, segment_nummer in enumerate(segmente): + if segment==1: + self.bewege_stift(-1) + self.movementMotors.move(5) + if segment==1: + self.bewege_stift(1) + if segment_nummer+1 != 3: + self.drehe(grad_drehung) + + def schreibeL(self, schreibe=True, zurueck=False): if zurueck: step = 5 @@ -94,22 +122,14 @@ class IQRobot: # und fahre 2cm fohrwärts #stift hoch - def schreibeE(self): - print("Schreibe E") - - def schreibeG(self): - print("Schreibe G") - - - def schreibeO(self): - print("Schreibe O") def schreibeLego(self): - self.schreibeL() - self.schreibeL(schreibe=False, zurueck=True) - self.schreibeE() - self.schreibeG() - self.schreibeO() + #self.schreibeL() + #self.schreibeL(schreibe=False, zurueck=True) + self.schreibe_buchstabe("L") + self.schreibe_buchstabe("E") + self.schreibe_buchstabe("G") + self.schreibe_buchstabe("O") print("successfully loaded the IQ Lego teams code :)") From b6546333325db8787a2103e3a98641be33424f65 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Jun 2023 19:06:19 +0200 Subject: [PATCH 06/10] schreibe Lego mit Segmenten Backsteinrobot --- iqrobot.py | 18 +++++++++++++----- main.py | 4 ++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index da99961..426a5cd 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -18,7 +18,7 @@ class IQRobot: self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) #self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) #self.frontMotorLeft: Motor = Motor("C") - self.frontMotorRight: Motor = Motor("B") + self.frontMotorRight: Motor = Motor("E") self.motionSensor: MotionSensor = MotionSensor() @@ -50,6 +50,13 @@ class IQRobot: self.movementMotors.stop() + def drehe_backstein_robot(self, grad=90): + radius=9.5 + stift_versatz=2.2 + self.movementMotors.move(-radius - stift_versatz) + self.drehe(grad) + self.movementMotors.move(radius - stift_versatz) + def buchstabe_zu_segmenten(self, buchstabe): # Segmente um Buchstaben zu schreiben # 5_ @@ -65,19 +72,20 @@ class IQRobot: self.frontMotorRight.run_for_rotations(richtung*0.4) def schreibe_buchstabe(self, buchstabe): - print(f"Schreibe {buchstabe}") + print("Schreibe " + buchstabe) segmente = self.buchstabe_zu_segmenten(buchstabe) - grad_drehung=90 + grad_drehung=-90 self.movementMotors.move(2) self.drehe(grad_drehung) for segment, segment_nummer in enumerate(segmente): + print("Segment: " + str(segment) + " , Segment Nummer: " + str(segment_nummer)) if segment==1: self.bewege_stift(-1) self.movementMotors.move(5) if segment==1: self.bewege_stift(1) - if segment_nummer+1 != 3: - self.drehe(grad_drehung) + if (segment_nummer+1) != 3: + self.drehe_backstein_robot(grad_drehung) def schreibeL(self, schreibe=True, zurueck=False): diff --git a/main.py b/main.py index bc0a848..2179ecb 100644 --- a/main.py +++ b/main.py @@ -73,8 +73,8 @@ dh auch an die Funktionen im importierten Code übergeben werde # Definiere an welchen Ports die Sensoren angeschlossen sind COLOR_SENSOR_PORT = 'E' #not implemented yet -LEFT_MOTOR_PORT = 'E' -RIGHT_MOTOR_PORT = 'F' +LEFT_MOTOR_PORT = 'F' +RIGHT_MOTOR_PORT = 'B' # Initialisieren des Hubs, der Aktoren und Sensoren hub = PrimeHub() From 452bd1486e4046289c186e43ec56284056d50711 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 5 Jul 2023 17:22:30 +0200 Subject: [PATCH 07/10] Fehler beim Buchstaben schreiben korrigiert --- iqrobot.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 426a5cd..95c6715 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -57,12 +57,15 @@ class IQRobot: self.drehe(grad) self.movementMotors.move(radius - stift_versatz) + def fahre_gerade(self, cm): + self.movementMotors.move(cm) + def buchstabe_zu_segmenten(self, buchstabe): # Segmente um Buchstaben zu schreiben - # 5_ - # 6 |__|4 - # 1 |7_|3 - # 2 + # 4_ + # 5 |__|3 + # 0 |6_|2 + # 1 # buchstabe_zu_segmenten = {"L": [1,1,0,0,0,1,0], "E": [1,1,0,0,1,1,1], "G": [1,1,1,0,1,1,0], "O": [1,1,1,1,1,1,0]} return buchstabe_zu_segmenten[buchstabe] @@ -75,17 +78,17 @@ class IQRobot: print("Schreibe " + buchstabe) segmente = self.buchstabe_zu_segmenten(buchstabe) grad_drehung=-90 - self.movementMotors.move(2) - self.drehe(grad_drehung) + self.fahre_gerade(2) + self.drehe_backstein_robot(-grad_drehung) # drehe rechts for segment, segment_nummer in enumerate(segmente): print("Segment: " + str(segment) + " , Segment Nummer: " + str(segment_nummer)) if segment==1: self.bewege_stift(-1) - self.movementMotors.move(5) + self.fahre_gerade(5) if segment==1: self.bewege_stift(1) - if (segment_nummer+1) != 3: - self.drehe_backstein_robot(grad_drehung) + if segment_nummer != 2 and segment_nummer != 6: + self.drehe_backstein_robot(grad_drehung) # drehe links def schreibeL(self, schreibe=True, zurueck=False): From 0d1a84761a67d8665c6255651d9ba41587c296de Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 5 Jul 2023 18:31:48 +0200 Subject: [PATCH 08/10] Anpassung auf Brickies Robot --- iqrobot.py | 56 ++++++++++++++++++++++++++++++++++++++---------------- main.py | 6 +++--- 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index 95c6715..f1f02d4 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -11,14 +11,28 @@ 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, colorSensorPort: str, typ: str): self.hub: PrimeHub = hub - self.leftMotor: Motor = Motor(leftMotorPort) - self.rightMotor: Motor = Motor(rightMotorPort) - self.movementMotors: MotorPair = MotorPair(leftMotorPort, rightMotorPort) + self.typ=typ + if self.typ=="backstein": + LEFT_MOTOR_PORT = 'F' + RIGHT_MOTOR_PORT = 'B' + FRONT_MOTOR_RIGHT_PORT = "E" + self.frontMotorRight: Motor = Motor(FRONT_MOTOR_RIGHT_PORT) + elif self.typ=="brickies": + LEFT_MOTOR_PORT = 'E' + RIGHT_MOTOR_PORT = 'F' + FRONT_MOTOR_RIGHT_PORT = "B" + FRONT_MOTOR_LEFT_PORT = "A" + self.frontMotorRight: Motor = Motor(FRONT_MOTOR_RIGHT_PORT) + self.frontMotorLeft: Motor = Motor(FRONT_MOTOR_LEFT_PORT) + self.bothFrontMotors: MotorPair = MotorPair(FRONT_MOTOR_LEFT_PORT, FRONT_MOTOR_RIGHT_PORT) + + self.leftMotor: Motor = Motor(LEFT_MOTOR_PORT) + self.rightMotor: Motor = Motor(RIGHT_MOTOR_PORT) + self.movementMotors: MotorPair = MotorPair(LEFT_MOTOR_PORT, RIGHT_MOTOR_PORT) #self.colorSensor: ColorSensor = ColorSensor(colorSensorPort) #self.frontMotorLeft: Motor = Motor("C") - self.frontMotorRight: Motor = Motor("E") self.motionSensor: MotionSensor = MotionSensor() @@ -50,14 +64,20 @@ class IQRobot: self.movementMotors.stop() - def drehe_backstein_robot(self, grad=90): - radius=9.5 - stift_versatz=2.2 - self.movementMotors.move(-radius - stift_versatz) + def drehe_robot(self, grad=90): + if self.typ == "backstein": + radius=9.5 + stift_versatz=2.2 + if self.typ == "brickies": + radius=11.5 + stift_versatz=0.5 + self.fahre_gerade(-radius - stift_versatz) self.drehe(grad) - self.movementMotors.move(radius - stift_versatz) + self.fahre_gerade(radius - stift_versatz) def fahre_gerade(self, cm): + if self.typ == "brickies": + cm = -cm self.movementMotors.move(cm) def buchstabe_zu_segmenten(self, buchstabe): @@ -72,23 +92,26 @@ class IQRobot: def bewege_stift(self, richtung): - self.frontMotorRight.run_for_rotations(richtung*0.4) + if self.typ == "backstein": + self.frontMotorRight.run_for_rotations(richtung*0.4) + if self.typ == "brickies": + self.bothFrontMotors.move(-richtung*0.2, unit='rotations') def schreibe_buchstabe(self, buchstabe): print("Schreibe " + buchstabe) segmente = self.buchstabe_zu_segmenten(buchstabe) grad_drehung=-90 self.fahre_gerade(2) - self.drehe_backstein_robot(-grad_drehung) # drehe rechts - for segment, segment_nummer in enumerate(segmente): + self.drehe_robot(-grad_drehung) # drehe rechts + for segment_nummer, segment in enumerate(segmente): print("Segment: " + str(segment) + " , Segment Nummer: " + str(segment_nummer)) if segment==1: - self.bewege_stift(-1) + self.bewege_stift(1) # Stift runter self.fahre_gerade(5) if segment==1: - self.bewege_stift(1) + self.bewege_stift(-1) # Stift hoch if segment_nummer != 2 and segment_nummer != 6: - self.drehe_backstein_robot(grad_drehung) # drehe links + self.drehe_robot(grad_drehung) # drehe links def schreibeL(self, schreibe=True, zurueck=False): @@ -137,6 +160,7 @@ class IQRobot: def schreibeLego(self): #self.schreibeL() #self.schreibeL(schreibe=False, zurueck=True) + self.movementMotors.set_default_speed(10) self.schreibe_buchstabe("L") self.schreibe_buchstabe("E") self.schreibe_buchstabe("G") diff --git a/main.py b/main.py index 2179ecb..8f608a5 100644 --- a/main.py +++ b/main.py @@ -73,18 +73,18 @@ dh auch an die Funktionen im importierten Code übergeben werde # Definiere an welchen Ports die Sensoren angeschlossen sind COLOR_SENSOR_PORT = 'E' #not implemented yet -LEFT_MOTOR_PORT = 'F' -RIGHT_MOTOR_PORT = 'B' + # 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, COLOR_SENSOR_PORT, typ="brickies") # Führe Funktionen aus unser Robot Klasse aus: iqRobot.show('HAPPY') iqRobot.schreibeLego() +#iqRobot.schreibeL() From 65f84c61a27aaa741cc3575a3644f230fd2099ae Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 12 Jul 2023 19:01:26 +0200 Subject: [PATCH 09/10] Brickies robot zeichen Versuche --- iqrobot.py | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/iqrobot.py b/iqrobot.py index f1f02d4..19a9049 100644 --- a/iqrobot.py +++ b/iqrobot.py @@ -55,8 +55,9 @@ class IQRobot: (red, green, blue, colorIntensity) = self.colorSensor.get_rgb_intensity() return colorIntensity - def drehe(self, grad=90): - self.motionSensor.reset_yaw_angle() + def drehe(self, grad=90, with_reset=True): + if with_reset: + self.motionSensor.reset_yaw_angle() steering = 100 if grad > 0 else -100 self.movementMotors.start(steering=steering, speed=10) while abs(self.motionSensor.get_yaw_angle()) < abs(grad): @@ -69,16 +70,23 @@ class IQRobot: radius=9.5 stift_versatz=2.2 if self.typ == "brickies": - radius=11.5 - stift_versatz=0.5 + radius=17.4 + stift_versatz=0.3 self.fahre_gerade(-radius - stift_versatz) self.drehe(grad) self.fahre_gerade(radius - stift_versatz) - def fahre_gerade(self, cm): + def fahre_gerade(self, cm, zeichne=False): + if zeichne: + self.bewege_stift(1) # Stift runter + self.motionSensor.reset_yaw_angle() if self.typ == "brickies": cm = -cm self.movementMotors.move(cm) + if zeichne: + self.bewege_stift(-1) # Stift hoch + versatz = self.motionSensor.get_yaw_angle() + self.drehe(grad=-versatz) def buchstabe_zu_segmenten(self, buchstabe): # Segmente um Buchstaben zu schreiben @@ -95,7 +103,8 @@ class IQRobot: if self.typ == "backstein": self.frontMotorRight.run_for_rotations(richtung*0.4) if self.typ == "brickies": - self.bothFrontMotors.move(-richtung*0.2, unit='rotations') + #print("bewege stift brickies") + self.bothFrontMotors.move(-richtung*0.2, unit='rotations', speed=5) def schreibe_buchstabe(self, buchstabe): print("Schreibe " + buchstabe) @@ -106,10 +115,9 @@ class IQRobot: for segment_nummer, segment in enumerate(segmente): print("Segment: " + str(segment) + " , Segment Nummer: " + str(segment_nummer)) if segment==1: - self.bewege_stift(1) # Stift runter - self.fahre_gerade(5) - if segment==1: - self.bewege_stift(-1) # Stift hoch + self.fahre_gerade(5, zeichne=True) + else: + self.fahre_gerade(5) if segment_nummer != 2 and segment_nummer != 6: self.drehe_robot(grad_drehung) # drehe links @@ -161,10 +169,14 @@ class IQRobot: #self.schreibeL() #self.schreibeL(schreibe=False, zurueck=True) self.movementMotors.set_default_speed(10) - self.schreibe_buchstabe("L") - self.schreibe_buchstabe("E") - self.schreibe_buchstabe("G") - self.schreibe_buchstabe("O") + self.bewege_stift(-1) + self.fahre_gerade(4, zeichne=True) + self.drehe_robot() + self.fahre_gerade(4, zeichne=True) + #self.schreibe_buchstabe("L") + #self.schreibe_buchstabe("E") + #self.schreibe_buchstabe("G") + #self.schreibe_buchstabe("O") print("successfully loaded the IQ Lego teams code :)") From ca7b52da59ad9f1aa1464dadd4d800194b3d7e60 Mon Sep 17 00:00:00 2001 From: Lars Haferkamp <> Date: Wed, 8 Nov 2023 18:23:30 +0100 Subject: [PATCH 10/10] test --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index baba04a..c71dfa8 100644 --- a/README.md +++ b/README.md @@ -67,3 +67,4 @@ cp -r ../spike-prime-api/hub ./ cp -r ../spike-prime-api/spike ./ ``` +test \ No newline at end of file