Power Board API
There are a few things that can be done with the power board, namely current and voltage sensing, and beeping. See the Power Board hardware page for more details.
Accessing the Power Board
The power board can be accessed using the power_board
property of the Robot
object.
from sr.robot3 import Robot
robot = Robot()
my_power_board = robot.power_board
Power Outputs
Each of the power board’s controllable outputs has a constant whose name closely matches the name of the output, which can be imported from sr.robot3
:
- H0 :
OUT_H0
- H1 :
OUT_H1
- L0 :
OUT_L0
- L1 :
OUT_L1
- L2 : N/A (Not Controllable - This port is used to power the Brain Board)
- L3 :
OUT_L3
- 5V :
OUT_FIVE_VOLT
These are also available on the PowerOutputPosition
enum.
Both of the 5V outputs are controlled together.
All the ports are turned on when your code starts running, you can then control whether each output is turned on or off like so:
# Turn output H0 off
robot.power_board.outputs[OUT_H0].is_enabled = False
# Turn output L0 on
robot.power_board.outputs[OUT_L0].is_enabled = True
# Find out whether L3 is enabled
print(robot.power_board.outputs[OUT_L3].is_enabled)
# Find the current (in Amps) being used by L3
print(robot.power_board.outputs[OUT_L3].current)
You can also control all the outputs together:
robot.power_board.outputs.power_off()
robot.power_board.outputs.power_on()
Battery Status
The power board can report both the battery voltage, in Volts, and the current being drawn from it, in Amps. You can access these values like so:
# Print the battery voltage in volts
print(robot.power_board.battery_sensor.voltage)
# Print the battery current in amps
print(robot.power_board.battery_sensor.current)
- A fully charged battery will measure 12.6V.
- The power board will turn off and signal a low battery at 10.2V.
- The discharge curve is roughly linear between 11.4V and 10.4V.
Beeping
The power board has a piezo buzzer which can beep.
The buzz
function accepts multiple parameters, depending on what you want to play.
- The first argument is either the note you want to play, or the frequency of the buzzer in Hertz.
- The second argument is the duration of the beep, in seconds.
The Note
enum provides notes in scientific pitch notation between C6
and C8
.
You can play other tones by providing a frequency.
The frequency on the buzzer is limited from 8Hz to 10,000Hz
Calling buzz
is non-blocking, which means it doesn’t actually wait for the piezo to stop buzzing before continuing with your code.
If you want to wait for the buzzing to stop, use the blocking
argument.
from sr.robot3 import Note
# Beep for 0.5s in D.
robot.power_board.piezo.buzz(Note.D6, 0.5)
# Beep for 2s at 400Hz
robot.power_board.piezo.buzz(400, 2)
# Beep for 3s at 250Hz and wait for it to finish
robot.power_board.piezo.buzz(250, 3, blocking=True)
Start Button
You can manually wait for the start button to be pressed, not only at the start.
robot.wait_start()
This method will block until the start button is pressed. This may be useful for testing, but be sure to remove it in the competition, as you won’t be allowed to touch the start button after a match has begun!