diff --git a/src/main.llsp3 b/src/main.llsp3 index e69de29..d46ffdc 100644 --- a/src/main.llsp3 +++ b/src/main.llsp3 @@ -0,0 +1,88 @@ +from hub import button, port, motion_sensor as ms +import motor +import motor_pair as mp +import color_sensor as cs +import color +import sys +import runloop +import time + +# Notes ############################################################################### + +# Wippe Notizen +def flipflop(state, r, s): + """ + Logik implementiert in Rampen Logik. Bleibe stehen, wenn der Rollwinkel sich um mehr als 10 (?) ändert. + RS-Flipflop-Logik: + Set (= tue nichts), wenn der Winkel sich ändert; + Reset (= bleibe stehen), solange sich der Rollwinkel ändert, danach fahre normal weiter + """ + return False if r else (True if s else state) + +# Obstacle Notizen +""" +- Sensor ~12cm über dem Boden einbauen; insg. 3 Abstandssensoren benötigt (oder 2 mit aufwändigerer Logik und drehendem Sensor) + 1. Wenn vorderer Sensor bestimmten Abstand feststellt, stoppen, zurückfahren bis ein Abstand d feststeht + 2. Drehen, bis ein Seitensensor Abstand d oder kleiner feststellt. Kleinsten Abstand bestimmen: + 2.1 Bei Drehung niedrigsten Wert des Sensors merken + 2.2 Wenn Abstand größer wird, zurückdrehen, bis kleinster Wert wieder erreicht ist +3. Losfahren und in entsprechende Richtung drehen, wenn Abstand kleiner/größer wird +4. Abbrechen, wenn Farbsensoren Schwarz erkennen +""" + +# Ziellinie Notizen +# Wenn beide Sensoren Farbe rot feststellen, stoppe die Motoren, beende das Programm + + +# Implementation of Basic operations and misc. ############################################## + +# await mp.move_for_degrees(mp.PAIR_1, 360, 45, velocity=280) + +# motor.run_for_degrees(portNum, 200, 300) +# await runloop.sleep_ms(2000) + +# mp.move_tank(mp.PAIR_1, 280, -280) +# await runloop.sleep_ms(2000) + +# WANTED_COLOR = color.BLACK + +# Productive Code ################################################################# + +async def move_on_color(): + start_time = time.time() + print(ms.tilt_angles()) + while True: + roll_value = ms.tilt_angles()[2] + # Change to switch case + if cs.reflection(port.C) < 60: + mp.move_tank(mp.PAIR_1, -100, 100) + elif cs.reflection(port.E) < 60: + mp.move_tank(mp.PAIR_1, 100, -100) + elif roll_value < -150: # uphill function + mp.move(mp.PAIR_1, 0, velocity=450) + else: + mp.move(mp.PAIR_1, 0, velocity=200) + + # Geradeaus + + # linkskurve + # rechtskurve + + # Kreuzung (grüner Punkt) + # wenn grün, dann biege um 90 Grad in die richtung ab (wenn vor schwarzer linie) + + # Sackgasse (= zwei grüne Punkte) + # -> Drehung 180 Grad + + # Bergauf + # Bergab + + # Speedbumper (Schräge Bumper) + +async def main(): + mp.pair(mp.PAIR_1, port.A, port.D) + await move_on_color() + + sys.exit() + +runloop.run(main())