Initial box runner
This commit is contained in:
parent
9724bf70c7
commit
73c8fa3b58
|
@ -0,0 +1,127 @@
|
|||
import time
|
||||
|
||||
# Library imports
|
||||
from vex import *
|
||||
|
||||
class Pierre:
|
||||
def __init__(self) -> None:
|
||||
self.brain = Brain()
|
||||
self.brain_inertial = Inertial()
|
||||
self.left_drive_smart = Motor(
|
||||
Ports.PORT1,
|
||||
GearSetting.RATIO_2_1,
|
||||
False)
|
||||
self.right_drive_smart = Motor(
|
||||
Ports.PORT6,
|
||||
GearSetting.RATIO_2_1,
|
||||
True)
|
||||
self.drivetrain = SmartDrive(
|
||||
lm=self.left_drive_smart,
|
||||
rm=self.right_drive_smart,
|
||||
g=self.brain_inertial,
|
||||
wheelTravel=200,
|
||||
trackWidth=292,
|
||||
wheelBase=127,
|
||||
units=DistanceUnits.MM,
|
||||
externalGearRatio=2.0,
|
||||
)
|
||||
# touchled_2 = Touchled(Ports.PORT2)
|
||||
# optical_3 = Optical(Ports.PORT3)
|
||||
self.color_sensor = ColorSensor(Ports.PORT3)
|
||||
# distance_7 = Distance(Ports.PORT7)
|
||||
# bumper_8 = Bumper(Ports.PORT8)
|
||||
self.velocity = 50
|
||||
self.brain.buttonLeft.pressed(self.velocity_change, (-10,))
|
||||
self.brain.buttonRight.pressed(self.velocity_change, (10,))
|
||||
self.brain.buttonCheck.pressed(self.forward_routine)
|
||||
|
||||
def action_loop(self):
|
||||
while True:
|
||||
#brain.screen.set_cursor(1, 1)
|
||||
#brain.screen.print("Hue " + str(color_3.hue()))
|
||||
#brain.screen.set_cursor(2, 1)
|
||||
#brain.screen.print("Brt " + str(color_3.brightness()))
|
||||
#brain.screen.set_cursor(3, 1)
|
||||
#brain.screen.print("Obj " + str(color_3.is_near_object()))
|
||||
time.sleep(.05)
|
||||
|
||||
def calibrate_drivetrain(self):
|
||||
# Calibrate the Drivetrain Inertial
|
||||
sleep(200, MSEC)
|
||||
self.brain.screen.print("Calibrating")
|
||||
self.brain.screen.next_row()
|
||||
self.brain.screen.print("Inertial")
|
||||
self.brain_inertial.calibrate()
|
||||
while self.brain_inertial.is_calibrating():
|
||||
sleep(25, MSEC)
|
||||
self.brain.screen.clear_screen()
|
||||
self.brain.screen.set_cursor(1, 1)
|
||||
self.brain.screen.print("Pierre is ready.")
|
||||
|
||||
def forward_routine(self) -> None:
|
||||
self.brain.screen.set_cursor(1, 1)
|
||||
self.brain.screen.print("driving routine")
|
||||
self.play_confirm_sound()
|
||||
|
||||
self.drivetrain.set_drive_velocity(self.velocity, VelocityUnits.PERCENT)
|
||||
self.drivetrain.set_turn_velocity(self.velocity, VelocityUnits.PERCENT)
|
||||
for _ in range(4):
|
||||
self.brain.screen.clear_line(2)
|
||||
self.brain.screen.set_cursor(2, 1)
|
||||
self.brain.screen.print("straight")
|
||||
self.drivetrain.drive_for(DirectionType.FORWARD, 20.0, DistanceUnits.IN, wait=True)
|
||||
|
||||
self.play_pause_sound()
|
||||
self.brain.screen.clear_line(3)
|
||||
self.brain.screen.set_cursor(3, 1)
|
||||
self.brain.screen.print("turn")
|
||||
self.drivetrain.turn_for(
|
||||
direction=TurnType.LEFT,
|
||||
angle=90,
|
||||
wait=True)
|
||||
|
||||
self.brain.screen.set_cursor(2, 1)
|
||||
self.brain.screen.print("Complete.")
|
||||
self.play_complete_sound()
|
||||
|
||||
def play_confirm_sound(self) -> None:
|
||||
self.brain.play_note(1, 1, 100)
|
||||
self.brain.play_note(1, 2, 100)
|
||||
self.brain.play_note(1, 3, 100)
|
||||
self.brain.play_note(1, 6, 100)
|
||||
self.brain.play_note(1, 4, 100)
|
||||
|
||||
def play_complete_sound(self) -> None:
|
||||
self.brain.play_note(1, 5, 100)
|
||||
time.sleep(0.2)
|
||||
self.brain.play_note(1, 5, 400)
|
||||
|
||||
def play_pause_sound(self) -> None:
|
||||
self.brain.play_note(1, 7, 100)
|
||||
time.sleep(0.2)
|
||||
self.brain.play_note(1, 6, 200)
|
||||
time.sleep(0.2)
|
||||
self.brain.play_note(1, 5, 300)
|
||||
|
||||
def velocity_change(self, delta: int) -> None:
|
||||
self.velocity -= delta
|
||||
if self.velocity < 10:
|
||||
self.velocity = 10
|
||||
elif self.velocity > 100:
|
||||
self.velocity = 100
|
||||
self.brain.screen.set_cursor(1, 1)
|
||||
self.brain.screen.print("Velocity: " + str(self.velocity) + "%")
|
||||
|
||||
|
||||
|
||||
def main() -> None:
|
||||
# Brain should be defined by default
|
||||
pierre = Pierre()
|
||||
pierre.calibrate_drivetrain()
|
||||
pierre.action_loop()
|
||||
|
||||
#drivetrain.drive_for(FORWARD, 10)
|
||||
#drivetrain.drive_for(REVERSE, 10)
|
||||
#color_3.set_light(LedStateType.ON)
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue