Compare commits

..

3 commits

Author SHA1 Message Date
(MakerLab) Laptop 2
2c3d9eb160 Connecte Hub mit korrekter Remote nach Farbe 2024-06-12 17:48:14 +02:00
(MakerLab) Laptop 2
e4847d6cad fixed power button 2024-05-08 20:05:38 +02:00
(MakerLab) Laptop 2
d7dd932067 Code für Pybricks Fußball Bot 2024-05-08 19:55:03 +02:00

98
soccer_bot.py Normal file
View file

@ -0,0 +1,98 @@
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
from pybricks.hubs import PrimeHub
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")
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=30
speed=1000
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)
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()