Compare commits
20 Commits
7e2dc0b7c9
...
Scrimmage-
| Author | SHA1 | Date | |
|---|---|---|---|
| 1e612e2325 | |||
| 4456a5aab4 | |||
| ec745316e1 | |||
| 08e0b9a521 | |||
| 62b76d44bc | |||
| cba5cfc368 | |||
| 3349e7f20c | |||
| 4b765b0e9d | |||
| 2eca0d7d24 | |||
| 4533f952ed | |||
| 8949003351 | |||
| 8008dafccf | |||
| 6931731ae1 | |||
| d172c70fe2 | |||
| efcc011733 | |||
| 28bb3fa48c | |||
| 7ba2453152 | |||
| 7eeead7d99 | |||
| e8176500f9 | |||
| c4aa9548ed |
15
LINEUPS.md
Normal file
15
LINEUPS.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Lineups
|
||||||
|
|
||||||
|
## These are the line-up positions for the robot game for various missions.
|
||||||
|
|
||||||
|
- Mission Run #1 (Mission #1) [Right/Blue Home] - The left yellow part of the right arm attachment is positioned with its right edge on the 5th thin line from the left. Note that this is NOT positioned from the back of the robot.
|
||||||
|
|
||||||
|
- Mission Run #2 (Send Over) [Right/Blue Home] - The robot should be lined up on the vertical edge of the left home. The robot's right side should be positioned on the 1st thin line from the top. Note that the 0th line is the one that is not part of the curve.
|
||||||
|
|
||||||
|
- Mission Run #3 (Sand mission) [Right/Blue Home] - The robot should be lined up on the vertical edge of the left home. The robot's left side should be positioned on the 1/2th thin line from the bottom.
|
||||||
|
|
||||||
|
- Mission Run #4 (Boat mission) [Left/Red Home] - The robot should be lined up on the vertical edge of the left home. The robot's right side should be positioned on the 2nd thick line from the bottom.
|
||||||
|
|
||||||
|
- Mission Run #5 (Bautism) [Left/Red Home] - The robot's left edge should be positioned at the 1st thick, 2nd thin line from the left.
|
||||||
|
|
||||||
|
- Mission Run #6 (Not-so-heavy Lifting) [Right/Blue Home] - The robot's right edge should be positioned at the 1st thick from the right.
|
||||||
@@ -22,4 +22,7 @@ Load the master file into PyBricks, then send it over to the robot. Then you hol
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
GNU General Public License
|
GNU General Public License
|
||||||
|
|
||||||
You can take inspiration from our code, but you can't take our exact code.
|
You can take inspiration from our code, but you can't take our exact code.
|
||||||
|
|
||||||
|
Read LICENSE for more information.
|
||||||
113
final/2main.py
113
final/2main.py
@@ -1,113 +0,0 @@
|
|||||||
|
|
||||||
from pybricks.hubs import PrimeHub
|
|
||||||
from pybricks.pupdevices import Motor, ColorSensor
|
|
||||||
from pybricks.parameters import Port, Stop, Color, Direction
|
|
||||||
from pybricks.robotics import DriveBase
|
|
||||||
from pybricks.tools import wait, StopWatch, multitask, run_task
|
|
||||||
|
|
||||||
|
|
||||||
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
|
||||||
right_motor = Motor(Port.B)
|
|
||||||
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
|
|
||||||
right_arm = Motor(Port.D)
|
|
||||||
|
|
||||||
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
|
||||||
|
|
||||||
drive_base.settings(550,700,100,100)
|
|
||||||
|
|
||||||
drive_base.use_gyro(True)
|
|
||||||
|
|
||||||
async def Run1():
|
|
||||||
left_arm.run_angle(1000, 300)
|
|
||||||
right_arm.run_angle(1000,500)
|
|
||||||
await drive_base.straight(320)
|
|
||||||
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
|
|
||||||
await drive_base.turn(-20)
|
|
||||||
await drive_base.straight(275)
|
|
||||||
await drive_base.turn(20)
|
|
||||||
await drive_base.straight(63)
|
|
||||||
|
|
||||||
await drive_base.turn(-30)
|
|
||||||
right_arm.run_angle(50,500)
|
|
||||||
await drive_base.turn(45)
|
|
||||||
await drive_base.straight(-135)
|
|
||||||
await drive_base.turn(-60)
|
|
||||||
await drive_base.straight(90)
|
|
||||||
await left_arm.run_angle(1000,-450)
|
|
||||||
await drive_base.straight(-145)
|
|
||||||
await left_arm.run_angle(1000,450)
|
|
||||||
await drive_base.straight(10)
|
|
||||||
await drive_base.turn(35)
|
|
||||||
await drive_base.straight(-500)
|
|
||||||
|
|
||||||
async def Run2():
|
|
||||||
await drive_base.straight(200)
|
|
||||||
await drive_base.turn(-20)
|
|
||||||
await drive_base.straight(525)
|
|
||||||
await drive_base.turn(60)
|
|
||||||
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(2000,1000)
|
|
||||||
await drive_base.straight(-50)
|
|
||||||
await drive_base.turn(45)
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(350,-1000)
|
|
||||||
|
|
||||||
await drive_base.turn(-100)
|
|
||||||
await drive_base.straight(-600)
|
|
||||||
|
|
||||||
|
|
||||||
async def Run3():
|
|
||||||
await drive_base.straight(915)
|
|
||||||
await drive_base.turn(-90)
|
|
||||||
await drive_base.straight(60)
|
|
||||||
await left_arm.run_angle(10000,-15000)
|
|
||||||
await drive_base.straight(-60)
|
|
||||||
await drive_base.turn(85)
|
|
||||||
await drive_base.straight(2000)
|
|
||||||
|
|
||||||
|
|
||||||
async def Run5():
|
|
||||||
await drive_base.straight(420)
|
|
||||||
await right_arm.run_angle(300,-100)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
|
|
||||||
|
|
||||||
async def Run6():
|
|
||||||
await drive_base.straight(420)
|
|
||||||
await right_arm.run_angle(300,-100)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
if color_sensor.color() == Color.GREEN:
|
|
||||||
Run1()
|
|
||||||
|
|
||||||
if color_sensor.color() == Color.WHITE:
|
|
||||||
Run2()
|
|
||||||
|
|
||||||
if color_sensor.color() == Color.YELLOW:
|
|
||||||
Run3()
|
|
||||||
|
|
||||||
if color_sensor.color() == Color.BLUE:
|
|
||||||
Run5()
|
|
||||||
|
|
||||||
if color_sensor.color() == Color.RED:
|
|
||||||
Run6()
|
|
||||||
|
|
||||||
print(f'Detected color: {color_sensor.color()}')
|
|
||||||
|
|
||||||
# Main execution loop
|
|
||||||
while True:
|
|
||||||
main()
|
|
||||||
wait(100)
|
|
||||||
102
final/3main.py
102
final/3main.py
@@ -1,102 +0,0 @@
|
|||||||
from pybricks.hubs import PrimeHub
|
|
||||||
from pybricks.pupdevices import Motor, ColorSensor
|
|
||||||
from pybricks.parameters import Port, Stop, Color, Direction
|
|
||||||
from pybricks.robotics import DriveBase
|
|
||||||
from pybricks.tools import wait, StopWatch, multitask, run_task
|
|
||||||
|
|
||||||
async def Run1():
|
|
||||||
await multitask(left_arm.run_angle(1000, 300), right_arm.run_angle(1000,500))
|
|
||||||
await drive_base.straight(320)
|
|
||||||
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
|
|
||||||
await drive_base.turn(-20)
|
|
||||||
await drive_base.straight(275)
|
|
||||||
await drive_base.turn(20)
|
|
||||||
await drive_base.straight(63)
|
|
||||||
|
|
||||||
await multitask(drive_base.turn(-30), right_arm.run_angle(50,500))
|
|
||||||
await drive_base.turn(45)
|
|
||||||
await drive_base.straight(-135)
|
|
||||||
await drive_base.turn(-60)
|
|
||||||
await drive_base.straight(90)
|
|
||||||
await left_arm.run_angle(1000,-450)
|
|
||||||
await drive_base.straight(-145)
|
|
||||||
await left_arm.run_angle(1000,450)
|
|
||||||
await drive_base.straight(10)
|
|
||||||
await drive_base.turn(35)
|
|
||||||
await drive_base.straight(-500)
|
|
||||||
|
|
||||||
async def Run2():
|
|
||||||
await drive_base.straight(200)
|
|
||||||
await drive_base.turn(-20)
|
|
||||||
await drive_base.straight(525)
|
|
||||||
await drive_base.turn(60)
|
|
||||||
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(2000,1000)
|
|
||||||
await drive_base.straight(-50)
|
|
||||||
await drive_base.turn(45)
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(350,-1000)
|
|
||||||
|
|
||||||
await drive_base.turn(-100)
|
|
||||||
await drive_base.straight(-600)
|
|
||||||
|
|
||||||
async def Run3():
|
|
||||||
await drive_base.straight(915)
|
|
||||||
await drive_base.turn(-90)
|
|
||||||
await drive_base.straight(60)
|
|
||||||
await left_arm.run_angle(10000,-15000)
|
|
||||||
await drive_base.straight(-60)
|
|
||||||
await drive_base.turn(85)
|
|
||||||
await drive_base.straight(2000)
|
|
||||||
|
|
||||||
async def Run5():
|
|
||||||
await drive_base.straight(420)
|
|
||||||
await right_arm.run_angle(300,-100)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
|
|
||||||
|
|
||||||
async def Run6():
|
|
||||||
await drive_base.straight(420)
|
|
||||||
await right_arm.run_angle(300,-100)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
|
|
||||||
async def main():
|
|
||||||
while True:
|
|
||||||
detected_color = color_sensor.color(True)
|
|
||||||
|
|
||||||
if detected_color == Color.GREEN:
|
|
||||||
print('Detected color: Green')
|
|
||||||
await Run1()
|
|
||||||
|
|
||||||
elif detected_color == Color.WHITE:
|
|
||||||
print('Detected color: White')
|
|
||||||
await Run2()
|
|
||||||
|
|
||||||
elif detected_color == Color.YELLOW:
|
|
||||||
print('Detected color: Yellow')
|
|
||||||
await Run3()
|
|
||||||
|
|
||||||
elif detected_color == Color.BLUE:
|
|
||||||
print('Detected color: Blue')
|
|
||||||
await Run5()
|
|
||||||
|
|
||||||
elif detected_color == Color.RED:
|
|
||||||
print('Detected color: Red')
|
|
||||||
await Run6()
|
|
||||||
|
|
||||||
else:
|
|
||||||
print("None detected")
|
|
||||||
|
|
||||||
# Main execution
|
|
||||||
run_task(main())
|
|
||||||
227
final/main4.py
227
final/main4.py
@@ -1,227 +0,0 @@
|
|||||||
from pybricks.hubs import PrimeHub
|
|
||||||
from pybricks.pupdevices import Motor, ColorSensor
|
|
||||||
from pybricks.parameters import Port, Stop, Color, Direction
|
|
||||||
from pybricks.robotics import DriveBase
|
|
||||||
from pybricks.tools import wait, StopWatch, multitask, run_task
|
|
||||||
|
|
||||||
hub = PrimeHub()
|
|
||||||
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
|
||||||
right_motor = Motor(Port.B)
|
|
||||||
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
|
|
||||||
right_arm = Motor(Port.D)
|
|
||||||
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
|
||||||
drive_base.settings(550,700,100,100)
|
|
||||||
drive_base.use_gyro(True)
|
|
||||||
color_sensor = ColorSensor(Port.F)
|
|
||||||
hub.speaker.volume(50) # Set the volume of the speaker
|
|
||||||
|
|
||||||
async def Run1():
|
|
||||||
left_arm.run_angle(1000, 300)
|
|
||||||
right_arm.run_angle(1000,500)
|
|
||||||
await drive_base.straight(320)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await drive_base.turn(-20)
|
|
||||||
await drive_base.straight(277)
|
|
||||||
await drive_base.turn(20)
|
|
||||||
await drive_base.straight(65)
|
|
||||||
await drive_base.turn(-30)
|
|
||||||
right_arm.run_angle(50,500)
|
|
||||||
await drive_base.turn(45)
|
|
||||||
await drive_base.straight(-145)
|
|
||||||
await drive_base.turn(-60)
|
|
||||||
await drive_base.straight(90)
|
|
||||||
await left_arm.run_angle(1000,-450)
|
|
||||||
await drive_base.straight(-145)
|
|
||||||
await left_arm.run_angle(1000,450)
|
|
||||||
await drive_base.straight(10)
|
|
||||||
await drive_base.turn(35)
|
|
||||||
await drive_base.straight(-600)
|
|
||||||
async def Run2():
|
|
||||||
await drive_base.straight(200)
|
|
||||||
await drive_base.turn(-20)
|
|
||||||
await drive_base.straight(525)
|
|
||||||
await drive_base.turn(60)
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(2000,1000)
|
|
||||||
await drive_base.straight(-50)
|
|
||||||
await drive_base.turn(45)
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(350,-1000)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await drive_base.turn(-100)
|
|
||||||
await drive_base.straight(-600)
|
|
||||||
async def Run3():
|
|
||||||
await drive_base.straight(920)
|
|
||||||
await drive_base.turn(-90,Stop.HOLD)
|
|
||||||
await drive_base.straight(65)
|
|
||||||
drive_base.turn(-10)
|
|
||||||
await left_arm.run_angle(10000,-4000)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await drive_base.turn(90)
|
|
||||||
await drive_base.straight(2000)
|
|
||||||
async def Run5():
|
|
||||||
await drive_base.straight(420)
|
|
||||||
await right_arm.run_angle(300,-100)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
async def Run6():
|
|
||||||
await drive_base.straight(420)
|
|
||||||
await right_arm.run_angle(300,-100)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
# Celebration sound types
|
|
||||||
class CelebrationSound:
|
|
||||||
VICTORY_FANFARE = 0
|
|
||||||
LEVEL_UP = 1
|
|
||||||
SUCCESS_CHIME = 2
|
|
||||||
TA_DA = 3
|
|
||||||
POWER_UP = 4
|
|
||||||
RICKROLL_INSPIRED = 5
|
|
||||||
|
|
||||||
async def play_victory_fanfare():
|
|
||||||
"""Classic victory fanfare"""
|
|
||||||
notes = [
|
|
||||||
(262, 200), # C4
|
|
||||||
(262, 200), # C4
|
|
||||||
(262, 200), # C4
|
|
||||||
(349, 600), # F4
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in notes:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(50)
|
|
||||||
async def play_level_up():
|
|
||||||
"""Upward scale for level completion"""
|
|
||||||
notes = [
|
|
||||||
(262, 100), # C4
|
|
||||||
(294, 100), # D4
|
|
||||||
(330, 100), # E4
|
|
||||||
(349, 100), # F4
|
|
||||||
(392, 100), # G4
|
|
||||||
(440, 100), # A4
|
|
||||||
(494, 100), # B4
|
|
||||||
(523, 300), # C5
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in notes:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(20)
|
|
||||||
async def play_success_chime():
|
|
||||||
"""Simple success notification"""
|
|
||||||
notes = [
|
|
||||||
(523, 150), # C5
|
|
||||||
(659, 150), # E5
|
|
||||||
(784, 300), # G5
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in notes:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(50)
|
|
||||||
async def play_ta_da():
|
|
||||||
"""Classic "ta-da!" sound"""
|
|
||||||
notes = [
|
|
||||||
(392, 200), # G4
|
|
||||||
(523, 400), # C5
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in notes:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(100)
|
|
||||||
async def play_power_up():
|
|
||||||
"""Rising power-up sound"""
|
|
||||||
for freq in range(200, 800, 50):
|
|
||||||
await hub.speaker.beep(freq, 50)
|
|
||||||
await wait(10)
|
|
||||||
await hub.speaker.beep(1000, 200)
|
|
||||||
async def play_rickroll_inspired():
|
|
||||||
"""Fun 80s-style dance beat inspired sound"""
|
|
||||||
# Upbeat bouncy rhythm
|
|
||||||
pattern = [
|
|
||||||
(392, 200), (440, 200), (494, 200), (523, 200),
|
|
||||||
(440, 200), (392, 200), (349, 200), (392, 300),
|
|
||||||
(440, 200), (392, 200), (349, 200), (330, 400),
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in pattern:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(50)
|
|
||||||
async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME):
|
|
||||||
"""
|
|
||||||
Main celebration function to call after completing a mission.
|
|
||||||
Plays a sound and shows light animation.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
sound_type: CelebrationSound enum value (default: SUCCESS_CHIME)
|
|
||||||
"""
|
|
||||||
# Light show
|
|
||||||
hub.light.on(Color.GREEN)
|
|
||||||
|
|
||||||
# Play the selected celebration sound
|
|
||||||
if sound_type == CelebrationSound.VICTORY_FANFARE:
|
|
||||||
await play_victory_fanfare()
|
|
||||||
elif sound_type == CelebrationSound.LEVEL_UP:
|
|
||||||
await play_level_up()
|
|
||||||
elif sound_type == CelebrationSound.SUCCESS_CHIME:
|
|
||||||
await play_success_chime()
|
|
||||||
elif sound_type == CelebrationSound.TA_DA:
|
|
||||||
await play_ta_da()
|
|
||||||
elif sound_type == CelebrationSound.POWER_UP:
|
|
||||||
await play_power_up()
|
|
||||||
elif sound_type == CelebrationSound.RICKROLL_INSPIRED:
|
|
||||||
await play_rickroll_inspired()
|
|
||||||
else:
|
|
||||||
await play_success_chime() # Default fallback
|
|
||||||
|
|
||||||
# Blink the light
|
|
||||||
for _ in range(3):
|
|
||||||
hub.light.off()
|
|
||||||
await wait(100)
|
|
||||||
hub.light.on(Color.GREEN)
|
|
||||||
await wait(100)
|
|
||||||
|
|
||||||
hub.light.off()
|
|
||||||
|
|
||||||
async def main():
|
|
||||||
while True:
|
|
||||||
|
|
||||||
await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
|
|
||||||
color_reflected_percent = await color_sensor.reflection()
|
|
||||||
print(color_reflected_percent)
|
|
||||||
|
|
||||||
color_detected = await color_sensor.color()
|
|
||||||
print(f'Detected color: {color_detected}')
|
|
||||||
|
|
||||||
if color_detected == Color.GREEN:
|
|
||||||
print('Running Mission 1')
|
|
||||||
await Run1()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.VICTORY_FANFARE)
|
|
||||||
elif color_detected == Color.WHITE:
|
|
||||||
print('Running Mission 2')
|
|
||||||
await Run2()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.RICKROLL_INSPIRED)
|
|
||||||
elif color_detected == Color.YELLOW:
|
|
||||||
print('Running Mission 3')
|
|
||||||
await Run3()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.SUCCESS_CHIME)
|
|
||||||
elif color_detected == Color.BLUE:
|
|
||||||
print('Running Mission 5')
|
|
||||||
await Run5()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.POWER_UP)
|
|
||||||
elif color_detected == Color.RED:
|
|
||||||
print('Running Mission 6')
|
|
||||||
await Run6()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
|
|
||||||
else:
|
|
||||||
hub.light.off()
|
|
||||||
left_motor.stop()
|
|
||||||
right_motor.stop()
|
|
||||||
await wait(100) #prevent loop from iterating fast
|
|
||||||
|
|
||||||
# Main execution loop
|
|
||||||
run_task(main())
|
|
||||||
278
final/main5.py
278
final/main5.py
@@ -1,278 +0,0 @@
|
|||||||
from pybricks.hubs import PrimeHub
|
|
||||||
from pybricks.pupdevices import Motor, ColorSensor
|
|
||||||
from pybricks.parameters import Port, Stop, Color, Direction
|
|
||||||
from pybricks.robotics import DriveBase
|
|
||||||
from pybricks.tools import wait, StopWatch, multitask, run_task
|
|
||||||
|
|
||||||
hub = PrimeHub()
|
|
||||||
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
|
||||||
right_motor = Motor(Port.B)
|
|
||||||
left_arm = Motor(Port.C)#, Direction.COUNTERCLOCKWISE)
|
|
||||||
right_arm = Motor(Port.D)
|
|
||||||
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
|
||||||
drive_base.settings(550,700,100,100)
|
|
||||||
drive_base.use_gyro(True)
|
|
||||||
color_sensor = ColorSensor(Port.F)
|
|
||||||
Color.ORANGE = Color(37, 85, 95)
|
|
||||||
Color.BLUE = Color(230,100,100)
|
|
||||||
color_sensor.detectable_colors([Color.ORANGE, Color.BLUE, Color.GREEN, Color.WHITE, Color.RED, Color.YELLOW])
|
|
||||||
hub.speaker.volume(50) # Set the volume of the speaker
|
|
||||||
color_sensor.detectable_colors()
|
|
||||||
# Celebration sound types
|
|
||||||
class CelebrationSound:
|
|
||||||
VICTORY_FANFARE = 0
|
|
||||||
LEVEL_UP = 1
|
|
||||||
SUCCESS_CHIME = 2
|
|
||||||
TA_DA = 3
|
|
||||||
POWER_UP = 4
|
|
||||||
RICKROLL_INSPIRED = 5
|
|
||||||
|
|
||||||
async def play_victory_fanfare():
|
|
||||||
"""Classic victory fanfare"""
|
|
||||||
notes = [
|
|
||||||
(262, 200), # C4
|
|
||||||
(262, 200), # C4
|
|
||||||
(262, 200), # C4
|
|
||||||
(349, 600), # F4
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in notes:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(50)
|
|
||||||
async def play_level_up():
|
|
||||||
"""Upward scale for level completion"""
|
|
||||||
notesold = [
|
|
||||||
(262, 100), # C4
|
|
||||||
(294, 100), # D4
|
|
||||||
(330, 100), # E4
|
|
||||||
(349, 100), # F4
|
|
||||||
(392, 100), # G4
|
|
||||||
(440, 100), # A4
|
|
||||||
(494, 100), # B4
|
|
||||||
(523, 300), # C5
|
|
||||||
]
|
|
||||||
notes = [
|
|
||||||
(277, 100),
|
|
||||||
(330, 100),
|
|
||||||
(277, 100),
|
|
||||||
(554, 100),
|
|
||||||
(277, 100),
|
|
||||||
(413, 100),
|
|
||||||
(330, 100),
|
|
||||||
(277, 100),
|
|
||||||
(413, 100),
|
|
||||||
(277, 100),
|
|
||||||
(554, 100),
|
|
||||||
(413, 100),
|
|
||||||
(277, 100),
|
|
||||||
(413, 100),
|
|
||||||
(554, 100),
|
|
||||||
(413, 100)
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in notes:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
#await wait(20)
|
|
||||||
async def play_success_chime():
|
|
||||||
"""Simple success notification"""
|
|
||||||
notes = [
|
|
||||||
(523, 150), # C5
|
|
||||||
(659, 150), # E5
|
|
||||||
(784, 300), # G5
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in notes:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(50)
|
|
||||||
async def play_ta_da():
|
|
||||||
"""Classic "ta-da!" sound"""
|
|
||||||
notes = [
|
|
||||||
(392, 200), # G4
|
|
||||||
(523, 400), # C5
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in notes:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(100)
|
|
||||||
async def play_power_up():
|
|
||||||
"""Rising power-up sound"""
|
|
||||||
for freq in range(200, 800, 50):
|
|
||||||
await hub.speaker.beep(freq, 50)
|
|
||||||
await wait(10)
|
|
||||||
await hub.speaker.beep(1000, 200)
|
|
||||||
async def play_rickroll_inspired():
|
|
||||||
"""Fun 80s-style dance beat inspired sound"""
|
|
||||||
# Upbeat bouncy rhythm
|
|
||||||
pattern = [
|
|
||||||
(392, 200), (440, 200), (494, 200), (523, 200),
|
|
||||||
(440, 200), (392, 200), (349, 200), (392, 300),
|
|
||||||
(440, 200), (392, 200), (349, 200), (330, 400),
|
|
||||||
]
|
|
||||||
|
|
||||||
for freq, duration in pattern:
|
|
||||||
await hub.speaker.beep(freq, duration)
|
|
||||||
await wait(50)
|
|
||||||
async def celebrate_mission_complete(sound_type=CelebrationSound.SUCCESS_CHIME):
|
|
||||||
"""
|
|
||||||
Main celebration function to call after completing a mission.
|
|
||||||
Plays a sound and shows light animation.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
sound_type: CelebrationSound enum value (default: SUCCESS_CHIME)
|
|
||||||
"""
|
|
||||||
# Light show
|
|
||||||
hub.light.on(Color.GREEN)
|
|
||||||
|
|
||||||
# Play the selected celebration sound
|
|
||||||
if sound_type == CelebrationSound.VICTORY_FANFARE:
|
|
||||||
await play_victory_fanfare()
|
|
||||||
elif sound_type == CelebrationSound.LEVEL_UP:
|
|
||||||
await play_level_up()
|
|
||||||
elif sound_type == CelebrationSound.SUCCESS_CHIME:
|
|
||||||
await play_success_chime()
|
|
||||||
elif sound_type == CelebrationSound.TA_DA:
|
|
||||||
await play_ta_da()
|
|
||||||
elif sound_type == CelebrationSound.POWER_UP:
|
|
||||||
await play_power_up()
|
|
||||||
elif sound_type == CelebrationSound.RICKROLL_INSPIRED:
|
|
||||||
await play_rickroll_inspired()
|
|
||||||
else:
|
|
||||||
await play_success_chime() # Default fallback
|
|
||||||
|
|
||||||
# Blink the light
|
|
||||||
for _ in range(3):
|
|
||||||
hub.light.off()
|
|
||||||
await wait(100)
|
|
||||||
hub.light.on(Color.GREEN)
|
|
||||||
await wait(100)
|
|
||||||
|
|
||||||
hub.light.off()
|
|
||||||
|
|
||||||
async def Run1():
|
|
||||||
await multitask(left_arm.run_angle(1000, 300), right_arm.run_angle(1000,500))
|
|
||||||
await drive_base.straight(320)
|
|
||||||
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,500, Stop.HOLD)
|
|
||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
|
||||||
|
|
||||||
await drive_base.turn(-20)
|
|
||||||
await drive_base.straight(275)
|
|
||||||
await drive_base.turn(20)
|
|
||||||
await drive_base.straight(63)
|
|
||||||
|
|
||||||
await multitask(drive_base.turn(-30), right_arm.run_angle(50,500))
|
|
||||||
await drive_base.turn(45)
|
|
||||||
await drive_base.straight(-135)
|
|
||||||
await drive_base.turn(-60)
|
|
||||||
await drive_base.straight(90)
|
|
||||||
await left_arm.run_angle(1000,-450)
|
|
||||||
await drive_base.straight(-145)
|
|
||||||
await left_arm.run_angle(1000,450)
|
|
||||||
await drive_base.straight(10)
|
|
||||||
await drive_base.turn(35)
|
|
||||||
await drive_base.straight(-500)
|
|
||||||
|
|
||||||
async def Run2():
|
|
||||||
await drive_base.straight(200)
|
|
||||||
await drive_base.turn(-20)
|
|
||||||
await drive_base.straight(525)
|
|
||||||
await drive_base.turn(60)
|
|
||||||
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(2000,1000)
|
|
||||||
await drive_base.straight(-50)
|
|
||||||
await drive_base.turn(45)
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(350,-1000)
|
|
||||||
|
|
||||||
await drive_base.turn(-100)
|
|
||||||
await drive_base.straight(-600)
|
|
||||||
|
|
||||||
|
|
||||||
async def Run3():
|
|
||||||
await drive_base.straight(915)
|
|
||||||
await drive_base.turn(-90)
|
|
||||||
await drive_base.straight(60)
|
|
||||||
await left_arm.run_angle(10000,-15000)
|
|
||||||
await drive_base.straight(-60)
|
|
||||||
await drive_base.turn(85)
|
|
||||||
await drive_base.straight(2000)
|
|
||||||
|
|
||||||
async def Run4():
|
|
||||||
await drive_base.straight(519)
|
|
||||||
await left_arm.run_angle(300, -100)
|
|
||||||
await left_arm.run_angle(300, 500)
|
|
||||||
await drive_base.straight(180)
|
|
||||||
await drive_base.turn(-37)
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(300, -400)
|
|
||||||
await drive_base.straight(-150)
|
|
||||||
await drive_base.turn(125)
|
|
||||||
await drive_base.straight(50)
|
|
||||||
await right_arm.run_angle(300, 400)
|
|
||||||
await drive_base.straight(-75)
|
|
||||||
await right_arm.run_angle(300, 300)
|
|
||||||
await drive_base.turn(-40)
|
|
||||||
await drive_base.straight(250)
|
|
||||||
await right_arm.run_angle(100, -300)
|
|
||||||
await drive_base.straight(30)
|
|
||||||
await right_arm.run_angle(50,-250)
|
|
||||||
await drive_base.turn(30)
|
|
||||||
await drive_base.straight(-200)
|
|
||||||
await drive_base.turn(-50)
|
|
||||||
await drive_base.straight(-800)
|
|
||||||
|
|
||||||
async def Run5():
|
|
||||||
await drive_base.straight(420)
|
|
||||||
await right_arm.run_angle(300,-100)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
|
|
||||||
|
|
||||||
async def Run6():
|
|
||||||
await drive_base.straight(420)
|
|
||||||
await right_arm.run_angle(300,-100)
|
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
async def main():
|
|
||||||
while True:
|
|
||||||
|
|
||||||
await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
|
|
||||||
color_reflected_percent = await color_sensor.reflection()
|
|
||||||
print(color_reflected_percent)
|
|
||||||
|
|
||||||
color_detected = await color_sensor.color()
|
|
||||||
print(f'Detected color: {color_detected.h}, {color_detected.s}, {color_detected.v}')
|
|
||||||
if color_reflected_percent > 0:
|
|
||||||
if color_detected == Color.GREEN:
|
|
||||||
print('Running Mission 1')
|
|
||||||
await Run1()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.VICTORY_FANFARE)
|
|
||||||
elif color_detected == Color.WHITE:
|
|
||||||
print('Running Mission 2')
|
|
||||||
await Run2()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.RICKROLL_INSPIRED)
|
|
||||||
elif color_detected == Color.YELLOW:
|
|
||||||
print('Running Mission 3')
|
|
||||||
await Run3()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.SUCCESS_CHIME )
|
|
||||||
elif color_detected == Color.BLUE:
|
|
||||||
print('Running Mission 4')
|
|
||||||
await Run4()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.POWER_UP)
|
|
||||||
elif color_detected == Color.RED:
|
|
||||||
print('Running Mission 5')
|
|
||||||
await Run5()
|
|
||||||
await celebrate_mission_complete(CelebrationSound.LEVEL_UP)
|
|
||||||
else:
|
|
||||||
hub.light.off()
|
|
||||||
left_motor.stop()
|
|
||||||
right_motor.stop()
|
|
||||||
await wait(1000) #prevent loop from iterating fast
|
|
||||||
# Main execution loop
|
|
||||||
run_task(main())
|
|
||||||
45
missions/Bautism.py
Normal file
45
missions/Bautism.py
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
from pybricks.hubs import PrimeHub
|
||||||
|
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
|
||||||
|
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
|
||||||
|
from pybricks.robotics import DriveBase
|
||||||
|
from pybricks.tools import wait, StopWatch, run_task
|
||||||
|
|
||||||
|
hub = PrimeHub()
|
||||||
|
|
||||||
|
# Initialize both motors. In this example, the motor on the
|
||||||
|
# left must turn counterclockwise to make the robot go forward.
|
||||||
|
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_motor = Motor(Port.B)
|
||||||
|
|
||||||
|
arm_motor = Motor(Port.D, Direction.CLOCKWISE)
|
||||||
|
arm_motor_left= Motor(Port.C, Direction.CLOCKWISE)
|
||||||
|
# Initialize the drive base. In this example, the wheel diameter is 56mm.
|
||||||
|
# The distance between the two wheel-ground contact points is 112mm.
|
||||||
|
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
||||||
|
|
||||||
|
print('The default settings are: ' + str(drive_base.settings()))
|
||||||
|
drive_base.settings(300,1000,300,750)
|
||||||
|
# Optionally, uncomment the line below to use the gyro for improved accuracy.
|
||||||
|
drive_base.use_gyro(True)
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
await drive_base.straight(519)
|
||||||
|
await arm_motor_left.run_angle(300, -100)
|
||||||
|
await arm_motor_left.run_angle(300, 500)
|
||||||
|
await drive_base.straight(180)
|
||||||
|
await drive_base.turn(-37)
|
||||||
|
await drive_base.straight(50)
|
||||||
|
await arm_motor.run_angle(300, -400)
|
||||||
|
await drive_base.straight(-150)
|
||||||
|
await drive_base.turn(135)
|
||||||
|
await drive_base.straight(50)
|
||||||
|
await arm_motor.run_angle(300, 400)
|
||||||
|
await drive_base.straight(-75)
|
||||||
|
await arm_motor.run_angle(300, 300)
|
||||||
|
await drive_base.turn(-50)
|
||||||
|
await drive_base.straight(162)
|
||||||
|
await arm_motor.run_angle(100, -200)
|
||||||
|
await drive_base.straight(30)
|
||||||
|
await arm_motor.run_angle(50,-500)
|
||||||
|
|
||||||
|
run_task(main())
|
||||||
27
missions/Boat.py
Normal file
27
missions/Boat.py
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
from pybricks.hubs import PrimeHub
|
||||||
|
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
|
||||||
|
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
|
||||||
|
from pybricks.robotics import DriveBase
|
||||||
|
from pybricks.tools import wait, StopWatch
|
||||||
|
from pybricks.tools import run_task,multitask
|
||||||
|
|
||||||
|
hub = PrimeHub()
|
||||||
|
|
||||||
|
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_motor = Motor(Port.B)
|
||||||
|
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_arm = Motor(Port.D)
|
||||||
|
|
||||||
|
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
||||||
|
|
||||||
|
drive_base.settings(550,700,100,100)
|
||||||
|
|
||||||
|
drive_base.use_gyro(True)
|
||||||
|
|
||||||
|
first_run = False
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
await drive_base.straight(750)
|
||||||
|
await drive_base.straight(-650)
|
||||||
|
|
||||||
|
run_task(main())
|
||||||
34
missions/Lift.py
Normal file
34
missions/Lift.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
from pybricks.hubs import PrimeHub
|
||||||
|
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
|
||||||
|
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
|
||||||
|
from pybricks.robotics import DriveBase
|
||||||
|
from pybricks.tools import wait, StopWatch
|
||||||
|
from pybricks.tools import run_task, multitask
|
||||||
|
|
||||||
|
hub = PrimeHub()
|
||||||
|
|
||||||
|
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_motor = Motor(Port.B)
|
||||||
|
|
||||||
|
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_arm = Motor(Port.D)
|
||||||
|
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
||||||
|
drive_base.settings(600,500,300,200)
|
||||||
|
drive_base.use_gyro(True)
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
await drive_base.straight(200)
|
||||||
|
await drive_base.turn(-20)
|
||||||
|
await drive_base.straight(525)
|
||||||
|
await drive_base.turn(60)
|
||||||
|
|
||||||
|
await drive_base.straight(50)
|
||||||
|
await right_arm.run_angle(2000,1000)
|
||||||
|
await drive_base.straight(-50)
|
||||||
|
await drive_base.turn(45)
|
||||||
|
await drive_base.straight(50)
|
||||||
|
await right_arm.run_angle(350,-1000)
|
||||||
|
|
||||||
|
await drive_base.turn(-100)
|
||||||
|
await drive_base.straight(-600)
|
||||||
|
run_task(main())
|
||||||
@@ -30,14 +30,14 @@ async def main():
|
|||||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
||||||
|
|
||||||
await drive_base.turn(-20)
|
await drive_base.turn(-20)
|
||||||
await drive_base.straight(275)
|
await drive_base.straight(277)
|
||||||
await drive_base.turn(20)
|
await drive_base.turn(20)
|
||||||
await drive_base.straight(63)
|
await drive_base.straight(65)
|
||||||
|
|
||||||
await drive_base.turn(-30)
|
await drive_base.turn(-30)
|
||||||
right_arm.run_angle(50,500)
|
right_arm.run_angle(50,500)
|
||||||
await drive_base.turn(45)
|
await drive_base.turn(45)
|
||||||
await drive_base.straight(-135)
|
await drive_base.straight(-145)
|
||||||
await drive_base.turn(-60)
|
await drive_base.turn(-60)
|
||||||
await drive_base.straight(90)
|
await drive_base.straight(90)
|
||||||
await left_arm.run_angle(1000,-450)
|
await left_arm.run_angle(1000,-450)
|
||||||
@@ -45,5 +45,5 @@ async def main():
|
|||||||
await left_arm.run_angle(1000,450)
|
await left_arm.run_angle(1000,450)
|
||||||
await drive_base.straight(10)
|
await drive_base.straight(10)
|
||||||
await drive_base.turn(35)
|
await drive_base.turn(35)
|
||||||
await drive_base.straight(-500)
|
await drive_base.straight(-600)
|
||||||
run_task(main())
|
run_task(main())
|
||||||
29
missions/Sand Mission.py
Normal file
29
missions/Sand Mission.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
from pybricks.hubs import PrimeHub
|
||||||
|
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
|
||||||
|
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
|
||||||
|
from pybricks.robotics import DriveBase
|
||||||
|
from pybricks.tools import wait, StopWatch
|
||||||
|
from pybricks.tools import run_task,multitask
|
||||||
|
|
||||||
|
hub = PrimeHub()
|
||||||
|
|
||||||
|
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_motor = Motor(Port.B)
|
||||||
|
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_arm = Motor(Port.D)
|
||||||
|
|
||||||
|
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
||||||
|
|
||||||
|
drive_base.settings(400,500,100,100)
|
||||||
|
|
||||||
|
drive_base.use_gyro(True)
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
await drive_base.straight(420)
|
||||||
|
await right_arm.run_angle(300,-100)
|
||||||
|
await drive_base.straight(-100)
|
||||||
|
await right_arm.run_angle(300, 100)
|
||||||
|
await drive_base.straight(-350)
|
||||||
|
|
||||||
|
run_task(main())
|
||||||
@@ -13,22 +13,19 @@ right_motor = Motor(Port.B)
|
|||||||
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
|
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
|
||||||
right_arm = Motor(Port.D)
|
right_arm = Motor(Port.D)
|
||||||
|
|
||||||
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=64.8, axle_track=180)
|
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
||||||
|
|
||||||
drive_base.settings(600,500,300,200)
|
drive_base.settings(600,500,300,200)
|
||||||
drive_base.use_gyro(True)
|
drive_base.use_gyro(True)
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
|
|
||||||
await drive_base.straight(855)
|
await drive_base.straight(915)
|
||||||
await drive_base.turn(-90)
|
await drive_base.turn(-90)
|
||||||
await drive_base.straight(50)
|
await drive_base.straight(60)
|
||||||
await left_arm.run_angle(10000,-15000)
|
await left_arm.run_angle(10000,-15000)
|
||||||
await drive_base.straight(-50)
|
await drive_base.straight(-60)
|
||||||
await drive_base.turn(90)
|
await drive_base.turn(85)
|
||||||
await drive_base.straight(2000)
|
await drive_base.straight(2000)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
run_task(main())
|
run_task(main())
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
# ---JOHANNES---
|
# ---JOHANNES---
|
||||||
|
# THIS CODE IS NOT USED ANYMORE AND SHOULD NOT BE USED!!!!!!
|
||||||
from pybricks.hubs import PrimeHub
|
from pybricks.hubs import PrimeHub
|
||||||
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
|
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
|
||||||
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
|
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
|
||||||
42
missions/tip the scale.py
Normal file
42
missions/tip the scale.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
from pybricks.hubs import PrimeHub
|
||||||
|
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
|
||||||
|
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
|
||||||
|
from pybricks.robotics import DriveBase
|
||||||
|
from pybricks.tools import wait, StopWatch
|
||||||
|
from pybricks.tools import run_task, multitask
|
||||||
|
|
||||||
|
hub = PrimeHub()
|
||||||
|
|
||||||
|
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_motor = Motor(Port.B)
|
||||||
|
|
||||||
|
|
||||||
|
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_arm = Motor(Port.D)
|
||||||
|
|
||||||
|
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
|
||||||
|
drive_base.settings(300,1000,300,200)
|
||||||
|
|
||||||
|
#drive_base.use_gyro(True)
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
left_arm.run_angle(500,200)
|
||||||
|
right_arm.run_angle(500,200)
|
||||||
|
await drive_base.straight(70)
|
||||||
|
|
||||||
|
await drive_base.turn(-55)
|
||||||
|
await drive_base.straight(900)
|
||||||
|
await drive_base.turn(92.5)
|
||||||
|
|
||||||
|
await drive_base.straight(75)
|
||||||
|
await drive_base.straight(21)
|
||||||
|
await right_arm.run_angle(500,-250)
|
||||||
|
await right_arm.run_angle(500,250)
|
||||||
|
await drive_base.turn(55)
|
||||||
|
|
||||||
|
await left_arm.run_angle(300,-400)
|
||||||
|
|
||||||
|
await drive_base.turn(46.5)
|
||||||
|
await drive_base.turn(-40)
|
||||||
|
await drive_base.straight(900)
|
||||||
|
run_task(main())
|
||||||
Reference in New Issue
Block a user