From e57d4afba62f75b4c6288f6acc37f4f81b034196 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 May 2023 19:06:03 +0200 Subject: [PATCH 1/3] 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 2/3] =?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 3/3] 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()