Code für Pybricks Fußball Bot
This commit is contained in:
parent
2157ec4101
commit
d7dd932067
1 changed files with 77 additions and 0 deletions
77
soccer_bot.py
Normal file
77
soccer_bot.py
Normal file
|
@ -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()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue