Function Documentation
version 2.92
MPU
calibrate_gyro()
Description
Reads from the previous MPU offsets file unless the file does not exist. If an offsets file does not exist, then it will
create an offsets file by taking the average of multiple readings from the sensor. While running this function, make
sure Zumi is not moving and is resting on a flat surface. This function calls zumi.mpu.calibrate_MPU()
.
Syntax
calibrate_gyro()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.forward(40,2.0)
time.sleep(2)
zumi.calibrate_gyro()
time.sleep(2)
zumi.forward(40,2.0)
print("Done")
calibrate_MPU()
Description
Reads from the previous MPU offsets file unless the file does not exist. If an offsets file does not exist, then it will create an offsets file by taking the average of multiple readings from the sensor. While running this function, make sure Zumi is not moving and is resting on a flat surface.
Syntax
calibrate_MPU()
calibrate_MPU(count=100)
Parameters
integer count: the number of samples you want Zumi to take. Increase to improve accuracy.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
#Zumi will take 500 samples/readings
zumi.mpu.calibrate_MPU(count=500)
#this is the order the offsets will be printed
print("angular speed rad/sec Gx,Gy,Gz")
print("linear acceleration Ax,Ay,Az")
#print the offsets of each Axis
zumi.mpu.print_offsets()
get_orientation()
Description
Uses the acceleration values to find Zumi's orientation with respect to the strongest force being applied to Zumi (gravity).
Syntax
get_orientation()
Parameters
None
Returns
integer Orientation state:
-1 = unknown
0 = probably falling or moving between states
1 = camera straight up
2 = camera facing down
3 = on right side
4 = on left side
5 = wheels on floor
6 = wheels facing up (upside down)
7 = accelerating faster than 1g
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
#grab zumi and place it on any side
#example: upside down, on its nose etc.
for i in range(20):
orientation = zumi.get_orientation()
print(orientation)
time.sleep(0.5)
print(" done ")
read_x_angle()
Description
Calls update_angles()
and returns only the x-angle.
Syntax
read_x_angle()
Parameters
None
Returns
float x-angle: The current x-angle of the Zumi
Example Code
#Python code
from zumi.zumi import Zumi
import IPython.display
zumi = Zumi()
for i in range(100):
print(zumi.read_x_angle())
IPython.display.clear_output(wait=True)
print("done")
read_y_angle()
Description
Calls update_angles()
and returns only the y-angle.
Syntax
read_y_angle()
Parameters
None
Returns
float y-angle: The current y-angle of the Zumi
Example Code
#Python code
from zumi.zumi import Zumi
import IPython.display
zumi = Zumi()
for i in range(100):
print(zumi.read_y_angle())
IPython.display.clear_output(wait=True)
print("done")
read_z_angle()
Description
Calls update_angles()
and returns only the z-angle.
Syntax
read_z_angle()
Parameters
None
Returns
float z-angle: The current z-angle of the Zumi
Example Code
#Python code
from zumi.zumi import Zumi
import IPython.display
zumi = Zumi()
for i in range(100):
print(zumi.read_z_angle())
IPython.display.clear_output(wait=True)
print("done")
reset_drive()
Description
Calls both reset_PID()
and reset_gyro()
.
Syntax
reset_drive()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,50):
zumi.forward_step(0,50)
print(zumi.angle_list[2],", ", zumi.error_past)
zumi.stop()
zumi.reset_drive()
print(" Now ")
print(zumi.angle_list[2],", ", zumi.error_past)
reset_gyro()
Description
Resets all values in the angle list to 0. Use for driving straight or turning accurately.
Syntax
reset_gyro()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
print("z angle " , zumi.angle_list[2])
zumi.turn_left(90,1.2)
print("z angle " , zumi.angle_list[2])
zumi.reset_gyro()
print("z angle " , zumi.angle_list[2])
reset_PID()
Description
Resets the sum of the gyro error to zero as well as the PID error sum. Use for driving straight or turning accurately. This does not reset the P, I, and D values of the Zumi PID control.
Syntax
reset_PID()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
for i in range(0,50):
zumi.go_straight(50,0)
# print the error of the z angle along with some of the PID accumulators
print(zumi.PID_time_past,", ", zumi.error_past,", ", zumi.error_sum," , ", zumi.angle_list[2])
zumi.stop()
# this will reset those values
zumi.reset_PID()
print(" Now ")
print(zumi.PID_time_past,", ", zumi.error_past,", ", zumi.error_sum, " , ", zumi.angle_list[2])
update_angles()
Description
Reads angular speeds and updates the list of angles:
The first 3 are angles produced from the gyroscope readings.
X angle, Y angle and Z angle in degrees.
The next 2 angles are produced by finding the tilt with respect to gravity.
X and Y acceleration angles in degrees. Work well if Zumi's wheels point to the floor
The next 2 angles are the complementary filtered angles are produced by combining both gyroscope and accelerometer angles for the x and y axis.
The next 3 are the rotation angles which are produced using the accelerometer.
rotation along X, Y and Z with respect to gravity.
The last one is the tilt state.
Syntax
update_angles()
Parameters
None
Returns
list angles: The updated list of angles in the following format, [Gyro x,Gyro y,Gyro z,Acc x,Acc y,Comp x,Comp y,Rot_x,Rot_y,Rot_z,tilt_state]
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
angles = zumi.update_angles()
z_angle = angles[2]
print(z_angle)
print(" done ")
Sensors
back_left_detect()
Description
Returns True if the back left IR sensor detects a value below a threshold. The value decreases as the light reflected back to the receiver increases.
Syntax
back_left_detect()
back_left_detect(threshold=100)
Parameters
integer threshold: Threshold value (0 - 255) of the back left IR sensor
Returns
boolean detected: Returns True if sensor is triggered.
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
if zumi.back_left_detect():
print("Detected!")
time.sleep(0.1) # Delay for I2C
back_right_detect()
Description
Returns True if the back right IR sensor detects a value below a threshold. The value decreases as the light reflected back to the receiver increases.
Syntax
back_right_detect()
back_right_detect(threshold=100)
Parameters
integer threshold: Threshold value (0 - 255) of the back right IR sensor
Returns
boolean detected: Returns True if sensor is triggered.
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
if zumi.back_right_detect():
print("Detected!")
time.sleep(0.1) # Delay for I2C
bottom_left_detect()
Description
Returns True if the bottom left IR sensor detects a value below a threshold. The value decreases as the light reflected back to the receiver increases.
Syntax
bottom_left_detect()
bottom_left_detect(threshold=100)
Parameters
integer threshold: Threshold value (0 - 255) of the bottom left IR sensor
Returns
boolean detected: Returns True if sensor is triggered.
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
if zumi.bottom_left_detect():
print("Detected!")
time.sleep(0.1) # Delay for I2C
bottom_right_detect()
Description
Returns True if the bottom right IR sensor detects a value below a threshold. The value decreases as the light reflected back to the receiver increases.
Syntax
bottom_right_detect()
bottom_right_detect(threshold=100)
Parameters
integer threshold: Threshold value (0 - 255) of the bottom right IR sensor
Returns
boolean detected: Returns True if sensor is triggered.
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
if zumi.bottom_right_detect():
print("Detected!")
time.sleep(0.1) # Delay for I2C
calibrate_gyro()
Description
Reads from the previous MPU offsets file unless the file does not exist. If an offsets file does not exist, then it will
create an offsets file by taking the average of multiple readings from the sensor. While running this function, make
sure Zumi is not moving and is resting on a flat surface. This function calls zumi.mpu.calibrate_MPU()
.
Syntax
calibrate_gyro()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.forward(40,2.0)
time.sleep(2)
zumi.calibrate_gyro()
time.sleep(2)
zumi.forward(40,2.0)
print("Done")
calibrate_MPU()
Description
Reads from the previous MPU offsets file unless the file does not exist. If an offsets file does not exist, then it will create an offsets file by taking the average of multiple readings from the sensor. While running this function, make sure Zumi is not moving and is resting on a flat surface.
Syntax
calibrate_MPU()
calibrate_MPU(count=100)
Parameters
integer count: the number of samples you want Zumi to take. Increase to improve accuracy.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
#Zumi will take 500 samples/readings
zumi.mpu.calibrate_MPU(count=500)
#this is the order the offsets will be printed
print("angular speed rad/sec Gx,Gy,Gz")
print("linear acceleration Ax,Ay,Az")
#print the offsets of each Axis
zumi.mpu.print_offsets()
front_left_detect()
Description
Returns True if the front left IR sensor detects a value below a threshold. The value decreases as the light reflected back to the receiver increases.
Syntax
front_left_detect()
front_left_detect(threshold=100)
Parameters
integer threshold: Threshold value (0 - 255) of the front left IR sensor
Returns
boolean detected: Returns True if sensor is triggered.
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
if zumi.front_left_detect():
print("Detected!")
time.sleep(0.1) # Delay for I2C
front_right_detect()
Description
Returns True if the front right IR sensor detects a value below a threshold. The value decreases as the light reflected back to the receiver increases.
Syntax
front_left_detect()
front_left_detect(threshold=100)
Parameters
integer threshold: Threshold value (0 - 255) of the front right IR sensor
Returns
boolean detected: Returns True if sensor is triggered.
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
if zumi.front_right_detect():
print("Detected!")
time.sleep(0.1) # Delay for I2C
get_all_IR_data()
Description
Returns the readings from all 6 IR sensors.
Syntax
get_all_IR_data()
Parameters
None
Returns
list IR sensor readings: list of all 6 IR sensor values (0 - 255)
IR sensor indices:
index 0 - Front right sensor
index 1 - Bottom right sensor
index 2 - Back right sensor
index 3 - Bottom left sensor
index 4 - Back left sensor
index 5 - Front left sensor
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
ir_readings = zumi.get_all_IR_data()
print(ir_readings)
time.sleep(0.1) # Delay for I2C
get_battery_voltage()
Description
Get the reading from battery level.
If you are charging Zumi RED LED ON you will see roughly 1.1-1.20 volts.
The battery should reach a max of 4.20 volts and the lowest it should ever reach is 3.0 volts. These values will only show up if the switch is in the on position and the RED led is not visible.
Syntax
get_battery_voltage()
Parameters
None
Returns
float voltage: The battery's voltage in units of Volts.
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,10):
# battery level is updated every 500ms or half a second
time.sleep(0.5)
battery = zumi.get_battery_voltage()
print(battery)
get_IR_data()
Description
Get the reading from the IR sensors and the index specified.
Syntax
get_IR_data(ir_sensor_index)
Parameters
integer ir_sensor_index: The specified index (0 - 5) from the IR sensors reading list.
IR sensor indices:
- 0 IR.FRONT_RIGHT = Front right sensor
- 1 IR.BOTTOM_RIGHT = Bottom right sensor
- 2 IR.BACK_RIGHT = Back right sensor
- 3 IR.BOTTOM_LEFT = Bottom left sensor
- 4 IR.BACK_LEFT = Back left sensor
- 5 IR.FRONT_LEFT = Front left sensor
Returns
integer IR sensor reading: IR sensor value for the given sensor (0 - 255).
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
FRONT_RIGHT = 0
for i in range(5):
zumi.forward(40,1)
ir_reading = zumi.get_IR_data(FRONT_RIGHT)
print(ir_reading)
# Divide by 4 because note is between 0 and 60
time.sleep(0.05)
get_orientation_message()
Description
Uses the acceleration values to find Zumi's orientation with respect to the strongest force being applied to Zumi (gravity). This function returns the orientation as a string.
Syntax
get_orientation_message()
Parameters
None
Returns
string orientation state: a description of the orientation state
Descriptions of rientation state:
"unknown"
"face up"
"face down"
"right side down"
"left side down"
"upright"
"upside down"
"accelerating"
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
#grab zumi and place it on any side
#example: upside down, on its nose etc.
for i in range(20):
orientation = zumi.get_orientation_message()
print(orientation)
time.sleep(0.5)
print(" done ")
get_orientation()
Description
Uses the acceleration values to find Zumi's orientation with respect to the strongest force being applied to Zumi (gravity).
Syntax
get_orientation()
Parameters
None
Returns
integer Orientation state:
-1 = unknown
0 = probably falling or moving between states
1 = camera straight up
2 = camera facing down
3 = on right side
4 = on left side
5 = wheels on floor
6 = wheels facing up (upside down)
7 = accelerating faster than 1g
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
#grab zumi and place it on any side
#example: upside down, on its nose etc.
for i in range(20):
orientation = zumi.get_orientation()
print(orientation)
time.sleep(0.5)
print(" done ")
read_x_angle()
Description
Calls update_angles()
and returns only the x-angle.
Syntax
read_x_angle()
Parameters
None
Returns
float x-angle: The current x-angle of Zumi
Example Code
#Python code
from zumi.zumi import Zumi
import IPython.display
zumi = Zumi()
for i in range(100):
print(zumi.read_x_angle())
IPython.display.clear_output(wait=True)
print("done")
read_y_angle()
Description
Calls update_angles()
and returns only the y-angle.
Syntax
read_y_angle()
Parameters
None
Returns
float x-angle: The current y-angle of Zumi
Example Code
#Python code
from zumi.zumi import Zumi
import IPython.display
zumi = Zumi()
for i in range(100):
print(zumi.read_y_angle())
IPython.display.clear_output(wait=True)
print("done")
read_z_angle()
Description
Calls update_angles()
and returns only the z-angle.
Syntax
read_z_angle()
Parameters
None
Returns
float x-angle: The current z-angle of Zumi
Example Code
#Python code
from zumi.zumi import Zumi
import IPython.display
zumi = Zumi()
for i in range(100):
print(zumi.read_z_angle())
IPython.display.clear_output(wait=True)
print("done")
reset_drive()
Description
Calls both reset_PID()
and reset_gyro()
.
Use for driving straight or turning accurately.
Syntax
reset_drive()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,50):
zumi.forward_step(0,50)
print(zumi.angle_list[2],", ", zumi.error_past)
zumi.stop()
zumi.reset_drive()
print(" Now ")
print(zumi.angle_list[2],", ", zumi.error_past)
reset_gyro()
Description
Resets all values in the angle list to 0. Use for driving straight or turning accurately.
Syntax
reset_gyro()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
print("z angle " , zumi.angle_list[2])
zumi.turn_left(90,1.2)
print("z angle " , zumi.angle_list[2])
zumi.reset_gyro()
print("z angle " , zumi.angle_list[2])
reset_PID()
Description
Resets the sum of the gyro error to zero as well as the PID error sum. Use for driving straight or turning accurately. This does not reset the P, I, and D values of the Zumi PID control.
Syntax
reset_PID()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
for i in range(0,50):
zumi.go_straight(50,0)
#print the error of the z angle along with some of the PID accumulators
print(zumi.PID_time_past,", ", zumi.error_past,", ", zumi.error_sum," , ", zumi.angle_list[2])
zumi.stop()
#this will reset those values
zumi.reset_PID()
print(" Now ")
print(zumi.PID_time_past,", ", zumi.error_past,", ", zumi.error_sum, " , ", zumi.angle_list[2])
update_angles()
Description
Reads angular speeds and updates the list of angles:
The first 3 are angles produced from the gyroscope readings.
X angle, Y angle and Z angle in degrees.
The next 2 angles are produced by finding the tilt with respect to gravity.
X and Y acceleration angles in degrees. Work well if Zumi's wheels point to the floor
The next 2 angles are the complementary filtered angles are produced by combining both gyroscope and accelerometer angles for the x and y axis.
The next 3 are the rotation angles which are produced using the accelerometer.
rotation along X, Y and Z with respect to gravity.
The last one is the tilt state.
Syntax
update_angles()
Parameters
None
Returns
list angles: The updated list of angles in the following format, [Gyro x,Gyro y,Gyro z,Acc x,Acc y,Comp x,Comp y,Rot_x,Rot_y,Rot_z,tilt_state]
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
for i in range(0,100):
angles = zumi.update_angles()
z_angle = angles[2]
print(z_angle)
print(" done ")
Driving
circle_left()
Description
Drives Zumi in a counterclockwise circle.
Syntax
circle_left()
circle_left(speed=30, step=2)
Parameters
integer speed: The driving speed (0 - 80)
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.circle_left(step=3)
circle_right()
Description
Drives Zumi in a clockwise circle.
Syntax
circle_right()
circle_right(speed=30, step=2)
Parameters
integer speed: The driving speed (0 - 80)
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.circle_right(step=3)
circle()
Description
Drives Zumi in a circle (counterclockwise by default).
Syntax
circle()
circle(speed=30, step=2, direction=1, delay=0.02)
Parameters
integer speed: The driving speed (0 - 80)
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
integer direction: -1 for clockwise and +1 for counterclockwise
float delay: The time delay between each angle step
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.circle(speed=60, step=4, direction=-1)
control_motors()
Description
Sets the speed of each individual motor. The changes take place immediately. This function does not include a stop command or any sensor feedback.
Syntax
control_motors(right,left)
Parameters
integer right: The speed value of the right motor (-126-127). Positive values for forward, negative values for reverse.
integer left: The speed value of the left motor (-126-127). Positive values for forward, negative values for reverse.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.control_motors(30,30)
time.sleep(2)
zumi.stop()
drive_over_markers()
Description
Zumi will drive over the specified number of alternating black and white horizontal lines at least 2 centimeters wide. Zumi will stop when the number of markers have been crossed or if the timeout ends, whichever is first. (Avoid making the speed very high, zumi will most likely overshoot since it has a lot of speed)
Syntax
zumi.drive_over_markers(5)
zumi.drive_over_markers(road_markers=3,speed=10,ir_threshold=120,time_out=3)
Parameters
integer road_markers: The number of road markers to drive over
integer speed: The speed value (0 - 80)
integer ir_threshold: The IR threshold value for the bottom left IR sensors to detect black or white.
integer time_out: Number of seconds before the timeout ends and Zumi stops driving.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
#must start off in a black area.
zumi.drive_over_markers(5)
#Drive over 10 road marker with a timeout of 6 seconds
zumi.drive_over_markers(5,40,100,3)
figure_8()
Description
Drives Zumi in a figure 8.
Syntax
figure_8()
figure_8(speed=30, step=3, delay=0.02)
Parameters
integer speed: The driving speed (0 - 80)
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
float delay: The time delay between each angle step
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.figure_8(step=5)
forward_avoid_collision()
Description
Drives Zumi forward at a default speed of 40 for 1 second in the direction Zumi is currently facing. If either of the front IR sensor values go below the threshold, Zumi will stop even if the duration or timeout is not complete.
Syntax
forward_avoid_collision(speed=40, duration=1.0)
forward_avoid_collision(speed=40, duration=1.0, desired_angle=None, left_th=150, right_th=150)
Parameters
integer speed: The driving speed value (0 - 80)
float duration: Number of seconds Zumi will drive and check for collision
integer desired_angle: Heading or desired angle, in degrees (Default to None which is Zumi's current heading)
integer left_th: threshold of the front left IR sensor (0 - 255)
integer right_th: threshold of the front right IR sensor (0 - 255)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.forward_avoid_collision(40,2)
forward_step()
Description
Takes one drive "step" to correct for the set heading. This function only works when called inside of a loop.
Syntax
forward_step(speed, desired_angle)
forward_step(speed, desired_angle, max_speed=127)
Parameters
integer speed: The drive speed value (0 - 127); must be below the max_speed
integer desired_angle: heading (0 degrees is defined when the Zumi object is created.)
integer max_speed: Caps the max speed. Default to 127.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
for i in range(0, 200):
zumi.forward_step(40,20)
zumi.stop()
forward()
Description
Drives Zumi forward at a default speed of 40 for 1 second in the direction Zumi is currently facing.
Syntax
forward()
forward(speed=40, duration=1.0, desired_angle=None)
Parameters
integer speed: The driving speed value (0 - 80)
float duration: Number of seconds Zumi will drive forward
integer desired_angle: Heading or desired angle, in degrees, to drive in (When None is selected Zumi drives wherever she is facing)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward()
time.sleep(1)
zumi.forward(speed=50)
time.sleep(1)
zumi.forward(duration=2.1)
time.sleep(1)
funnel_align()
Description
Zumi will try to align to the funnel piece on the competition field (Click here for a PDF version).
Syntax
funnel_align(speed=20, duration=1.0)
funnel_align(speed=20, duration=1, angle=None, angle_adj=2, l_th=100, r_th=100)
Parameters
integer speed: The driving speed value (0 - 80)
float duration: Number of seconds Zumi will try to align to the funnel piece
integer angle: Heading or desired angle, in degrees, (Default to None which is Zumi's current heading)
integer angle_adj: The angle, in degrees, Zumi will turn if one IR sensor detects white
integer l_th: threshold of the bottom left IR sensor (0 - 255)
integer r_th: threshold of the bottom right IR sensor (0 - 255)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.funnel_align(speed=10,duration=3,angle_adj=1.1)
go_reverse()
Description
Takes one drive "step" in reverse to correct for the set heading. This function only works when called inside of a loop.
Syntax
go_reverse(speed, desired_angle)
go_reverse(speed, desired_angle, max_speed=127)
Parameters
integer speed: Drive speed (0 - 127); must be below the max_speed
integer desired_angle: heading (0 degrees is defined when the Zumi object is created.)
integer max_speed: Caps the max speed. Default to 127.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
for i in range(0, 200):
zumi.go_reverse(40,0)
zumi.stop()
go_straight()
Description
Takes one drive "step" to correct for the set heading. This function only works when called inside of a loop.
Syntax
go_straight(speed, desired_angle)
go_straight(speed, desired_angle, max_speed=127)
Parameters
integer speed: Drive speed (0 - 127); must be below the max_speed
integer desired_angle: heading (0 degrees is defined when the Zumi object is created.)
integer max_speed: Caps the max speed. Default to 127.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
for i in range(0, 200):
zumi.go_straight(40,0)
zumi.stop()
j_turn()
Description
Drives Zumi in a j-turn.
Syntax
j_turn()
j_turn(speed=80, step=4, delay=0.005)
Parameters
integer speed: The forward speed (0 - 80)
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
float delay: The time delay between each angle step
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.j_turn(speed=60, delay=0.003)
left_u_turn()
Description
Drives Zumi in a left u-turn.
Syntax
left_u_turn()
left_u_turn(speed=30, step=4, delay=0.02)
Parameters
integer speed: The forward speed (0 - 80)
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
float delay: The time delay between each angle step
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.left_u_turn()
time.sleep(1)
zumi.left_u_turn(step=3)
line_follower()
Description
On the road, Zumi uses the camera to detect lanes and stay inside of them.
Syntax
zumi.line_follower(duration=3, left_thresh=100,right_thresh=100)
Parameters
integer duration: Number of seconds Zumi will drive on the line
integer left_thresh: threshold of the bottom left IR sensor. By default, threshold is 100
integer right_thresh: threshold of the bottom right IR sensor. By default, threshold is 100
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.line_follower(3)
zumi.line_follower(3, left_thresh=100,right_thresh=100)
line_follow_gyro_assist()
Description
Drives Zumi forward at a default speed of 20 for 1 second in the direction Zumi is currently facing. Zumi will stop when the duration or timeout is over. If the bottom IR sensors detect a black line, Zumi will continue to drive. If one or the other sensor detects white, Zumi will auto-adjust to stay on the line. If both sensors detect white, Zumi will stop even if the duration has not been met.
Syntax
line_follow_gyro_assist(speed=20, duration=1.0)
line_follow_gyro_assist(speed=20, duration=1, angle=None, angle_adj=2, l_th=100, r_th=100)
Parameters
integer speed: The drive speed value (0 - 80)
integer duration: Number of seconds Zumi will drive on the line
integer angle: Heading or desired angle, in degrees (default is None which is Zumi's current heading)
integer angle_adj: The number of degrees Zumi will turn if one IR sensor detects white.
integer l_th: threshold of the bottom left IR sensor.
integer r_th: threshold of the bottom right IR sensor.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.line_follow_gyro_assist(speed=10,duration=3,angle_adj=1.1)
move_centimeters()
Description
This method uses a best fit linear approximation of the distance traveled over time. It uses the equation y = mx + b, where:
- y is the distance traveled
- m is the predicted speed in centimeters per second
- x is the time elapsed
- b is the slope intercept
If the PID values are not set the internal default values will be set.
If the angle is not input Zumi will drive to whatever angle it is currently facing.
Syntax
move_centimeters(distance, angle)
move_centimeters(distance, angle=None, k_p=None, k_i=None, k_d=None)
Parameters
float distance: the distance in centimeters you want to travel
integer angle: heading, in degrees (0 degrees is defined when the Zumi object is created.) Default to None
float k_p: P-gain. Default to None.
float k_i: I-gain. Default to None.
float k_d: D-gain. Default to None.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.move_centimeters(10)
zumi.move_centimeters(10,90)
zumi.move_centimeters(15,0)
move_inches()
Description
This method uses a best fit linear approximation of the distance traveled over time. It uses the equation y = mx + b, where:
- y is the distance traveled
- m is the predicted speed in inches per second
- x is the time elapsed
- b is the slope intercept
If the PID values are not set the internal default values will be set.
If the angle is not input Zumi will drive to whatever angle it is currently facing.
Syntax
move_inches(distance, angle)
move_inches(distance, angle=None, k_p=None, k_i=None, k_d=None)
Parameters
float distance: the distance in inches you want to travel
integer angle: heading, in degrees (0 degrees is defined when the Zumi object is created.) Default to None
float k_p: P-gain. Default to None.
float k_i: I-gain. Default to None.
float k_d: D-gain. Default to None.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.move_inches(5)
zumi.move_inches(6,90)
zumi.move_inches(5,0)
move_to_coordinate()
Description
This method drives Zumi from an origin to an x,y position in inches. Using this function will keep track of Zumi's coordinates. To reset the origin, use the reset_coordinate() function. This method uses a best fit linear approximation of the distance traveled over time. It uses the equation y = mx + b, where:
- y is the distance traveled
- m is the predicted speed in inches per second
- x is the time elapsed
- b is the slope intercept
Syntax
move_to_coordinate(desired_x, desired_y)
move_to_coordinate(desired_x, desired_y, k_p=None, k_i=None, k_d=None, units="in"):
Parameters
float desired_x: The x-coordinate of the destination
float desired_y: The y-coordinate of the destination
float k_p: P-gain. Default to None.
float k_i: I-gain. Default to None.
float k_d: D-gain. Default to None.
string units: Defaults to "in" or inches. Set it to "cm" for centimeters.
Returns
None
Example Code Sample 1
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
# a square
zumi.move_to_coordinate(6,0)
zumi.move_to_coordinate(6,6)
zumi.move_to_coordinate(0,6)
zumi.move_to_coordinate(0,0)
Sample 2
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
# Avoid this
zumi.move_to_coordinate(10,0)
time.sleep(1)
# zumi wont drive the second time since its already at (10, 0)
zumi.move_to_coordinate(10,0)
Sample 3
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
# Avoid this
zumi.move_to_coordinate(10,0)
time.sleep(1)
zumi.reset_coordinate()
# zumi will drive the second time since its position will be reset, and will move a total of 20 inches from the start
zumi.move_to_coordinate(10,0)
parallel_park()
Description
Drives Zumi in a parallel park maneuver.
Syntax
parallel_park()
parallel_park(speed=15, step=1, delay=0.01)
Parameters
integer speed: Drive speed (0 - 80)
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
float delay: The time delay between each angle step
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,2)
zumi.parallel_park(speed=20, step=2)
rectangle_left()
Description
Drives Zumi in a counterclockwise rectangle.
Syntax
rectangle_left()
rectangle_left(speed=40, seconds=1.0, ratio=2)
Parameters
integer speed: Drive speed between (0 - 80)
float seconds: Duration in seconds for shorter side
float ratio: Ratio of longer side to shorter side (Multiply ratio
by seconds
to get the duration of the longer side)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.rectangle_left(ratio=3)
rectangle_right()
Description
Drives Zumi in a clockwise rectangle.
Syntax
rectangle_right()
rectangle_right(speed=40, seconds=1.0, ratio=2)
Parameters
integer speed: Drive speed between (0 - 80)
float seconds: Duration in seconds for shorter side
float ratio: Ratio of longer side to shorter side (Multiply ratio
by seconds
to get the duration of the longer side)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.rectangle_right(ratio=3)
rectangle()
Description
Drives Zumi in a rectangle.
Syntax
rectangle()
rectangle(speed=40, seconds=1.0, direction=1, ratio=2)
Parameters
integer speed: Drive speed between (0 - 80)
float seconds: Duration in seconds for shorter side
integer direction: direction of turn (1 for counterclockwise and -1 for clockwise)
float ratio: Ratio of longer side to shorter side (Multiply ratio
by seconds
to get the duration of the longer side)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.forward(40,1)
zumi.rectangle(ratio=3)
reset_coordinate()
Description
Will reset the coordinate to (0,0).
Syntax
reset_coordinate()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.move_to_coordinate(10,0)
zumi.reset_coordinate()
#zumi will drive another 10 inches
zumi.move_to_coordinate(10,0)
reverse_avoid_collision()
Description
Drives Zumi in reverse at a default speed of 40 for 1 second in the direction Zumi is currently facing. If either of the back IR sensor values go below the threshold, Zumi will stop even if the duration or timeout is not complete.
Syntax
reverse_avoid_collision(speed=40, duration=1.0)
reverse_avoid_collision(speed=40, duration=1.0, desired_angle=None, left_th=150, right_th=150)
Parameters
integer speed: Driving speed (0 - 80)
float duration: Number of seconds Zumi will drive and check for collision
integer desired_angle: Heading or desired angle, in degrees (Default to None which is Zumi's current heading)
integer left_th: threshold of the back left IR sensor
integer right_th: threshold of the back right IR sensor
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.reverse_avoid_collision(40,2)
reverse_step()
Description
Takes one drive "step" in reverse to correct for the set heading. This function only works when called inside of a loop.
Syntax
reverse_step(speed, desired_angle)
reverse_step(speed, desired_angle, max_speed=127)
Parameters
integer speed: Drive speed between (0 - 127); must be below the max_speed
integer desired_angle: heading, in degrees (0 degrees is defined when the Zumi object is created.)
integer max_speed: Caps the max speed. Default to 127.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
for i in range(50):
zumi.reverse_step(40,0)
zumi.stop()
reverse()
Description
Drives Zumi in reverse at a default speed of 40 for 1 second in the direction Zumi is currently facing.
Syntax
reverse()
reverse(speed=40, duration=1.0, desired_angle=None)
Parameters
integer speed: Driving speed between (0 - 80)
float duration: Number of seconds Zumi will drive reverse
integer desired_angle: Heading or desired angle to drive in, in degrees (When None is selected Zumi drives wherever she is facing)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.reverse()
time.sleep(1)
zumi.reverse(speed=50)
time.sleep(1)
zumi.reverse(duration=2.1)
time.sleep(1)
zumi.reverse(50,2.1,45)
right_u_turn()
Description
Drives Zumi in a right u-turn.
Syntax
right_u_turn()
right_u_turn(speed=30, step=4, delay=0.02)
Parameters
integer speed: Driving speed value (0 - 80)
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
float delay: The time delay between each angle step.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.right_u_turn(speed=20)
time.sleep(1)
zumi.right_u_turn(delay=0.04)
smooth_forward()
Description
Causes Zumi to gradually accelerate forward to max speed during a given duration before decelerating back to zero.
Syntax
smooth_forward(duration)
smooth_forward(duration, rate=1)
Parameters
float duration: Total duration of drive command including acceleration and deceleration
float rate: rate at which speed changes. Default to 1
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.smooth_forward(3)
time.sleep(1)
zumi.smooth_forward(duration=3,rate=2)
smooth_reverse()
Description
Causes Zumi to gradually accelerate in reverse to max speed during a given duration before decelerating back to zero.
Syntax
smooth_reverse(duration)
smooth_reverse(duration, rate=1)
Parameters
float duration: Total duration of drive command including acceleration and deceleration
float rate: Rate at which speed changes. Default to 1
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.smooth_reverse(3)
time.sleep(1)
zumi.smooth_reverse(duration=3,rate=2)
smooth_turn_left()
Description
Turns left gradually to reach the desired angle while also going forward. Default to 90 degrees.
Syntax
smooth_turn_left()
smooth_turn_left(desired_angle=90,speed=20,step=2)
Parameters
integer desired_angle: Degrees you want to turn from your starting position
integer speed: Driving speed (0 - 80). Default to 20.
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.smooth_turn_left()
time.sleep(1)
zumi.smooth_turn_left(speed=30)
smooth_turn_right()
Description
Turns right gradually to reach the desired angle while also going forward. Default to 90 degrees.
Syntax
smooth_turn_right()
smooth_turn_right(desired_angle=90,speed=20,step=2)
Parameters
integer desired_angle: Degrees you want to turn from your starting position
integer speed: Driving speed between 0 and 80. Default to 20.
integer step: The angle step size (decrease for wider turns, increase for tighter turns)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.smooth_turn_right()
time.sleep(1)
zumi.smooth_turn_right(speed=30)
speed_calibration()
Description
In order to use this method you will need a speed calibration sheet (Click here for a PDF version). Zumi will drive over 5 horizontal white lines that are 2 centimeters wide. The slope and y_intercept will be generated for the best fit line of the speed prediction. These values will be saved to the Zumi as a text file.
This function is necessary for move_to_coordinate(), move_inches(), and move_centimeters().
Syntax
speed_calibration()
speed_calibration(speed=40, ir_threshold=100, time_out=3, cm_per_brick=2, show_graphs=False)
Parameters
integer speed: Driving speed value (0 - 80). The lower the more accurate the speed prediction.
integer ir_threshold: Integer value for the bottom left IR threshold (0-255).
float time_out: The number of seconds before the timeout.
float cm_per_brick: The width of each road marker in centimeters.
boolean show_graphs: Defaults to False. If set to True, a graph will be displayed with the best fit line prediction. *Note: You may need to run this function twice to see the graph.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
# Place Zumi on the black portion of the speed calibration sheet
zumi.speed_calibration()
# To show the graphs, replace the original "zumi.speed_calibration" with the following line
# zumi.speed_calibration(show_graphs = True)
square_left()
Description
Drives Zumi in a counterclockwise square.
Syntax
square_left()
square_left(speed=40, seconds=1.0)
Parameters
integer speed: Drive speed value (0 - 80)
float seconds: Duration in seconds Zumi drives for each side
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.square_left(seconds=1.5)
square_right()
Description
Drives Zumi in a clockwise square.
Syntax
square_right()
square_right(speed=40, seconds=1.0)
Parameters
integer speed: Drive speed value (0 - 80)
float seconds: Duration in seconds Zumi drives for each side
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.square_right(seconds=1.5)
square()
Description
Drives Zumi in a square. Default to counterclockwise.
Syntax
square()
square(speed=40, seconds=1, direction=1)
Parameters
integer speed: Drive speed between 0-80
float seconds: Duration in seconds Zumi drives for each side
integer direction: Direction of turn (-1 for clockwise and +1 for counterclockwise)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.square(seconds=1.0)
time.sleep(1)
zumi.square(speed=60,seconds=1.2)
stop()
Description
Stops Zumi's motors immediately.
Syntax
stop()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
for i in range(0, 30):
zumi.go_straight(30,0)
zumi.stop()
triangle_left()
Description
Drives Zumi in a counterclockwise triangle.
Syntax
triangle_left()
triangle_left(speed=40, seconds=1.5)
Parameters
integer speed: Drive speed value (0 - 80)
float seconds: Duration in seconds Zumi drives for each side
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.triangle_left(speed=30)
triangle_right()
Description
Drives Zumi in a clockwise triangle.
Syntax
triangle_right()
triangle_right(speed=40, seconds=1.5)
Parameters
integer speed: Drive speed value (0 - 80)
float seconds: Duration in seconds Zumi drives for each side
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.triangle_right(speed=30)
triangle()
Description
Drives Zumi in a triangle. Default is counterclockwise.
Syntax
triangle()
triangle(speed=40, seconds=1.5, direction=1)
Parameters
integer speed: Drive speed value (0 - 80)
float seconds: Duration in seconds Zumi drives for each side
integer direction: Direction of turn (-1 for clockwise and +1 for counterclockwise)
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.triangle(speed=30, direction=-1)
turn_left()
Description
Causes Zumi to turn left the specified number of degrees. Default to 90 degrees.
Syntax
turn_left()
turn_left(desired_angle=90, duration=1.0)
Parameters
integer desired_angle: Degrees you want to turn to the left from your starting position. Default to 90. Only positive values.
float duration: The amount of time in seconds Zumi will try and complete the turn. Increase for turns greater than 90 degrees.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.turn_left()
time.sleep(1)
zumi.turn_left(130,1.5)
turn_right()
Description
Causes Zumi to turn right the specified number of degrees. Default to 90 degrees.
Syntax
turn_right()
turn_right(desired_angle=90,duration=1.0)
Parameters
integer desired_angle: Degrees you want to turn to the right from your starting position. Default to 90. Only positive values.
float duration: The amount of time in seconds Zumi will try and complete the turn. Increase for turns greater than 90 degrees.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.turn_right(45)
time.sleep(1)
zumi.turn_right(200,duration=1.3)
turn()
Description
Zumi will turn to a desired angle.
Syntax
turn(desired_angle)
turn(desired_angle, duration=1.5, max_speed=25, accuracy=1):
Parameters
integer desired_angle: Angle to turn. Positive degrees to the left. Negative degrees to the right.
float duration: Number of seconds Zumi will perform the command.
integer speed: The max motor speed for turning (0 - 80).
integer accuracy: The tolerance of +- degrees (e.g. accuracy = 1 means +1 or -1 degree off from desired_angle).
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
# zumi will turn to the left
zumi.turn(90)
#zumi will turn to the right 90 degrees from the starting angle
zumi.turn(-90)
LEDs-and-Buzzer
all_lights_off()
Description
Turns all LEDs off
Syntax
all_lights_off()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.all_lights_on()
time.sleep(2)
zumi.all_lights_off()
all_lights_on()
Description
Turns all LEDs on the 2 front white leds and the rear 2 leds.
Syntax
all_lights_on()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.all_lights_on()
brake_lights_off()
Description
Turns off front LEDs only
Syntax
brake_lights_off()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.brake_lights_on()
time.sleep(2)
zumi.brake_lights_off()
brake_lights_on()
Description
Turns on back LEDs only
Syntax
brake_lights_on()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.brake_lights_on()
hazard_lights_off()
Description
Turns off flashing front and back LEDs
Syntax
hazard_lights_off()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.hazard_lights_on()
time.sleep(2)
zumi.hazard_lights_off()
hazard_lights_on()
Description
Flashes both front and back LEDs
Syntax
hazard_lights_on()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.hazard_lights_on()
headlights_off()
Description
Turns off front LEDs only
Syntax
headlights_off()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.headlights_on()
time.sleep(2)
zumi.headlights_off()
headlights_on()
Description
Turns on front LEDs only
Syntax
headlights_on()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.headlights_on()
play_note()
Description
Play a note, from C2 - B6.
Syntax
play_note(note_type)
play_note(note_type, note_duration=500)
Parameters
integer/enum note_type: Integer from 0 to 60 or enum from Note class. Setting the note to 0 will result in no sound.
integer note_duration: Default to 500 milliseconds but can be an integer from 0 to 2500 milliseconds. Must be in 100 millisecond increments ex. 100, 200, 500, 2000. If 0 note will play forever.
class Note:
C2 = 1
CS2 = 2
D2 = 3
DS2 = 4
E2 = 5
F2 = 6
FS2 = 7
G2 = 8
GS2 = 9
A2 = 10
AS2 = 11
B2 = 12
C3 = 13
CS3 = 14
D3 = 15
DS3 = 16
E3 = 17
F3 = 18
FS3 = 19
G3 = 20
GS3 = 21
A3 = 22
AS3 = 23
B3 = 24
C4 = 25
CS4 = 26
D4 = 27
DS4 = 28
E4 = 29
F4 = 30
FS4 = 31
G4 = 32
GS4 = 33
A4 = 34
AS4 = 35
B4 = 36
C5 = 37
CS5 = 38
D5 = 39
DS5 = 40
E5 = 41
F5 = 42
FS5 = 43
G5 = 44
GS5 = 45
A5 = 46
AS5 = 47
B5 = 48
C6 = 49
CS6 = 50
D6 = 51
DS6 = 52
E6 = 53
F6 = 54
FS6 = 55
G6 = 56
GS6 = 57
A6 = 58
AS6 = 59
B6 = 60
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.protocol import Note
import time
zumi = Zumi()
zumi.play_note(30, 500)
time.sleep(1)
zumi.play_note(Note.C4)
time.sleep(1)
# will stop the buzzer
zumi.play_note(0, 0)
signal_left_off()
Description
Turns off flashing both left front and left back LEDs
Syntax
signal_left_off()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.signal_left_on()
time.sleep(2)
zumi.signal_left_off()
signal_left_on()
Description
Flashes both left front and left back LEDs
Syntax
signal_left_on()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.signal_left_on()
signal_right_off()
Description
Turns off flashing both right front and right back LEDs
Syntax
signal_right_off()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
import time
zumi = Zumi()
zumi.signal_right_on()
time.sleep(2)
zumi.signal_right_off()
signal_right_on()
Description
Flashes both right front and right back LEDs
Syntax
signal_right_on()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
zumi = Zumi()
zumi.signal_right_on()
Camera
capture()
Description
Takes a picture using the PiCamera and saves it in an array.
Syntax
capture()
Parameters
None
Returns
ndarray image array: a NumPy array representing the captured image
Example Code
Python
#Python code
from zumi.util.camera import Camera
import time
camera=Camera()
camera.start_camera()
frame = camera.capture()
camera.show_image(frame)
time.sleep(5)
camera.close()
clear_output()
Description
Clear the output for the next image to show.
Syntax
clear_output()
Parameters
None
Returns
None
Example Code
from zumi.util.camera import Camera
camera = Camera()
camera.start_camera()
try:
for x in range(30):
frame = camera.capture()
camera.show_image(frame)
camera.clear_output() # Clear the output for the next image to show
finally:
camera.close()
close()
Description
Releases camera's resources
Syntax
close()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.camera import Camera
camera=Camera()
camera.start_camera()
camera.save_photo()
camera.close() # closes camera stream
is_closed()
Description
Checks if the camera stream is open
Syntax
is_closed()
Parameters
None
Returns
Boolean: Returns True if camera stream is open. Otherwise returns False
Example Code
#Python code
from zumi.util.camera import Camera
camera=Camera()
camera.start_camera()
camera.close()
print("Camera is closed?")
print(camera.is_closed())
if not camera.is_closed():
camera.close()
save_photo()
Description
Captures an image and saves it in the working directory.
Syntax
save_photo()
save_photo(file_name)
Parameters
string file_name: The name of the image file that will be saved. Default name (no input) is the current time.
Returns
None
Example Code
#Python code
from zumi.util.camera import Camera
camera=Camera()
camera.start_camera()
camera.save_photo()
#"<current_time>.jpg" file will be saved in the current working directory
camera.save_photo("Cheese")
#"Cheese.jpg" file will be saved in the current working directory
camera.close()
show_image()
Description
Displays an image taken from Zumi's camera.
Syntax
show_image(frame)
Parameters
ndarray frame: An image array that will be displayed
Returns
None
Example Code
#Python code
from zumi.util.camera import Camera
import time
camera=Camera()
camera.start_camera()
frame = camera.capture()
camera.show_image(frame)
camera.close()
start_camera()
Description
Turns on the camera
Syntax
start_camera()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.camera import Camera
import cv2
import IPython.display
import PIL.Image
from io import BytesIO
import time
# you can change the resolution of the camera
# using the image_w = image width
# and the image_h = image heigth
#camera = Camera(image_w=1280,image_h=960)
#camera = Camera(image_w=1024,image_h=768)
#camera = Camera(image_w=128,image_h=64)
camera = Camera(image_w=60,image_h=32)
camera.start_camera() # opens camera stream
time_start = time.time()
try:
for i in range(30):
frame = camera.capture()
img = PIL.Image.fromarray(frame, "RGB")
buffer = BytesIO()
img.save(buffer,format="JPEG")
IPython.display.display(IPython.display.Image(data=buffer.getvalue()))
IPython.display.clear_output(wait=True)
finally:
print(30/(time.time()-time_start))
Colors
fit()
Description
Fits values for prediction. By default, HSV is fitted.
Syntax
fit(values)
Parameters
string values: values to be fitted for prediction. By default hsv is fitted.
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.camera import Camera
from zumi.util.screen import Screen
from zumi.util.color_classifier import ColorClassifier
import time
camera = Camera()
screen = Screen()
zumi = Zumi()
user_name = 'username' # Type your actual username here
project_name = 'project_name' # Type your actual project name here
knn = ColorClassifier(user_name=user_name) # Must include "user_name="
train = knn.load_model(project_name)
knn.fit("hsv") # Fitting to HSV
camera.start_camera()
while True:
user_input = input("Press 'enter' to predict or 'q to quit: ")
if user_input == "q":
break
image = camera.capture()
predict = knn.predict(image)
screen.draw_text_center(predict)
camera.close()
predict()
Description
Predicts a color captured from the Zumi camera.
Syntax
predict(pred_features)
Parameters
ndarray p*red_features: The image to draw the prediction from
Returns
string prediction: The prediction made by the knn color classifier
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.camera import Camera
from zumi.util.screen import Screen
from zumi.util.color_classifier import ColorClassifier
import time
camera = Camera()
screen = Screen()
zumi = Zumi()
user_name = 'username' # Type your actual username here
project_name = 'project_name' # Type your actual project name here
knn = ColorClassifier(user_name=user_name) # Must include "user_name="
train = knn.load_model(project_name)
knn.fit("hsv") # Fitting to HSV
camera.start_camera()
while True:
user_input = input("Press 'enter' to predict or 'q to quit: ")
if user_input == "q":
break
image = camera.capture()
predict = knn.predict(image) # Based on the image taken, the knn color classifier will predict a color
screen.draw_text_center(predict) # This prediction gets written to the Zumi screen
camera.close()
load_model()
Description
Loads the model based on your project name.
Syntax
load_model(name)
Parameters
string name: The project name. This will depend on what you chose to name your project
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.camera import Camera
from zumi.util.screen import Screen
from zumi.util.color_classifier import ColorClassifier
import time
camera = Camera()
screen = Screen()
zumi = Zumi()
user_name = 'username' # Type your actual username here
project_name = 'project_name' # Type your actual project name here
knn = ColorClassifier(user_name=user_name) # Must include "user_name="
train = knn.load_model(project_name) # Loads the model based on your project name.
knn.fit("hsv")
camera.start_camera()
while True:
user_input = input("Press 'enter' to predict or 'q to quit: ")
if user_input == "q":
break
image = camera.capture()
predict = knn.predict(image)
screen.draw_text_center(predict)
camera.close()
Vision
convert_to_gray()
Description
Converts captured image into a grayscaled image.
Syntax
convert_to_gray(img)
Parameters
ndarray img: an image array to be converted
Returns
ndarray image array: a modified image array of img for grayscaling
Example Code
from zumi.util.vision import Vision
from zumi.util.camera import Camera
camera = Camera()
vision = Vision()
camera.start_camera()
img = camera.capture()
camera.close()
gray = vision.convert_to_gray(img) # Convert it to grayscaled version of img
camera.show_image(gray)
convert_to_hsv()
Description
Converts captured image to an HSV image.
Syntax
convert_to_hsv(img)
Parameters
ndarray img: An image array to be converted
Returns
ndarray image array: A modified image array of img in the HSV colorspace
Example Code
from zumi.util.vision import Vision
from zumi.util.camera import Camera
camera = Camera()
vision = Vision()
camera.start_camera()
img = camera.capture()
camera.close()
hsv = vision.convert_to_hsv(img) # Convert it to HSV, hue saturation and value
camera.show_image(hsv)
get_QR_message()
Description
Returns the message from decoded QR code.
Syntax
get_QR_message(Qr_object)
Parameters
Decoded Qr_object: decoded QR data (an object of class Decoded) that find_QR_code()
Returns
string message: decoded message from QR code
Example Code
from zumi.util.vision import Vision
from zumi.util.camera import Camera
camera = Camera()
camera.start_camera()
frame = camera.capture()
camera.close()
qr_code = vision.find_QR_code(frame)
message = vision.get_QR_message(qr_code) # returns None if QR code was not detected
print(message)
find_face()
Description
Searches captured image for facial features to find face's pixel location in the image.
Syntax
find_face(frame, scale_factor=1.05, min_neighbors=8, min_size=(40,40))
Parameters
ndarray frame: an image array
float scale_factor: a number to reduce image size for easier training. By default, scale_factor is 1.05 (reducing the image by 5%)
integer min_neighbors: minimum number of neighbors (features that have similarities)
integer min_size: minimum size of face to be detected
Returns
list area: [x,y,w,h] of the face's x and y coordinates along with the area's width and height. Returns None
if not detected
Example Code
from zumi.util.camera import Camera
from zumi.util.vision import Vision
camera = Camera()
vision = Vision()
camera.start_camera()
image = camera.capture()
camera.close()
face_location = vision.find_face(image, scale_factor = 1.05, min_neighbors=8, min_size= (40,40))
# returns location of face frame within image. None if not found
print("[x,y,w,h] =",face_location)
camera.show_image(image) # displays image with outlined face (if it exists) in Jupyter Notebook
find_stop_sign()
Description
Searches an image for a stop sign and returns a list containing x-y coordinates, width, and height of the stop sign's frame.
Syntax
find_stop_sign(frame, scale_factor=1.05, min_neighbors=8, min_size=(40,40))
Parameters
ndarray frame: an image array
float scale_factor: a number to reduce image size for easier training. By default, scale_factor is 1.05 (reducing the image by 5%)
integer min_neighbors: minimum number of neighbors (features that have similarities)
integer min_size: minimum size for the stop sign to be detected
Returns
list area: [x,y,w,h] of the stop sign's x and y coordinates along with the area's width and height. Returns None
if not detected
Example
from zumi.util.camera import Camera
from zumi.util.vision import Vision
camera = Camera()
vision = Vision()
camera.start_camera()
image = camera.capture()
camera.close()
stop_sign_location = vision.find_stop_sign(image, scale_factor = 1.05, min_neighbors=8, min_size= (40,40))
# returns location of stop sign frame within image. None if not found
print("[x,y,w,h] =",stop_sign_location)
camera.show_image(image) # displays image with outlined stop sign (if it exists) in Jupyter Notebook
find_QR_code()
Description
Processes the image that is given as a parameter and draws a rectangle around the QR code with the decoded message on it.
Syntax
find_QR_code(frame)
Parameters
*ndarray frame: a NumPy array representing a captured image (image array)
Returns
Decoded decoded_Qr: decoded QR data (an object of Decoded class). Returns None
if QR code is not detected
Example Code
from zumi.zumi import Zumi
from zumi.util.camera import Camera
from zumi.util.vision import Vision
camera = Camera()
vision = Vision()
camera.start_camera()
try:
for i in range(50):
frame = camera.capture()
vision.find_QR_code(frame)
camera.show_image(frame)
camera.clear_output()
finally:
print("Done!")
camera.close()
find_smile()
Description
Searches captured image for smiling facial features to find smile's pixel location in the image.
Syntax
find_smile(frame, scale_factor=1.05, min_neighbors=8, min_size=(40,40))
Parameters
ndarray frame: a NumPy array representing a captured image (image array)
float scale_factor: a number to reduce image size for easier training. By default, scale_factor is 1.05 (reducing the image by 5%)
integer min_neighbors: minimum number of neighbors (features that have similarities)
integer min_size: minimum size of face to be detected
integer max_size: maximum size of face to be detected
Returns
list area: [x,y,w,h] of the smiles's x and y coordinates along with the area's width and height. Returns None if not detected
Example Code
from zumi.util.camera import Camera
from zumi.util.vision import Vision
camera = Camera()
vision = Vision()
camera.start_camera()
image = camera.capture()
camera.close()
smile_location = vision.find_smile(image, scale_factor = 1.05, min_neighbors=8, min_size= (40,40))
# returns location of smile frame within image. None if not found
print("[x,y,w,h] =",smile_location)
camera.show_image(image) # displays image with outlined smile (if it exists) in Jupyter Notebook
Screen
angry()
Description
Draws Zumi's angry eyes on the screen.
Syntax
angry()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.angry()
blink()
Description
Draws Zumi's blinking animation on the screen.
Syntax
blink()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.blink()
clear_display()
Description
Clears everything on the OLED by drawing a black rectangle.
Syntax
clear_display()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.print("Hello")
screen.clear_display()
clear_drawing()
Description
Clears the drawing canvas object without clearing the OLED screen. Use this before using any new draw functions.
Syntax
clear_drawing()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.draw_circle(30,30,10)
time.sleep(1)
screen.clear_drawing()
screen.print("Hello")
clock()
Description
Clears the screen and draws a clock with the given hour and minute set by the user.
Syntax
clock(hour, minute)
clock(hour, minute, string='', font_size=18)
Parameters
integer hour: hour set by user
integer minute: minute set by user
string message: an 8 character message to be displayed under the clock (optional). Defaults to an empty string.
integer font_size: the font-size of the time
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.clock(3,15,"Monday")
close_eyes()
Description
Draws Zumi's closed eyes on the screen.
Syntax
close_eyes()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.close_eyes()
draw_arc()
Description
Draws an arc within the boundaries of points x1,y1, and x2,y2 at the specified starting and ending angles.
Syntax
draw_arc(x1, y1, x2, y2, start_ang, end_ang)
draw_arc(x1, y1, x2, y2, start_ang, end_ang,fill_in=True)
Parameters
integer x1: x coordinate of top-left corner for the rectangle enclosing the arc
integer y1: y coordinate of top-left corner for the rectangle enclosing the arc
integer x2: x coordinate of bottom-right corner for the rectangle enclosing the arc
integer y2: y coordinate of bottom-right corner for the rectangle enclosing the arc
integer start_ang: starting arc angle, in degrees
integer end_ang: ending arc angle, in degrees
boolean fill_in: Boolean that selects if the triangle will be filled in (white). Default to True.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen=Screen()
screen.draw_arc(0,0,50,50,-180,0)
draw_chord()
Description
Draws a chord within the boundaries of points x1,y1, and x2,y2 at the specified starting and ending angles.
Syntax
draw_chord(x1, y1, x2, y2, start_ang, end_ang)
draw_chord(x1, y1, x2, y2, start_ang, end_ang,fill_in=True)
Parameters
integer x1: x coordinate of top-left corner for the rectangle enclosing the chord
integer y1: y coordinate of top-left corner for the rectangle enclosing the chord
integer x2: x coordinate of bottom-right corner for the rectangle enclosing the chord
integer y2: y coordinate of bottom-right corner for the rectangle enclosing the chord
integer start_ang: starting angle
integer end_ang: ending angle
boolean fill_in: Boolean that selects if the triangle will be filled in (white). Default to True.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen=Screen()
screen.draw_chord(0,0,20,20,-180,0)
screen.draw_chord(30,30,50,50,-180,0)
#do a 360 from -180 degrees to 180 degrees
screen.draw_chord(60,30,100,50,-180,180)
draw_circle()
Description
Draws a circle that fits inside a square with its top-left corner at x,y and a width/height of the circle's diameter.
Syntax
draw_circle(x, y, diameter)
draw_circle(x, y, diameter, fill_in=True)
Parameters
integer x: x-coordinate of the top-left corner of the enclosing square
integer y: y-coordinate of the top-left corner of the enclosing square
integer diameter: diameter of the circle (also the width and height of enclosing square)
boolean fill_in: Boolean that selects if the triangle will be filled in (white). Default to True.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.draw_circle(10,0,20,fill_in=False)
draw_ellipse()
Description
Draws an ellipse that fits in a rectangle with its top-left corner at x,y and a set width and height.
Syntax
draw_ellipse(self, x, y, width, height)
draw_ellipse(self, x, y, width, height, fill_in=True)
Parameters
integer x: x coordinate of the top-left corner of the enclosing rectangle
integer y: y coordinate of the top-left corner of the enclosing rectangle
integer width: width of enclosing rectangle
integer height: height of enclosing rectangle
boolean fill_in: Boolean that selects if the triangle will be filled in (white). Default to True.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.draw_ellipse(0,0,100,30,fill_in=True)
draw_image()
Description
Draws the image on the screen.
Syntax
draw_image(img)
Parameters
Image img: An image object that's produced using screen.path_to_image(path)
, "path" being the file location of your image.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
path = "/usr/local/lib/python3.5/dist-packages/zumi/util/images/happy1.ppm"
screen.draw_image(screen.path_to_image(path))
draw_line()
Description
Draws a line between points (x1,y1) and (x2,y2).
Syntax
draw_line(x1, y1, x2, y2)
draw_line(x1, y1, x2, y2, thickness=1,fill_in=True)
Parameters
integer x1: x coordinate of the starting point
integer y1: y coordinate of the starting point
integer x2: x coordinate of the ending point
integer y2: y coordinate of the ending point
integer thickness: pixel width of the line
boolean fill_in: Boolean that selects if the line will be filled in (white). Default to True.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.draw_line(0,0,40,40,fill_in=True)
screen.draw_line(40,0,0,40,thickness=10,fill_in=True)
draw_point()
Description
Draws a single pixel at the set x and y coordinate.
Syntax
draw_point(x, y)
draw_point(x, y,fill_in=True)
Parameters
integer x: the x coordinate
integer y: the y coordinate
boolean fill_in: Boolean that selects if the point will be filled in (white). Default to True.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.draw_point(100,30)
draw_polygon()
Description
Draws lines between points in a given list [(x1,y1),...,(xn,yn)]
to form a shape.
Syntax
draw_polygon(points_list)
draw_polygon(points_list,fill_in = True):
Parameters
list points_list: A list [x1,y1,x2,y2,....xn,yn]
with at least 3 points
boolean fill_in: Boolean that selects if the polygon will be filled in (white). Default to True.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
points = [(30,50),(90,10),(20,10),(5,20)]
screen.draw_polygon(points)
draw_rect()
Description
Draws a rectangle on the screen.
Syntax
draw_rect(x, y, width, height)
draw_rect(x, y, width, height, thickness=1, fill_in=False)
Parameters
integer x: the top left corner x coordinate
integer y: the top left corner y coordinate
integer width: width of rectangle
integer height: height of rectangle
integer thickness: thickness of rectangle border, default to 1
boolean fill_in: Boolean that selects if the shape will be filled in. Default to False.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.draw_rect(0,0,128,64,thickness=1,fill_in=True)
draw_square()
Description
Draws a square on the screen.
Syntax
draw_square(x, y, width)
draw_square(x, y, width, thickness=1, fill_in=False)
Parameters
integer x: the top left corner x coordinate
integer y: the top left corner y coordinate
integer width: width of each side
integer thickness: thickness of rectangle border, default to 1
integer fill_in: Boolean that selects if the shape will be filled in. Default to False.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.draw_square(0,0,30,thickness=1,fill_in=True)
draw_text_center()
Description
Draws text to the center of the screen
Syntax
draw_text_center(string, font_size=16)
draw_text_center(string)
draw_text_center(string, font_size)
Parameters
string string: The text that Zumi will show on the screen integer font_size: The font size of the text, defaults to 16 pixels.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.draw_text_center('hello',font_size=10)
time.sleep(0.5)
screen.draw_text_center('hello',font_size=20)
time.sleep(0.5)
screen.draw_text_center('hello',font_size=30)
time.sleep(0.5)
screen.draw_text_center('hello',font_size=40)
time.sleep(0.5)
screen.draw_text_center('hello',font_size=50)
time.sleep(0.5)
draw_text()
Description
Draws text to the upper lefthand corner of the screen
Syntax
draw_text(string)
draw_text(string, x, y, font_size)
(display, clear)..
Parameters
string string: The text that Zumi will show on the screen
integer x: The x coordinate start value of the string, defaults to 1
integer y: The y coordinate start value of the string, defaults to 1
integer font_size: The font size of the string, defaults to 16 pixels
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
for i in range(10):
screen.draw_text(str(i)+'!')
time.sleep(0.1)
screen.clear_display()
draw_triangle()
Description
Draws a triangle with 3 points (x1,y1), (x2,y2), (x3,y3): x1, y1, x2, y2, x3, y3
.
Syntax
draw_triangle(x1,y1,x2,y2,x3,y3)
draw_triangle(x1,y1,x2,y2,x3,y3,fill_in=True):
Parameters
integer x1: the x coordinate of point 1
integer y1: the y coordinate of point 1
integer x2: the x coordinate of point 2
integer y2: the y coordinate of point 2
integer x3: the x coordinate of point 3
integer y3: the y coordinate of point 3
boolean fill_in: Boolean that selects if the triangle will be filled in (white). Default to True.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen=Screen()
screen.draw_triangle(0,10,20,50,50,0)
glimmer()
Description
Draws an animation of Zumi's eyes glimmering on the screen.
Syntax
glimmer()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.glimmer()
happy()
Description
Draws an animation of Zumi's happy eyes.
Syntax
happy()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.happy()
hello()
Description
Draws Zumi's default eyes on the screen.
Syntax
hello()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.hello()
look_around_open()
Description
Draws Zumi's eyes looking around left and right on the screen.
Syntax
look_around_open()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.look_around_open()
look_around()
Description
Makes zumi look around
Syntax
look_around()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.look_around()
print()
Description
Prints any number of strings on the screen.
Syntax
print(*messages)
print(*messages,x=0, y=0, fill_in=True,font_size=12)
Parameters
string messages: Any number of strings that will print to the screen
integer x: x coordinate of the string. Default to 0.
integer y: y coordinate of the string. Default to 0.
boolean fill_in: Boolean that selects if text will be white(True) or black (False). Default to True.
integer font_size: Pixel size of the font. Default to 12.
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
import time
screen=Screen()
screen.print("12345678")
screen.print("hello", y=15)
screen.print("\n\n","Zumi")
time.sleep(1)
screen.clear_drawing()
screen.print("ZUMI",font_size=20)
sad()
Description
Draws Zumi's sad eyes on the screen.
Syntax
sad()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.sad()
show_screen()
Description
Displays an image on Zumi's screen taken from Zumi's camera.
Syntax
show_image(frame)
Parameters
ndarray frame: A NumPy array representing a captured image
Returns
None
Example Code
from zumi.util.screen import Screen
from zumi.util.camera import Camera
screen = Screen()
camera = Camera()
camera.start_camera() # Turn on the camera
image = camera.capture() # Take a picture
camera.close() # Make sure to close the camera stream
screen.show_image(image) # Display image on OLED
sleeping()
Description
Draws an animation of Zumi sleeping on the screen.
Syntax
sleeping()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.sleeping()
sleepy_eyes()
Description
Draws Zumi's sleepy eyes on the screen.
Syntax
sleepy_eyes()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.sleepy_eyes()
sleepy_left()
Description
Draws a sleepy left eye on the screen.
Syntax
sleepy_left()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.sleepy_left()
sleepy_right()
Description
Draws a sleepy right eye on the screen.
Syntax
sleepy_right()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.util.screen import Screen
screen = Screen()
screen.sleepy_right()
Personality
angry()
Description
Draws Zumi's angry eyes on the screen.
Syntax
angry()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.angry()
awake()
Description
Draws Zumi opening her eyes with the wake up sound effect.
Syntax
awake()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.awake()
celebrate()
Description
Makes Zumi celebrate.
Syntax
celebrate()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.celebrate()
disoriented_left()
Description
Draws Zumi's eyes looking to the left with the disoriented sound effect.
Syntax
disoriented_left()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.disoriented_left()
disoriented_right()
Description
Draws Zumi's eyes looking to the right with the disoriented sound effect.
Syntax
disoriented_right()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.disoriented_right()
happy()
Description
Makes Zumi wiggle and make a happy sound.
Syntax
happy()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.happy()
look_around_open()
Description
Makes Zumi look around with wide open eyes.
Syntax
look_around_open()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.look_around_open()
look_around()
Description
Makes Zumi look around.
Syntax
look_around()
Parameters
None
Returns
None
Example Code
#Python code
from zumi.zumi import Zumi
from zumi.util.screen import Screen
from zumi.personality import Personality
zumi = Zumi()
screen = Screen()
personality = Personality(zumi, screen)
personality.look_around()