From d7dd93206781a50b0b0134d4abea30d896ecdd51 Mon Sep 17 00:00:00 2001 From: "(MakerLab) Laptop 2" Date: Wed, 8 May 2024 19:55:03 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Code=20f=C3=BCr=20Pybricks=20Fu=C3=9Fball?= =?UTF-8?q?=20Bot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soccer_bot.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 soccer_bot.py 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() + + From e4847d6cad117270bf3b8bb76eef83cb25f71db3 Mon Sep 17 00:00:00 2001 From: "(MakerLab) Laptop 2" Date: Wed, 8 May 2024 20:05:38 +0200 Subject: [PATCH 2/3] fixed power button --- soccer_bot.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/soccer_bot.py b/soccer_bot.py index 4e083d9..626a907 100644 --- a/soccer_bot.py +++ b/soccer_bot.py @@ -57,10 +57,11 @@ while True: 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 + + # run fast + 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,) From 2c3d9eb160f200291d3a983b93fc2e0abb95578e Mon Sep 17 00:00:00 2001 From: "(MakerLab) Laptop 2" Date: Wed, 12 Jun 2024 17:48:14 +0200 Subject: [PATCH 3/3] Connecte Hub mit korrekter Remote nach Farbe --- soccer_bot.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/soccer_bot.py b/soccer_bot.py index 626a907..dc64075 100644 --- a/soccer_bot.py +++ b/soccer_bot.py @@ -2,15 +2,34 @@ from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSenso from pybricks.parameters import Button, Color, Direction, Port, Side, Stop from pybricks.robotics import DriveBase from pybricks.tools import wait, StopWatch +from pybricks.hubs import PrimeHub -rc = Remote(timeout=5000) -print("Remote name: ", rc.name) -rc.light.on(Color.RED) +config = { + "PyBrick Hub" : { + "remote" : "blue", + "color" : Color.BLUE + }, + "Hub Rot" : { + "remote" : "red", + "color" : Color.RED + } +} + +hub = PrimeHub() +hub_name = hub.system.name() +hub_config = config[hub_name] +print("Hub config: ", hub_config) +rc = Remote(timeout=5000, name=hub_config["remote"]) +rc.light.on(hub_config["color"]) shoot = None try: shoot = Motor(Port.F) print("found shoot motor") + # erhöhe Beschleunigung des Shoot Motors von 2000 auf 8000 + shoot.control.limits(1000, 8000, 199) + print("Shoot limits (speed, accel, torque): " + str(shoot.control.limits())) + shoot.control.limits except: print("no shoot motor") @@ -52,11 +71,12 @@ while True: if Button.CENTER in pressed: if shoot: # move forward to shoot - angle=45 + angle=30 speed=1000 - shoot.run_angle(-speed, angle) - # move back shoot.run_angle(speed, angle) + # move back + shoot.run_angle(-speed, angle) + #shoot.run(speed) # run fast db.settings(s_speed*2, s_accel, t_rate, t_accel*2)