From 244cdfdd7a43c018f56596a47cdd966a29c92f04 Mon Sep 17 00:00:00 2001 From: Cedric Hermann <2210943@stud.hs-mannheim.de> Date: Thu, 11 Dec 2025 11:12:58 +0100 Subject: [PATCH] src/main.llsp3 aktualisiert --- src/main.llsp3 | 57 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/src/main.llsp3 b/src/main.llsp3 index 168abae..2bc4571 100644 --- a/src/main.llsp3 +++ b/src/main.llsp3 @@ -54,13 +54,15 @@ async def move_on_color(): won = False old = time.ticks_ms() speed = 100 + saw_green_left = False + saw_green_right = False while not won: # Farbcodes lesen left_color = cs.color(port.B) right_color = cs.color(port.F) - + gradient = ms.tilt_angles()[2] # Farbcodes BLACK = 0 @@ -69,16 +71,16 @@ async def move_on_color(): RED = 9 straight = False turn_way_if_lost_right = True + # Distanzsensor ds_front = ds.distance(port.D) - if gradient < -150: - speed = 400 - + if gradient < -120: + speed = -80 elif gradient > 50: - speed = 50 - else: - speed = 100 + speed = -50 + else: + speed = -100 # --- LOGIK NUR MIT FARBEN --- # Finish line logik @@ -87,27 +89,38 @@ async def move_on_color(): break elif ds_front < 75 and ds_front > -1: - await avoid_obstacle() - - # Beide Sensoren sehen Grün (z.B. Kreuzung / Markierung) - elif left_color == GREEN and right_color == GREEN: - mp.move_tank(mp.PAIR_1, -speed, speed) - time.sleep_ms(2300) + #await avoid_obstacle() + pass # Linker Sensor sieht Grün → Linksabbiegen elif left_color == GREEN and right_color != GREEN: - mp.move_tank(mp.PAIR_1, speed, speed) - time.sleep_ms(700) + saw_green_left = True + + elif right_color == GREEN and left_color != GREEN: + saw_green_right = True + + # Beide Sensoren sehen Grün (z.B. Kreuzung / Markierung) + elif left_color == GREEN and right_color == GREEN: + saw_green_right = False + saw_green_left = False mp.move_tank(mp.PAIR_1, -speed, speed) + time.sleep_ms(2300) + + elif saw_green_left and left_color == BLACK: + saw_green_left = False + mp.move_tank(mp.PAIR_1, speed, speed) + time.sleep_ms(1200) + mp.move_tank(mp.PAIR_1, speed, -speed) time.sleep_ms(1050) mp.move_tank(mp.PAIR_1, speed, speed) time.sleep_ms(300) # Rechter Sensor sieht Grün → Rechtsabbiegen - elif right_color == GREEN and left_color != GREEN: + elif saw_green_right and right_color == BLACK: + saw_green_right = False mp.move_tank(mp.PAIR_1, speed, speed) - time.sleep_ms(700) - mp.move_tank(mp.PAIR_1, speed, -speed) + time.sleep_ms(1200) + mp.move_tank(mp.PAIR_1, -speed, speed) time.sleep_ms(1050) mp.move_tank(mp.PAIR_1, speed, speed) time.sleep_ms(300) @@ -115,13 +128,17 @@ async def move_on_color(): elif right_color == BLACK or left_color == BLACK: if right_color == BLACK and left_color == BLACK: mp.move_tank(mp.PAIR_1, speed, speed) + time.sleep_ms(20) + + # Linker Sensor ist Schwarz, rechter Weiß → sanft nach links elif left_color == BLACK and right_color == WHITE: - mp.move_tank(mp.PAIR_1, speed-100, speed) + mp.move_tank(mp.PAIR_1, speed, -(int (speed / 4))) + # Rechter Schwarz, linker Weiß → sanft nach rechts elif right_color == BLACK and left_color == WHITE: - mp.move_tank(mp.PAIR_1, speed, speed-100) + mp.move_tank(mp.PAIR_1, -(int (speed / 4)), speed) # Beide Weiß → geradeaus (vermutlich neben der Linie) elif left_color == WHITE and right_color == WHITE: