Examples¶
Hub Outputs¶
Status Light¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10
11# store variables
12
13# --- RUNNING
14while True:
15 # read sensor data
16
17 # process data
18
19 # output data
20 hub.light.on(Color.MAGENTA)
21 wait(1000)
22 hub.light.blink(Color.RED, [500,250,500,250])
23 wait(1500)
24 hub.light.animate([Color.GREEN, Color.WHITE, Color.ORANGE],1000)
25 wait(3000)
26 hub.light.off()
27 wait(1000)
Light Matrix¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop, Icon
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10
11# store variables
12
13# --- RUNNING
14while True:
15 # read sensor data
16
17 # process data
18
19 # output data
20 hub.display.orientation(Side.RIGHT)
21 hub.display.icon(Icon.UP)
22 wait(250)
23 hub.display.orientation(Side.BOTTOM)
24 hub.display.icon(Icon.UP)
25 wait(250)
26 hub.display.orientation(Side.LEFT)
27 hub.display.icon(Icon.UP)
28 wait(250)
29 hub.display.orientation(Side.TOP)
30 hub.display.icon(Icon.UP)
31 wait(250)
32
33 hub.display.off()
34 wait(500)
35
36 hub.display.pixel(1,1,100)
37 hub.display.pixel(1,3,100)
38 hub.display.pixel(3,1,100)
39 hub.display.pixel(3,2,100)
40 hub.display.pixel(3,3,100)
41 wait(1000)
42
43 hub.display.off()
44 wait(500)
45
46 arrows = [Icon.RIGHT, Icon.DOWN, Icon.LEFT, Icon.UP]
47 hub.display.animate(arrows, 500)
48 wait(1000)
49
50 hub.display.off()
51 wait(500)
52
53 hub.display.char("R")
54 wait(500)
55 hub.display.number(2)
56 wait(500)
57 hub.display.char("D")
58 wait(500)
59 hub.display.number(2)
60 wait(500)
61
62 hub.display.off()
63 wait(1000)
64
65 hub.display.text("C3PO", 500, 50)
66
67 hub.display.off()
68 wait(2000)
Speaker¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10
11# store variables
12
13# --- RUNNING
14while True:
15 # read sensor data
16
17 # process data
18
19 # output data
20 hub.speaker.volume(100)
21 current_volume = str(hub.speaker.volume())
22 hub.display.text(current_volume)
23 hub.speaker.beep(440,500)
24
25 hub.speaker.volume(50)
26 current_volume = str(hub.speaker.volume())
27 hub.display.text(current_volume)
28 hub.speaker.beep(440,500)
29
30 oh_when_the_saints = [
31 "C4/4", "E4/4", "F4/4", "G4/1",
32 "C4/4", "E4/4", "F4/4", "G4/1",
33 "C4/4", "E4/4", "F4/4", "G4/2",
34 "E4/2", "C4/2", "E4/2", "D4/1",
35 "E4/4", "E4/4", "D4/4", "C4/2",
36 "C4/2", "E4/2", "G4/4", "G4/4", "G4/4", "F4/1",
37 "E4/4", "F4/4", "G4/2", "E4/2", "C4/2", "D4/2", "C4/1"
38 ]
39
40 hub.speaker.play_notes(oh_when_the_saints,180)
Motor Output¶
Motors Running Forever¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10left_motor = Motor(Port.E, Direction.CLOCKWISE)
11right_motor = Motor(Port.F, Direction.COUNTERCLOCKWISE)
12
13# store variables
14
15# --- RUNNING
16while True:
17 # read sensor data
18
19 # process data
20
21 # output data
22 left_motor.run(1000)
23 right_motor.run(1000)
24 wait(1000)
25
26 left_motor.dc(50)
27 right_motor.dc(50)
28 wait(1000)
Motors Stopping¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10left_motor = Motor(Port.E, Direction.CLOCKWISE)
11right_motor = Motor(Port.F, Direction.COUNTERCLOCKWISE)
12
13# store variables
14
15# --- RUNNING
16while True:
17 # read sensor data
18
19 # process data
20
21 # output data
22 hub.light.on(Color.GREEN)
23
24 left_motor.dc(100)
25 right_motor.dc(100)
26 wait(1000)
27
28 left_motor.stop()
29 right_motor.stop()
30 wait(500)
31
32 hub.light.on(Color.ORANGE)
33
34 left_motor.dc(100)
35 right_motor.dc(100)
36 wait(1000)
37
38 left_motor.brake()
39 right_motor.brake()
40 wait(500)
41
42 hub.light.on(Color.VIOLET)
43
44 left_motor.dc(100)
45 right_motor.dc(100)
46 wait(1000)
47
48 left_motor.hold()
49 right_motor.hold()
50 wait(500)
Motor Fixed Amount¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10left_motor = Motor(Port.E, Direction.CLOCKWISE)
11right_motor = Motor(Port.F, Direction.COUNTERCLOCKWISE)
12
13# store variables
14
15# --- RUNNING
16while True:
17 # read sensor data
18
19 # process data
20
21 # output data
22 hub.light.on(Color.BROWN)
23
24 left_motor.run_time(1000, 1000, Stop.COAST)
25 right_motor.run_time(1000, 1000, Stop.COAST)
26
27 hub.light.on(Color.VIOLET)
28
29 left_motor.run_angle(1000, 180)
30 right_motor.run_angle(1000, 180)
31
32 hub.light.on(Color.CYAN)
33
34 left_motor.reset_angle(0)
35 right_motor.reset_angle(0)
36 left_motor.run_target(1000, 180)
37 right_motor.run_target(1000, 180)
38
39 hub.light.on(Color.GRAY)
40
41 left_motor.reset_angle(0)
42 right_motor.reset_angle(0)
43 left_motor.track_target(180)
44 right_motor.track_target(180)
45
46 wait(1000)
Drive Base¶
Drive Base Setup¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10
11left_motor = Motor(Port.E, Direction.CLOCKWISE)
12right_motor = Motor(Port.F, Direction.COUNTERCLOCKWISE)
13my_robot = DriveBase(left_motor, right_motor, wheel_diameter=56, axle_track=80)
Driving Forever¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10
11left_motor = Motor(Port.E, Direction.CLOCKWISE)
12right_motor = Motor(Port.F, Direction.COUNTERCLOCKWISE)
13my_robot = DriveBase(left_motor, right_motor, wheel_diameter=56, axle_track=80)
14
15# store variables
16
17# --- RUNNING
18while True:
19 # read sensor data
20
21 # process data
22
23 # output data
24 hub.light.on(Color.WHITE)
25 my_robot.drive(1000, 0)
26 wait(500)
27
28 hub.light.on(Color.RED)
29 my_robot.drive(1000, -300)
30 wait(500)
31
32 my_robot.stop()
33 wait(1000)
34
35 hub.light.on(Color.WHITE)
36 my_robot.drive(1000, 0)
37 wait(500)
38
39 hub.light.on(Color.GREEN)
40 my_robot.drive(1000, 300)
41 wait(500)
42
43 my_robot.stop()
44 wait(1000)
Driving Fixed¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10
11left_motor = Motor(Port.E, Direction.CLOCKWISE)
12right_motor = Motor(Port.F, Direction.COUNTERCLOCKWISE)
13my_robot = DriveBase(left_motor, right_motor, wheel_diameter=56, axle_track=80)
14
15# store variables
16
17# --- RUNNING
18while True:
19 # read sensor data
20
21 # process data
22
23 # output data
24 hub.light.on(Color.YELLOW)
25 my_robot.settings(200, 200, 200, 200)
26 print(my_robot.settings())
27 my_robot.straight(200)
28 my_robot.turn(90)
29 my_robot.curve(100,180)
30
31 hub.light.on(Color.MAGENTA)
32 my_robot.settings(500, 500, 500, 500)
33 print(my_robot.settings())
34 my_robot.straight(200)
35 my_robot.turn(90)
36 my_robot.curve(100,180)
Hub Inputs¶
IMU Orientation¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10
11# store variables
12
13# --- RUNNING
14while True:
15 # read sensor data
16 up = hub.imu.up()
17 pitch, roll = hub.imu.tilt()
18
19 # process data
20
21 # output data
22 print(up, "\t", pitch, "\t", roll)
Motor as Sensor¶
Motor Measurement Example¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10left_motor = Motor(Port.E, Direction.CLOCKWISE)
11left_motor.reset_angle(0)
12
13# store variables
14
15# --- RUNNING
16while True:
17 # read sensor data
18 pressed = hub.buttons.pressed()
19
20 # process data
21
22 # output data
23 if Button.LEFT in pressed and Button.RIGHT in pressed:
24 print("Angel:", left_motor.angle())
25 left_motor.run_target(1000, 0)
26 print("Angel:", left_motor.angle())
27
28 elif Button.LEFT in pressed:
29 left_motor.run(300)
30 wait(250)
31 print("Speed:", left_motor.speed())
32 wait(500)
33 left_motor.stop()
34
35 elif Button.RIGHT in pressed:
36 left_motor.run(300)
37 if left_motor.stalled():
38 print("Stalled")
39 else:
40 print("Torque load:", left_motor.load())
41
42 else:
43 left_motor.stop()
Drive Base as Sensor¶
Drive Base Measurement Example¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10
11left_motor = Motor(Port.E, Direction.CLOCKWISE)
12right_motor = Motor(Port.F, Direction.COUNTERCLOCKWISE)
13my_robot = DriveBase(left_motor, right_motor, wheel_diameter=56, axle_track=80)
14my_robot.reset()
15
16# store variables
17mode_message = ""
18start_message = ""
19end_message = ""
20
21# --- RUNNING
22while True:
23 # read sensor data
24 pressed = hub.buttons.pressed()
25
26 # process data
27 if Button.LEFT in pressed:
28 distance, speed, angle, rate_of_turn = my_robot.state()
29 mode_message = "Curved drive"
30 start_message = "Start - distance: " + str(distance) + ", speed: " + str(speed) + ", angle: " + str(angle) + ", rate of turn: " + str(rate_of_turn)
31 my_robot.curve(100, 180)
32 distance, speed, angle, rate_of_turn = my_robot.state()
33 end_message = "End - distance: " + str(distance) + ", speed: " + str(speed) + ", angle: " + str(angle) + ", rate of turn: " + str(rate_of_turn)
34
35 elif Button.RIGHT in pressed:
36 distance = my_robot.distance()
37 mode_message = "Straight drive"
38 start_message = "Start distance: " + str(distance)
39 my_robot.straight(500)
40 distance = my_robot.distance()
41 end_message = "End distance: " + str(distance)
42
43 elif Button.BLUETOOTH in pressed:
44 angle = my_robot.angle()
45 mode_message = "Turn on spot"
46 start_message = "Start angle:" + str(angle)
47 my_robot.turn(-90)
48 angle = my_robot.angle()
49 end_message = "End angle:" + str(angle)
50
51 else:
52 my_robot.stop()
53
54 # output data
55 print(mode_message)
56 print("========================")
57 print(start_message)
58 print(end_message)
59 print()
Force Sensor¶
Force Sensor Example¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10force_sensor = ForceSensor(Port.A)
11
12# store variables
13
14# --- RUNNING
15while True:
16 # read sensor data
17 force_reading = round(force_sensor.force(), 1)
18 distance_reading = round(force_sensor.distance(), 1)
19 is_pressed = force_sensor.pressed(3)
20 is_touched = force_sensor.touched()
21
22 # process data
23
24 # output data
25 print(
26 "Force:", force_reading,
27 "\tDistance:", distance_reading,
28 "\tForce > 3:", is_pressed,
29 "\tTouched:", is_touched
30 )
Color Sensor¶
Color Sensor Example¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10color_sensor = ColorSensor(Port.D)
11
12# store variables
13modes = ["S", "L", "R", "A"]
14mode = 0
15
16# --- RUNNING
17while True:
18 # read sensor data
19 presses = hub.buttons.pressed()
20
21 if mode == 0:
22 mode_type = "Surface reading:"
23 colour_reading = color_sensor.color()
24 elif mode == 1:
25 mode_type = "Light source reading:"
26 colour_reading = color_sensor.color(False)
27 elif mode == 2:
28 mode_type = "Reflective light reading:"
29 colour_reading = color_sensor.reflection()
30 elif mode == 3:
31 mode_type = "Ambient light reading:"
32 colour_reading = color_sensor.ambient()
33
34
35 # process data
36 if Button.LEFT in presses and mode > 0:
37 mode -= 1
38 wait(250)
39 elif Button.RIGHT in presses and mode < 3:
40 mode += 1
41 wait(250)
42
43 # output data
44 hub.display.char(modes[mode])
45 print(mode_type, colour_reading)
46
47
48
Distance Sensor¶
Distance Sensor Example¶
1from pybricks.hubs import PrimeHub
2from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
3from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
4from pybricks.robotics import DriveBase
5from pybricks.tools import wait, StopWatch
6
7# --- SETUP
8# start components
9hub = PrimeHub()
10distance_sensor = UltrasonicSensor(Port.C)
11
12# store variables
13
14# --- RUNNING
15while True:
16 # read sensor data
17 distance = distance_sensor.distance()
18 present = distance_sensor.presence()
19
20 # process data
21
22 # output data
23 print("Distance:", distance, "\tDetected other sensor:", present)
24
25 distance_sensor.lights.off()
26 wait(100)
27 distance_sensor.lights.on(100)