diff --git a/soccer_bot.py b/soccer_bot.py new file mode 100644 index 0000000..4e083d9 --- /dev/null +++ b/soccer_bot.py @@ -0,0 +1,77 @@ +from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor, Remote +from pybricks.parameters import Button, Color, Direction, Port, Side, Stop +from pybricks.robotics import DriveBase +from pybricks.tools import wait, StopWatch + +rc = Remote(timeout=5000) +print("Remote name: ", rc.name) +rc.light.on(Color.RED) + +shoot = None +try: + shoot = Motor(Port.F) + print("found shoot motor") +except: + print("no shoot motor") + +right = Motor(Port.B) +left = Motor(Port.A, Direction.COUNTERCLOCKWISE) +db = DriveBase(left, right, 55, 80) # DriveBase steuert beide Motoren gemeinsam +s_speed, s_accel, t_rate, t_accel = db.settings() +db.settings(s_speed*0.5, s_accel, t_rate, t_accel*2) + +while True: + # Check which buttons are pressed. + db.settings(s_speed*0.5, s_accel, t_rate, t_accel*2) + pressed = rc.buttons.pressed() + #print(str(pressed)) + speed=0 + angle=0 + # Check a specific button. + if Button.RIGHT_PLUS in pressed: + speed=1000 + angle+=180 + #db.drive(1000, 180) + #right.run(1000) + if Button.LEFT_PLUS in pressed: + speed=1000 + angle-=180 + #db.drive(1000, -180) + #left.run(1000) + if Button.RIGHT_MINUS in pressed: + speed=-1000 + angle+=180 + #db.drive(-1000, 180) + #right.run(-1000) + if Button.LEFT_MINUS in pressed: + speed=-1000 + angle-=180 + #db.drive(-1000, -180) + #left.run(-1000) + + if Button.CENTER in pressed: + if shoot: + # move forward to shoot + angle=45 + speed=1000 + shoot.run_angle(-speed, angle) + # move back + shoot.run_angle(speed, angle) + else: + db.settings(s_speed*2, s_accel, t_rate, t_accel*2) + speed=-1000 + angle=0 + + if Button.LEFT_PLUS in pressed and Button.RIGHT_MINUS in pressed: + db.turn(-20,wait=False,) + elif Button.LEFT_MINUS in pressed and Button.RIGHT_PLUS in pressed: + db.turn(20,wait=False) + else: + db.drive(speed, angle) + + # Wait so we can see the result. + # wait(50) + if speed == 0 : + db.stop() + +