1839 lines
No EOL
65 KiB
Python
1839 lines
No EOL
65 KiB
Python
"""
|
|
SPIKE Prime Python Classes
|
|
"""
|
|
class App:
|
|
def __init__(self):
|
|
pass
|
|
def play_sound(self, name, volume=100):
|
|
"""
|
|
Plays a sound from the device (tablet or computer).
|
|
|
|
The program will not continue until the sound has finished playing.
|
|
|
|
If no sound is found with the given name is found, nothing will happen.
|
|
|
|
Parameters
|
|
-------------
|
|
name : The name of the sound to play.
|
|
|
|
Type : string (text)
|
|
|
|
Values : Alert, Applause1, Applause2, Applause3, Baa, Bang1, Bang2, BasketballBounce, BigBoing, Bird, Bite, BoatHorn1, BoatHorn2, Bonk, BoomCloud, BoopBingBop, BowlingStrike, Burp1, Burp2, Burp3, CarAccelerate1, CarAccelerating2, CarHorn, CarIdle, CarReverse, CarSkid1, CarSkid2, CarVroom, CatAngry, CatHappy, CatHiss, CatMeow1, CatMeow2, CatMeow3, CatPurring, CatWhining, Chatter, Chirp, Clang, ClockTicking, ClownHonk1, ClownHonk2, ClownHonk3, Coin, Collect, Connect, Crank, CrazyLaugh, Croak, CrowdGasp, Crunch, Cuckoo, CymbalCrash, Disconnect, DogBark1, DogBark2, DogBark3, DogWhining1, DogWhining2, Doorbell1, Doorbell2, Doorbell3, DoorClosing, DoorCreek1, DoorCreek2, DoorHandle, DoorKnock, DoorSlam1, DoorSlam2, DrumRoll, DunDunDunnn, EmotionalPiano, Fart1, Fart2, Fart3, Footsteps, Gallop, GlassBreaking, Glug, GoalCheer, Gong, Growl, Grunt, HammerHit, HeadShake, HighWhoosh, Jump, JungleFrogs, Laser1, Laser2, Laser3, LaughingBaby1, LaughingBaby2, LaughingBoy, LaughingCrowd1, LaughingCrowd2, LaughingGirl, LaughingMale, Lose, LowBoing, LowSqueak, LowWhoosh, MagicSpell, MaleJump1, MaleJump2, Moo, OceanWave, Oops, OrchestraTuning, PartyBlower, Pew, PingPongHit, PlaneFlyingBy, PlaneMotorRunning, PlaneStarting, Pluck, PoliceSiren1, PoliceSiren2, PoliceSiren3, Punch, Rain, Ricochet, Rimshot, RingTone, Rip, Robot1, Robot2, Robot3, RocketExplosionRumble, Rooster, ScramblingFeet, Screech, Seagulls, ServiceAnnouncement, SewingMachine, ShipBell, SirenWhistle, Skid, SlideWhistle1, SlideWhistle2, SneakerSqueak, Snoring, Snort, SpaceAmbience, SpaceFlyby, SpaceNoise, Splash, SportWhistle1, SportWhistle2, SqueakyToy, SquishPop, SuctionCup, Tada, TelephoneRing2, TelephoneRing, Teleport2, Teleport3, Teleport, TennisHit, ThunderStorm, TolietFlush, ToyHonk, ToyZing, Traffic, TrainBreaks, TrainHorn1, TrainHorn2, TrainHorn3, TrainOnTracks, TrainSignal1, TrainSignal2, TrainStart, TrainWhistle, Triumph, TropicalBirds, Wand, WaterDrop, WhistleThump, Whiz1, Whiz2, WindowBreaks, Win, Wobble, WoodTap, Zip
|
|
|
|
Default : no default value
|
|
|
|
volume : The volume at which the sound will be played.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 %
|
|
|
|
Default : 100%
|
|
|
|
Errors
|
|
------------
|
|
TypeError : name is not a string or volume is not an integer.
|
|
|
|
RuntimeError : The SPIKE App has been disconnected from the Hub.
|
|
"""
|
|
pass
|
|
def start_sound(self, name, volume):
|
|
"""
|
|
Starts playing a sound from your device (tablet or computer).
|
|
The program will not wait for the sound to finish playing before proceeding to the next command.
|
|
If no sound with the given name is found, nothing will happen.
|
|
|
|
Parameters
|
|
-------------
|
|
name : The name of the sound to play.
|
|
|
|
Type : string (text)
|
|
|
|
Values : Alert, Applause1, Applause2, Applause3, Baa, Bang1, Bang2, BasketballBounce, BigBoing, Bird, Bite, BoatHorn1, BoatHorn2, Bonk, BoomCloud, BoopBingBop, BowlingStrike, Burp1, Burp2, Burp3, CarAccelerate1, CarAccelerating2, CarHorn, CarIdle, CarReverse, CarSkid1, CarSkid2, CarVroom, CatAngry, CatHappy, CatHiss, CatMeow1, CatMeow2, CatMeow3, CatPurring, CatWhining, Chatter, Chirp, Clang, ClockTicking, ClownHonk1, ClownHonk2, ClownHonk3, Coin, Collect, Connect, Crank, CrazyLaugh, Croak, CrowdGasp, Crunch, Cuckoo, CymbalCrash, Disconnect, DogBark1, DogBark2, DogBark3, DogWhining1, DogWhining2, Doorbell1, Doorbell2, Doorbell3, DoorClosing, DoorCreek1, DoorCreek2, DoorHandle, DoorKnock, DoorSlam1, DoorSlam2, DrumRoll, DunDunDunnn, EmotionalPiano, Fart1, Fart2, Fart3, Footsteps, Gallop, GlassBreaking, Glug, GoalCheer, Gong, Growl, Grunt, HammerHit, HeadShake, HighWhoosh, Jump, JungleFrogs, Laser1, Laser2, Laser3, LaughingBaby1, LaughingBaby2, LaughingBoy, LaughingCrowd1, LaughingCrowd2, LaughingGirl, LaughingMale, Lose, LowBoing, LowSqueak, LowWhoosh, MagicSpell, MaleJump1, MaleJump2, Moo, OceanWave, Oops, OrchestraTuning, PartyBlower, Pew, PingPongHit, PlaingFlyingBy, PlaneMotorRunning, PlaneStarting, Pluck, PoliceSiren1, PoliceSiren2, PoliceSiren3, Punch, Rain, Ricochet, Rimshot, RingTone, Rip, Robot1, Robot2, Robot3, RocketExplosionRumble, Rooster, ScramblingFeet, Screech, Seagulls, ServiceAnnouncement, SewingMachine, ShipBell, SirenWhistle, Skid, SlideWhistle1, SlideWhistle2, SneakerSqueak, Snoring, Snort, SpaceAmbience, SpaceFlyby, SpaceNoise, Splash, SportWhistle1, SportWhistle2, SqueakyToy, SquishPop, SuctionCup, Tada, TelephoneRing2, TelephoneRing, Teleport2, Teleport3, Teleport, TennisHit, ThunderStorm, TolietFlush, ToyHonk, ToyZing, Traffic, TrainBreaks, TrainHorn1, TrainHorn2, TrainHorn3, TrainOnTracks, TrainSignal1, TrainSignal2, TrainStart, TrainWhistle, Triumph, TropicalBirds, Wand, WaterDrop, WhistleThump, Whiz1, Whiz2, WindowBreaks, Win, Wobble, WoodTap, Zip
|
|
|
|
Default : no default value
|
|
|
|
volume : The volume at which the sound will be played.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 %
|
|
|
|
Default : 100%
|
|
|
|
Errors
|
|
------------
|
|
TypeError : name is not a string or volume is not an integer.
|
|
|
|
RuntimeError : The SPIKE App has been disconnected from the Hub.
|
|
"""
|
|
pass
|
|
|
|
class DistanceSensor:
|
|
def __init__(self, port):
|
|
"""
|
|
Allows access to the connected distance sensor.
|
|
Parameters
|
|
-------------
|
|
port : The port label the sensor is connected to
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'A', 'B', 'C', 'D', and 'E'
|
|
|
|
Default : no default value
|
|
"""
|
|
pass
|
|
def light_up_all(self, brightness=100):
|
|
"""
|
|
Lights up all of the lights on the Distance Sensor with the specified brightness.
|
|
|
|
Parameters
|
|
---------
|
|
brightness : The specified brightness of all the lights.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 % (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100 %
|
|
|
|
Errors
|
|
----------
|
|
TypeError : brightness is not an integer.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def light_up(self, right_top=100, left_top=100, right_bottom=100, left_bottom=100):
|
|
"""
|
|
Sets the brightness of the individual lights on the Distance Sensor.
|
|
|
|
Parameters
|
|
-------------
|
|
right_top : The brightness of the light above the right part of the Distance Sensor.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100% (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100
|
|
|
|
left_top : The brightness of the light above the left part of the Distance Sensor.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100% (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100
|
|
|
|
right_bottom : The brightness of the light below the right part of the Distance Sensor.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100% (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100
|
|
|
|
left_bottom : The brightness of the light below the left part of the Distance Sensor.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100% (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100
|
|
|
|
Errors
|
|
---------------
|
|
TypeError : right_top, left_top, right_bottom or left_bottom is not a number.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_distance_cm(self, short_range=False) -> float:
|
|
"""
|
|
Retrieves the measured distance in centimeters.
|
|
|
|
Parameters
|
|
----------
|
|
short_range : Whether to use or not the short range mode. The short range mode increases accuracy but it can only detect nearby objects.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Default : False
|
|
|
|
Returns
|
|
----------------
|
|
The measured distance, or "none" if the distance cannot be measured.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : 0 to 200 cm
|
|
|
|
Errors
|
|
------------
|
|
TypeError : short_range is not a boolean.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_distance_inches(self, short_range=False) -> float:
|
|
"""
|
|
Gets the measured distance in inches.
|
|
|
|
Parameters
|
|
----------
|
|
short_range : Whether or not to use short range mode. Short range mode increases accuracy but it can only detect nearby objects.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Default : False
|
|
|
|
Returns
|
|
------------------
|
|
The measured distance, or "none" if the distance cannot be measured.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : any value between 0 and 79
|
|
|
|
Errors
|
|
-------------
|
|
TypeError : short_range is not a boolean.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
|
|
def get_distance_percentage(self, short_range=False) -> int:
|
|
"""
|
|
Retrieves the measured distance in percent.
|
|
|
|
Parameters
|
|
---------
|
|
short_range : Whether or not to use short range mode. Short range mode increases accuracy but it can only detect nearby objects.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Default : False
|
|
|
|
Returns
|
|
----------
|
|
The measured distance, or "none" if the distance cannot be measured.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : any value between 0 and 100
|
|
|
|
Errors
|
|
----------
|
|
TypeError : short_range is not a boolean.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def wait_for_distance_farther_than(self, distance, unit='cm', short_range=False):
|
|
"""
|
|
Waits until the measured distance is greater than distance.
|
|
|
|
Parameters
|
|
-----------
|
|
distance : The target distance to detect, from the sensor to an object.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : any value
|
|
|
|
Default : no default value
|
|
|
|
unit : Unit of measurement of the distance.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'cm','in','%'
|
|
|
|
Default : cm
|
|
|
|
short_range : Whether or not to use short range mode. Short range mode increases accuracy but it can only detect nearby objects.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Default : False
|
|
|
|
Errors
|
|
----------
|
|
TypeError : distance is not a number or unit is not a string or short_range is not a boolean.
|
|
|
|
ValueError : unit is not one of the allowed values.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def wait_for_distance_closer_than(self, distance, unit='cm', short_range=False):
|
|
"""
|
|
Waits until the measured distance is less than distance.
|
|
|
|
Parameters
|
|
--------------
|
|
distance : The target distance to detect, from the sensor to an object.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : any value
|
|
|
|
Default : no default value
|
|
|
|
unit : Unit of measurement of the distance.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'cm','in','%'
|
|
|
|
Default : cm
|
|
|
|
short_range : Whether or not to use short range mode. Short range mode increases accuracy but it can only detect nearby objects.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Default : False
|
|
|
|
Errors
|
|
------------
|
|
TypeError : distance is not a number or unit is not a string or short_range is not a boolean.
|
|
|
|
ValueError : unit is not one of the allowed values. short_range is not a boolean.
|
|
|
|
RuntimeError: The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
|
|
class ForceSensor:
|
|
def __init__(self, port):
|
|
"""
|
|
Allows access to the connected force sensor.
|
|
Parameters
|
|
-------------
|
|
port : The port label the sensor is connected to
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'A', 'B', 'C', 'D', and 'E'
|
|
|
|
Default : no default value
|
|
"""
|
|
pass
|
|
def is_pressed(self) -> bool:
|
|
"""
|
|
Tests whether the button on the sensor is pressed.
|
|
|
|
Returns
|
|
----------
|
|
True if the button is pressed.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Errors
|
|
-----------
|
|
RuntimeError : The Force Sensor has been disconnected from the port.
|
|
"""
|
|
pass
|
|
def get_force_newton(self) -> float:
|
|
"""
|
|
Retrieves the measured force, in newtons.
|
|
|
|
Returns
|
|
-----------
|
|
The measured force in newtons.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : between 0 and 10
|
|
|
|
Errors
|
|
------------
|
|
RuntimeError : The Force Sensor has been disconnected from the port.
|
|
"""
|
|
pass
|
|
def get_force_percentage(self) -> int:
|
|
"""
|
|
Retrieves the measured force as a percentage of the maximum force.
|
|
|
|
Returns
|
|
------------
|
|
The measured force, in percentage.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : between 0 - 100%.
|
|
|
|
Errors
|
|
-----------
|
|
RuntimeError : The Force Sensor has been disconnected from the port.
|
|
"""
|
|
pass
|
|
def wait_until_pressed(self):
|
|
"""
|
|
Waits until the Force Sensor is pressed.
|
|
Errors
|
|
----------
|
|
RuntimeError : The sensor has been disconnected from the port.
|
|
"""
|
|
pass
|
|
def wait_until_released(self):
|
|
"""
|
|
Waits until the Force Sensor is released.
|
|
Errors
|
|
---------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
|
|
class LightMatrix:
|
|
def __init__(self):
|
|
"""
|
|
Controls the light matrix on the Spike Hub
|
|
"""
|
|
pass
|
|
def show_image(self, image, brightness=100):
|
|
"""
|
|
Shows an image on the Light Matrix.
|
|
|
|
Parameters
|
|
-----------
|
|
image : Name of the image.
|
|
|
|
Type : string (text)
|
|
|
|
Values : ANGRY, ARROW_E, ARROW_N, ARROW_NE, ARROW_NW, ARROW_S, ARROW_SE, ARROW_SW, ARROW_W, ASLEEP, BUTTERFLY, CHESSBOARD, CLOCK1, CLOCK10, CLOCK11, CLOCK12, CLOCK2, CLOCK3, CLOCK4, CLOCK5, CLOCK6, CLOCK7, CLOCK8, CLOCK9, CONFUSED, COW, DIAMOND, DIAMOND_SMALL, DUCK, FABULOUS, GHOST, GIRAFFE, GO_RIGHT, GO_LEFT, GO_IP, GO_DOWN, HAPPY, HEART, HEART_SMALL, HOUSE, MEH, MUSIC_CROTCHET, MUSIC_QUAVER, MUSIC_QUAVERS, NO, PACMAN, PITCHFORK, RABBIT, ROLLERSKATE, SAD, SILLY, SKULL, SMILE, SNAKE, SQUARE, SQUARE_SMALL, STICKFIGURE, SURPRISED, SWORD, TARGET, TORTOISE, TRIANGLE, TRIANGLE_LEFT, TSHIRT, UMBRELLA, XMAS, YES
|
|
|
|
Default : no default value
|
|
|
|
brightness : Brightness of the image
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100%
|
|
|
|
Default : 100
|
|
|
|
Errors
|
|
-------------------
|
|
TypeError : image is not a string or brightness is not an integer.
|
|
|
|
ValueError : image is not one of the allowed values.
|
|
"""
|
|
pass
|
|
def set_pixel(self, x, y, brightness=100):
|
|
"""
|
|
Sets the brightness of one pixel (one of the 25 LED) on the Light Matrix.
|
|
|
|
Parameters
|
|
-----------
|
|
x : Pixel position, counting from the left.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 1 to 5
|
|
|
|
Default : no default value
|
|
|
|
y : Pixel position, counting from the top.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 1 to 5
|
|
|
|
Default : no default value
|
|
|
|
brightness : Brightness of the pixel
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100%
|
|
|
|
Default : 100
|
|
|
|
Errors
|
|
--------------
|
|
TypeError : x, y or brightness is not an integer.
|
|
|
|
ValueError : x, y is not within the allowed range of 0-4.
|
|
"""
|
|
pass
|
|
def write(self, text):
|
|
"""
|
|
Writes text on the Light Matrix, one letter at a time, scrolling from right to left.
|
|
Your program will not continue until all of the letters have been shown.
|
|
|
|
Parameters
|
|
---------
|
|
text : Text to write.
|
|
|
|
Type : string (text)
|
|
|
|
Values : any text
|
|
|
|
Default : no default value
|
|
"""
|
|
pass
|
|
def off(self):
|
|
"""
|
|
Turns off all the pixels on the Light Matrix.
|
|
"""
|
|
pass
|
|
|
|
|
|
class MotionSensor:
|
|
def __init__(self):
|
|
"""
|
|
Senses angle and motion changes and it built into the Hub.
|
|
"""
|
|
pass
|
|
def reset_yaw_angle(self):
|
|
"""
|
|
Sets the yaw angle to 0.
|
|
"""
|
|
pass
|
|
def get_yaw_angle(self) -> int:
|
|
"""
|
|
Retrieves the yaw angle of the Hub.
|
|
|
|
"Yaw" is the rotation around the front-back (vertical) axis. "Pitch" the is rotation around the left-right (transverse) axis. "Roll" the is rotation around the front-back (longitudinal) axis.
|
|
|
|
Returns
|
|
-------
|
|
The yaw angle, specified in degrees.
|
|
|
|
Type : Integer (Positive or negative whole number, including 0)
|
|
|
|
Values : -180 to 180 BUG: in 1.2 the values are -179 to 179
|
|
"""
|
|
pass
|
|
def get_orientation(self) -> str:
|
|
"""
|
|
Retrieves the current orientation of the Hub.
|
|
Returns
|
|
-------
|
|
The Hub's current orientation.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'front','back','up','down','leftside','rightside'
|
|
"""
|
|
pass
|
|
def get_gesture(self) -> str:
|
|
"""
|
|
Retrieves the most recently-detected gesture.
|
|
Returns
|
|
---------
|
|
The gesture.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'shaken','tapped','doubletapped','falling'
|
|
"""
|
|
pass
|
|
def get_roll_angle(self) -> int:
|
|
"""
|
|
Retrieves the roll angle of the Hub.
|
|
"Roll" is the rotation around the front-back (longitudinal) axis. "Yaw" is the rotation around the front-back (vertical) axis. "Pitch" is the rotation around the left-right (transverse) axis.
|
|
Returns
|
|
-----------
|
|
The roll angle, specified in degrees.
|
|
|
|
Type : Integer (Positive or negative whole number, including 0)
|
|
|
|
Values : -180 to 180 BUG: currently returns -179 to 179
|
|
"""
|
|
pass
|
|
def get_pitch_angle(self) -> int:
|
|
"""
|
|
Retrieves the pitch angle of the Hub.
|
|
"Pitch" is the rotation around the left-right (transverse) axis. "Roll" is the rotation around the front-back (longitudinal) axis. "Yaw" is the rotation around the front-back (vertical) axis.
|
|
Returns
|
|
-----------
|
|
The pitch angle, specified in degrees.
|
|
Type : Integer (Positive or negative whole number, including 0)
|
|
Values : -180 to 180 BUG: only reads -90 to 90
|
|
"""
|
|
pass
|
|
def was_gesture(self, gesture) -> bool:
|
|
"""
|
|
Tests whether a gesture has occurred since the last time was_gesture() was used or since the beginning of the program (for the first use).
|
|
Parameters
|
|
------------
|
|
gesture : The name of the gesture.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'shaken','tapped','doubletapped','falling','None'
|
|
|
|
Default : no default value
|
|
|
|
Errors
|
|
------------
|
|
TypeError : gesture is not a string.
|
|
|
|
ValueError : gesture is not one of the allowed values.
|
|
|
|
Returns
|
|
----------
|
|
True if gesture has occurred since the last time was_gesture() was called, otherwise False.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
"""
|
|
pass
|
|
def wait_for_new_gesture(self) -> str:
|
|
"""
|
|
Waits until a new gesture happens.
|
|
Returns
|
|
--------------
|
|
The new gesture.
|
|
Type : string (text)
|
|
Values : 'shaken','tapped','doubletapped','falling'
|
|
"""
|
|
pass
|
|
def wait_for_new_orientation(self) -> str:
|
|
"""
|
|
Waits until the orientation of the Hub changes.
|
|
The first time this method is called, it will immediately return the current value. After that, calling this method will block the program until the Hub's orientation has changed since the previous time this method was called.
|
|
Returns
|
|
----------
|
|
The Hub's new orientation.
|
|
Type : string (text)
|
|
Values : 'front', 'back', 'up', 'down', 'left side', 'right side'
|
|
"""
|
|
pass
|
|
|
|
|
|
class Motor:
|
|
def __init__(self, port):
|
|
"""
|
|
Controls a single motor
|
|
Parameters
|
|
-------------
|
|
port : The port label the motor is connected to.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'A', 'B', 'C', 'D', and 'E'
|
|
|
|
Default : no default value
|
|
"""
|
|
pass
|
|
def run_to_position(self, degrees, direction='shortest path', speed=None):
|
|
"""
|
|
Runs the motor to an absolute position.
|
|
The sign of the speed will be ignored (absolute value) and the motor will always travel in the direction specified by direction parameter. If speed is greater than 100, it will be limited to 100.
|
|
|
|
Parameters
|
|
------------
|
|
degrees : The target position.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 359
|
|
|
|
Default : no default value
|
|
|
|
direction : The direction to use to reach the target position.
|
|
|
|
Type : string (text)
|
|
|
|
Values : shortest path' could run in either direction depending on the shortest distance to the target. - 'clockwise' will make the motor run clockwise until it reaches the target position. - 'counterclockwise' will make the motor run counterclockwise until it reaches the target position.
|
|
|
|
Default : no default value
|
|
|
|
speed : The motor's speed.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100%
|
|
|
|
Default : if no value is specified, it will use the default speed set by set_default_speed().
|
|
|
|
Errors
|
|
-----------------
|
|
TypeError : degrees or speed is not an integer or direction is not a string.
|
|
|
|
ValueError : direction is not one of the allowed values or degrees is not within the range of 0-359 (both inclusive).
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def run_to_degrees_counted(self, degrees, speed=None):
|
|
"""
|
|
Runs the motor to until degrees counted is equal to the value specified by the degrees parameter.
|
|
The sign of the speed will be ignored and the motor will always travel in the direction required to reach degrees. If speed is greater than 100, it will be limited to 100.
|
|
|
|
Parameters
|
|
-----------
|
|
degrees : The target degrees counted.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : any number
|
|
|
|
Default : no default value
|
|
|
|
speed : The desired speed..
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100% (positive values only)
|
|
|
|
Default : if no value is specified, it will use the default speed set by set_default_speed().
|
|
|
|
Errors
|
|
-----------
|
|
TypeError : degrees or speed is not an integer.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def run_for_degrees(self, degrees, speed=None):
|
|
"""
|
|
Runs the motor for a given number of degrees.
|
|
|
|
Parameters
|
|
-------------
|
|
degrees : The number of degrees the motor should run.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : any number
|
|
|
|
Default : no default value
|
|
|
|
speed : The motor's speed
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%
|
|
|
|
Default : if no value is specified, it will use the default speed set by set_default_speed().
|
|
|
|
Errors
|
|
----------
|
|
TypeError : degrees or speed is not an integer.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def run_for_rotations(self, rotations, speed=None):
|
|
"""
|
|
Runs the motor for a specified number of rotations.
|
|
|
|
Parameters
|
|
-------------
|
|
rotations : The number of rotations the motor should run.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : any number
|
|
|
|
Default : no default value
|
|
|
|
speed : The motor's speed
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%
|
|
|
|
Default : if no value is specified, it will use the default speed set by set_default_speed().
|
|
|
|
Errors
|
|
-------------
|
|
TypeError : rotations is not a number or speed is not an integer.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def run_for_seconds(self, seconds, speed=None):
|
|
"""
|
|
Runs the motor for a specified number of seconds.
|
|
|
|
Parameters
|
|
-----------
|
|
seconds : The number of seconds for which the motor should run.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : any number
|
|
|
|
Default : no default value
|
|
|
|
speed : The motor's speed.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%
|
|
|
|
Default : if no value is specified, it will use the default speed set by set_default_speed().
|
|
|
|
Errors
|
|
----------
|
|
TypeError : seconds is not a number or speed is not an integer.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def start(self, speed=None):
|
|
"""
|
|
Starts running the motor at a specified speed.
|
|
The motor will keep moving at this speed until you give it another motor command, or when your program ends.
|
|
|
|
Parameters
|
|
----------
|
|
speed : The motor's speed.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%
|
|
|
|
Default : if no value is specified, it will use the default speed set by set_default_speed().
|
|
|
|
Errors
|
|
--------
|
|
TypeError : speed is not an integer.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def stop(self):
|
|
"""
|
|
Stops the motor. What the motor does after it stops depends on the action set in set_stop_action(). The default value of set_stop_action() is coast.
|
|
|
|
Errors
|
|
----------
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def start_at_power(self, power):
|
|
"""
|
|
Starts rotating the motor at a specified power level.
|
|
The motor will keep moving at this power level until you give it another motor command, or when your program ends.
|
|
|
|
Parameters
|
|
---------
|
|
power : Power of the motor.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%
|
|
|
|
Default : no default value
|
|
|
|
Errors
|
|
---------
|
|
TypeError : power is not an integer.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_speed(self) -> int:
|
|
"""
|
|
Retrieves the speed of the motor.
|
|
|
|
Returns
|
|
----------
|
|
The current speed of the motor
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%
|
|
|
|
Errors
|
|
------------
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_position(self) -> int:
|
|
"""
|
|
Retrieves the position of the motor. This is the clockwise angle between the moving marker and the zero-point marker on the motor.
|
|
|
|
Returns
|
|
----------
|
|
The position of the motor
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 359 degrees
|
|
|
|
Errors
|
|
------------
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_degrees_counted(self) -> int:
|
|
"""
|
|
Retrieves the degrees counted by the motor.
|
|
|
|
Returns
|
|
-----------
|
|
The number of degrees counted.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : any number
|
|
|
|
Errors
|
|
----------
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_default_speed(self) -> int:
|
|
"""
|
|
Retrieves the current default motor speed.
|
|
|
|
Returns
|
|
---------
|
|
The default motor's speed.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%.
|
|
|
|
Errors
|
|
----------
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def was_interrupted(self) -> bool:
|
|
"""
|
|
Tests whether the motor was interrupted.
|
|
|
|
Returns
|
|
-----------
|
|
True if the motor was interrupted since the last time was_interrupted() was called, otherwise False.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Errors
|
|
-----------
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def was_stalled(self) -> bool:
|
|
"""
|
|
Tests whether the motor was stalled.
|
|
|
|
Returns
|
|
-----------
|
|
True if the motor was stalled since the last time was_stalled() was called, otherwise False.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Errors
|
|
-----------
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def set_degrees_counted(self, degrees_counted):
|
|
"""
|
|
Sets the number of degrees counted to a desired value.
|
|
|
|
Parameters
|
|
----------
|
|
degrees_counted : The value to which the number of degrees counted should be set.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : any number
|
|
|
|
Default : no default value
|
|
|
|
Errors
|
|
----------
|
|
TypeError : degrees_counted is not an integer.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def set_default_speed(self, default_speed):
|
|
"""
|
|
Sets the default motor speed. This speed will be used when you omit the speed argument in one of the other methods, such as run_for_degrees.
|
|
Setting the default speed does not affect any motors that are currently running.
|
|
It will only have an effect when another motor method is called after this method.
|
|
If the value of default_speed is outside of the allowed range, the default speed will be set to -100 or 100 depending on whether the value was negative or positive.
|
|
|
|
Parameters
|
|
-----------
|
|
default_speed : The default speed value.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%.
|
|
|
|
Default : no default value
|
|
|
|
Errors
|
|
------------
|
|
TypeError : default_speed is not an integer.
|
|
"""
|
|
pass
|
|
|
|
def set_stop_action(self, action):
|
|
"""
|
|
Sets the default behavior when a motor stops.
|
|
|
|
Parameters
|
|
-------------
|
|
action : The desired motor behavior when the motor stops.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'coast','brake','hold'
|
|
|
|
Default : coast
|
|
|
|
Errors
|
|
------------
|
|
TypeError : action is not a string.
|
|
|
|
ValueError : action is not one of the allowed values.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def set_stall_detection(self, stop_when_stalled):
|
|
"""
|
|
Turns stall detection on or off.
|
|
Stall detection senses when a motor has been blocked and can't move. If stall detection has been enabled and a motor is blocked, the motor will be powered off after two seconds and the current motor command will be interrupted. If stall detection has been disabled, the motor will keep trying to run and programs will "get stuck" until the motor is no longer blocked.
|
|
Stall detection is enabled by default.
|
|
|
|
Parameters
|
|
-----------
|
|
stop_when_stalled : Choose True to enable stall detection or False to disable it.
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
|
|
Default : True
|
|
|
|
Errors
|
|
-----------
|
|
TypeError : stop_when_stalled is not a boolean.
|
|
|
|
RuntimeError : The motor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
|
|
class MotorPair:
|
|
def __init__(self, port1, port2):
|
|
"""
|
|
Binds two motors together to use as a pair.
|
|
Parameters
|
|
----------
|
|
port1 : Port of the first motor
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'A', 'B', 'C', 'D', and 'E'
|
|
|
|
Default : no default value
|
|
|
|
port2 : Port of the second motor
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'A', 'B', 'C', 'D', and 'E'
|
|
|
|
Default : no default value
|
|
"""
|
|
pass
|
|
|
|
def move(self, amount, unit='cm', steering=0, speed=None):
|
|
"""
|
|
Start the 2 motors simultaneously to move a Driving Base.
|
|
steering=0 makes the Driving Base go straight. Negative numbers make the Driving Base turn left. Positive numbers make the Driving Base turn right.
|
|
The program will not continue until amount is reached.
|
|
If the value of steering is equal to -100 or 100, the Driving Base will perform a rotation on itself (tank move) with the default speed on each motor.
|
|
If the value of steering is outside of the allowed range, the value will be set to -100 or 100 depending whether the value is positive or negative.
|
|
If speed is outside of the allowed range, the value will be set to -100 or 100 depending whether the value is positive or negative.
|
|
If the speed is negative, then the Driving Base will move backward instead of forward. Likewise, if amount is negative, the Driving Base will move backward instead of forward. If both the speed and the amount are negative, then the Driving Base will move forward.
|
|
When unit is 'cm' or 'in', the amount of the unit parameter is the horizontal distance that the Driving Base will travel before stopping. The relationship between motor rotations and distance traveled can be adjusted by calling set_motor_rotation().
|
|
When 'unit' is 'rotations' or 'degrees', the amount parameter value specifies how much the motor axle will turn before stopping.
|
|
When unit is 'seconds', the amount parameter value specifies the amount of time the motors will run before stopping.
|
|
|
|
Parameters
|
|
-------------
|
|
amount : The quantity to move in relation to the specified unit of measurement.
|
|
|
|
Type : float (decimal numbers)
|
|
|
|
Values : any value
|
|
|
|
Default : no default value
|
|
|
|
unit : The units of measurement of the amount parameter
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'cm','in','rotations','degrees','seconds'
|
|
|
|
Default : cm
|
|
|
|
steering : The direction and the quantity to steer the Driving Base.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : 0
|
|
|
|
speed : The motor speed.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : the speed set by set_default_speed()
|
|
|
|
Errors
|
|
--------------
|
|
TypeError : amount is not a number, or steering or speed is not an integer, or unit is not a string.
|
|
|
|
ValueError : unit is not one of the allowed values.
|
|
|
|
RuntimeError : One or both of the motors has been disconnected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def start(self, steering=0, speed=None):
|
|
"""
|
|
Start the 2 motors simultaneously, to will move a Driving Base.
|
|
steering=0 makes the Driving Base go straight. Negative numbers make the Driving Base turn left. Positive numbers make the Driving Base turn right.
|
|
The program flow is not interrupted. This is most likely interrupted by a sensor input and a condition.
|
|
If the value of steering is equal to -100 or 100, the Driving Base will perform a rotation on itself (tank move) with the default speed on each motor.
|
|
If the value of steering is outside of the allowed range, the value will be set to -100 or 100 depending on whether the value is positive or negative.
|
|
If speed is outside of the allowed range, the value will be set to -100 or 100 depending whether the value is positive or negative.
|
|
If the speed is negative, then the Driving Base will move backward instead of forward. Likewise, if amount is negative, the Driving Base will move backward instead of forward. If both the speed and the amount are negative, then the Driving Base will move forward.
|
|
|
|
Parameters
|
|
------------
|
|
steering : The direction and the quantity to steer the Driving Base.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : 0
|
|
|
|
speed : The speed at which the Driving Base will move while performing a curve.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100% to 100%
|
|
|
|
Default : if no value is specified, it will use the default speed set by set_default_speed().
|
|
|
|
Errors
|
|
-----------
|
|
TypeError : Steering or speed is not an integer.
|
|
|
|
RuntimeError : One or both of the motors has been disconnected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def stop(self):
|
|
"""
|
|
Stops the 2 motors simultaneously, which will stop a Driving Base.
|
|
The motors will either actively hold their current position or coast freely depending on the option selected by set_stop_action().
|
|
Errors
|
|
--------------
|
|
RuntimeError : One or both of the motors has been disconnected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def move_tank(self, amount, unit='cm', left_speed=None, right_speed=None):
|
|
"""
|
|
Moves the Driving Base using differential (tank) steering.
|
|
The speed of each motor can be controlled independently for differential (tank) drive Driving Bases.
|
|
When unit is 'cm' or 'in', the amount of the unit parameter is the horizontal distance that the Driving Base will travel before stopping. The relationship between motor rotations and distance traveled can be adjusted by calling set_motor_rotation().
|
|
When 'unit' is 'rotations' or 'degrees', the amount parameter value specifies how much the motor axle will turn before stopping.
|
|
When unit is 'seconds', the amount parameter value specifies the amount of time the motors will run before stopping.
|
|
If left_speed or right_speed is outside of the allowed range, the value will be set to -100 or 100 depending whether the value is positive or negative.
|
|
If one of the speed is negative (left_speed or right_speed), then the motor with that negative speed will run backward instead of forward. If the value of the amount parameter is negative, both motors will rotate backward instead of forward. If both the speed values (left_speed or right_speed) are negative and the value of the amount parameter is negative, then the both motors will rotate forward.
|
|
The program will not continue until amount is reached.
|
|
|
|
Parameters
|
|
-----------------
|
|
amount : The quantity to move in relation to the specified unit of measurement.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : any value
|
|
|
|
Default : no default value
|
|
|
|
unit : The units of measurement of the amount parameter
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'cm','in','rotations','degrees','seconds'
|
|
|
|
Default : cm
|
|
|
|
left_speed : The speed of the left motor
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : the speed set by set_default_speed()
|
|
|
|
right_speed : The speed of the right motor
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : the speed set by set_default_speed()
|
|
|
|
Errors
|
|
--------------
|
|
TypeError : amount, left_speed or right_speed is not a number or unit is not a string.
|
|
|
|
ValueError : unit is not one of the allowed values.
|
|
|
|
RuntimeError : One or both of the Ports do not have a motor connected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def start_tank(self, left_speed, right_speed):
|
|
"""
|
|
Starts moving the Driving Base using differential (tank) steering.
|
|
The speed of each motor can be controlled independently for differential (tank) drive Driving Bases.
|
|
If left_speed or right_speed is outside of the allowed range, the value will be set to -100 or 100 depending whether the value is positive or negative.
|
|
If a speed is negative, then the motors will move backward instead of forward.
|
|
The program flow is not interrupted. This is most likely interrupted by a sensor input and a condition.
|
|
|
|
Parameters
|
|
----------
|
|
left_speed : The speed of the left motor.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : no default value
|
|
|
|
right_speed : The speed of the right motor.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : no default value
|
|
|
|
Errors
|
|
-------
|
|
TypeError : left_speed or right_speed is not an integer.
|
|
|
|
RuntimeError : One or both of the Ports do not have a motor connected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
|
|
def start_at_power(self, power, steering=0):
|
|
"""
|
|
Starts moving the Driving Base without speed control.
|
|
The motors can also be driven without speed control. This is useful when using your own control algorithm (e.g., a proportional line follower).
|
|
If steering is outside of the allowed range, the value will be set to -100 or 100 depending whether the value is positive or negative.
|
|
If power is outside of the allowed range, the value will be set to -100 or 100 depending whether the value is positive or negative.
|
|
If the power is negative, then Driving Base will move backward instead of forward.
|
|
The program flow is not interrupted. This can most likely interrupted by a sensor input and a condition.
|
|
|
|
Parameters
|
|
--------------
|
|
power : The amount of power to send to the motors.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100 %
|
|
|
|
Default : 100
|
|
|
|
steering : The steering direction (-100 to 100). 0 makes the Driving Base go straight. Negative numbers make the Driving Base turn left. Positive numbers make the Driving Base turn right.
|
|
|
|
Type : Integer
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : 0
|
|
|
|
Errors
|
|
----------
|
|
TypeError : steering or power is not an integer.
|
|
|
|
RuntimeError : One or both of the Ports do not have a motor connected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def start_tank_at_power(self, left_power, right_power):
|
|
"""
|
|
Starts moving the Driving Base using differential (tank) steering without speed control.
|
|
The motors can also be driven without speed control. This is useful when using your own control algorithm (e.g., a proportional line follower).
|
|
If left_power or right_power is outside of the allowed range, the value will be rounded to -100 or 100 depending on whether the value is positive or negative.
|
|
If a power is negative, then the corresponding motor will move backward instead of forward.
|
|
The program flow is not interrupted. This can most likely interrupted by a sensor input and a condition.
|
|
|
|
Parameters
|
|
===========
|
|
left_power : The power of the left motor
|
|
|
|
Type : Integer
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : no default value
|
|
|
|
right_power : The power of the right motor
|
|
|
|
Type : Integer
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : no default value
|
|
|
|
Errors
|
|
------------
|
|
TypeError : left_power or right_power is not an integer.
|
|
|
|
RuntimeError : One or both of the Ports do not have a motor connected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def get_default_speed(self) -> int:
|
|
"""
|
|
Retrieves the default motor speed.
|
|
|
|
Returns
|
|
-----------
|
|
The default motor speed.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100 %
|
|
|
|
Errors
|
|
------------
|
|
RuntimeError : One or both of the Ports do not have a motor connected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def set_motor_rotation(self, amount, unit='cm'):
|
|
"""
|
|
Sets the ratio of one motor rotation to the distance traveled.
|
|
If there are no gears used between the motors and the wheels of the Driving Base, then amount is the circumference of one wheel.
|
|
Calling this method does not affect the Driving Base if it is already currently running. It will only have an effect the next time one of the move or start methods is used.
|
|
|
|
Parameters
|
|
-----------
|
|
amount : The distance the Driving Base moves when both motors move one rotation each.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : any value
|
|
|
|
Default : 17.6cm (large wheel)
|
|
|
|
unit : The units of measurement of the amount parameter.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'cm','in'
|
|
|
|
Default : cm
|
|
|
|
Errors
|
|
------------
|
|
TypeError : amount is not a number or unit is not a string.
|
|
|
|
ValueError : unit is not one of the allowed values.
|
|
|
|
RuntimeError : One or both of the Ports do not have a motor connected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def set_default_speed(self, speed):
|
|
"""
|
|
Sets the default motor speed.
|
|
If speed is outside of the allowed range, the value will be set to -100 or 100 depending on whether the value is positive or negative.
|
|
Setting the speed will not have any effect until one of the move or start methods is called, even if the Driving Base is already moving.
|
|
|
|
Parameters
|
|
--------
|
|
speed : The default motor speed
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : -100 to 100
|
|
|
|
Default : 100
|
|
|
|
Errors
|
|
----------
|
|
TypeError : speed is not a number.
|
|
|
|
RuntimeError : One or both of the Ports do not have a motor connected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
def set_stop_action(self, action):
|
|
"""
|
|
Sets the motor action that will be used when the Driving Base stops.
|
|
If action is 'brake' the motors will stop quickly but will be allowed to turn freely.
|
|
If action is 'hold', the motors will actively hold their current position and cannot be turned manually.
|
|
If action is set to 'coast', the motors will stop slowly and will be able to be turned freely.
|
|
Setting the stop action does not take immediate effect on the motors. The setting will be saved and used whenever stop() is called or when one of the move methods has completed without being interrupted.
|
|
|
|
Parameters
|
|
-----------
|
|
action : The desired action of the motors when the Driving Base stops.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'brake','hold','coast'
|
|
|
|
Default : 'coast'
|
|
|
|
Errors
|
|
-----------
|
|
TypeError : action is not a string.
|
|
|
|
ValueError : action is not one of the allowed values.
|
|
|
|
RuntimeError : One or both of the Ports do not have a motor connected or the motors could not be paired.
|
|
"""
|
|
pass
|
|
|
|
class Speaker:
|
|
def __init__(self):
|
|
"""
|
|
Controls this SpikeHub speaker
|
|
"""
|
|
pass
|
|
|
|
def beep(self, note=60, seconds=0.2):
|
|
"""
|
|
Plays a beep on the Hub.
|
|
Your program will not continue until seconds have passed.
|
|
Parameters
|
|
---------
|
|
note : The MIDI note number.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : 44 to 123 (60 is middle C note)
|
|
|
|
Default : 60 (middle C note)
|
|
|
|
seconds : The duration of the beep in seconds.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : any values
|
|
|
|
Default : 0.2 seconds
|
|
|
|
Errors
|
|
---------
|
|
TypeError : note is not an integer or seconds is not a number.
|
|
|
|
ValueError : note is not within the allowed range of 44-123.
|
|
"""
|
|
pass
|
|
def start_beep(self, note=60):
|
|
"""
|
|
Starts playing a beep.
|
|
The beep will play indefinitely until stop() or another beep method is called.
|
|
|
|
Parameters
|
|
-----------
|
|
note : The MIDI note number.
|
|
|
|
Type : float (decimal number)
|
|
|
|
Values : 44 to 123 (60 is middle C note)
|
|
|
|
Default : 60 (middle C note)
|
|
|
|
Errors
|
|
------------
|
|
TypeError : note is not an integer.
|
|
|
|
ValueError : note is not within the allowed range of 44-123
|
|
"""
|
|
pass
|
|
def stop(self):
|
|
"""
|
|
Stops any sound that is playing.
|
|
"""
|
|
pass
|
|
def get_volume(self) -> int:
|
|
"""
|
|
Retrieves the value of the speaker volume.
|
|
This only retrieves the volume for the Hub and not the programming app.
|
|
|
|
Returns
|
|
--------------
|
|
The current volume.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100%
|
|
"""
|
|
pass
|
|
def set_volume(self, volume):
|
|
"""
|
|
Sets the speaker volume.
|
|
If the assigned volume is out of range, the nearest volume (0 or 100) will be used instead. This only sets the volume for the Hub and not the programming app.
|
|
|
|
Parameters
|
|
-----------
|
|
volume : The new volume percentage.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100%
|
|
|
|
Default : 100%
|
|
|
|
Errors
|
|
------------
|
|
TypeError : volume is not an integer.
|
|
"""
|
|
pass
|
|
|
|
class StatusLight:
|
|
def __init__(self):
|
|
"""
|
|
Controls the Status light on the PrimeHub
|
|
"""
|
|
pass
|
|
def on(self, color='white'):
|
|
"""
|
|
Sets the color of the light.
|
|
|
|
Parameters
|
|
--------
|
|
color : Illuminates the Brick Status Light on the Hub in the specified color
|
|
|
|
Type : string (text)
|
|
|
|
Values : azure,black,'blue','cyan','green','orange','pink','red','violet','yellow','white'
|
|
|
|
Default : 'white'
|
|
|
|
Errors
|
|
-------
|
|
TypeError : color is not a string.
|
|
|
|
ValueError : color is not one of the allowed values.
|
|
"""
|
|
pass
|
|
def off(self):
|
|
"""
|
|
Turns the status light off
|
|
"""
|
|
pass
|
|
|
|
class Button:
|
|
def __init__(self, location):
|
|
"""
|
|
Accesses the PrimeHub buttons
|
|
"""
|
|
pass
|
|
def wait_until_pressed(self):
|
|
"""
|
|
Waits until the button is pressed.
|
|
"""
|
|
pass
|
|
def wait_until_released(self):
|
|
"""
|
|
Waits until the button is released.
|
|
"""
|
|
pass
|
|
def was_pressed(self) -> bool:
|
|
"""
|
|
Tests to see whether the button has been pressed since the last time this method called.
|
|
Once this method returns True, the button must be released and pressed again before this method will return True again.
|
|
Returns
|
|
-------------
|
|
If the button was pressed, otherwise
|
|
Type : boolean
|
|
Values : True or False
|
|
"""
|
|
pass
|
|
def is_pressed(self) -> bool:
|
|
"""
|
|
Tests whether the button is pressed.
|
|
Returns
|
|
----------
|
|
True if the button is pressed, otherwise False
|
|
|
|
Type : boolean
|
|
|
|
Values : True or False
|
|
"""
|
|
pass
|
|
|
|
class ColorSensor:
|
|
def __init__(self, port):
|
|
"""
|
|
Controls the color sensor.
|
|
Parameters
|
|
-------------
|
|
port : The port label the sensor is connected to.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'A', 'B', 'C', 'D', and 'E'
|
|
|
|
Default : no default value
|
|
"""
|
|
pass
|
|
def get_color(self) -> str:
|
|
"""
|
|
Retrieves the detected color of a surface.
|
|
|
|
Returns
|
|
-----------
|
|
Name of the color.
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'black','violet','blue','cyan','green','yellow','red','white',None
|
|
|
|
Errors
|
|
-----------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_ambient_light(self) -> int:
|
|
"""
|
|
Retrieves the intensity of the ambient light.
|
|
This causes the Color Sensor to change modes, which can affect your program in unexpected ways. For example, when the Color Sensor is in ambient light mode, it cannot read colors.
|
|
|
|
Returns
|
|
-------------
|
|
The ambient light intensity.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 %
|
|
|
|
Errors
|
|
--------------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_reflected_light(self) -> int:
|
|
"""
|
|
Retrieves the intensity of the reflected light.
|
|
|
|
Returns
|
|
---------
|
|
The reflected light intensity.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 %
|
|
|
|
Errors
|
|
------------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_rgb_intensity(self) -> tuple:
|
|
"""
|
|
Retrieves the red, green, blue, and overall color intensity.
|
|
|
|
Returns
|
|
----------
|
|
Type : tuple of int
|
|
|
|
Values : Red, green, blue, and overall intensity (0-1024)
|
|
|
|
Errors
|
|
-----------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_red(self) -> int:
|
|
"""
|
|
Retrieves the red color intensity.
|
|
|
|
Returns
|
|
--------
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 1024
|
|
|
|
Errors
|
|
----------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_green(self) -> int:
|
|
"""
|
|
Retrieves the green color intensity.
|
|
|
|
Returns
|
|
-----------
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 1024
|
|
|
|
Errors
|
|
-----------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def get_blue(self) -> int:
|
|
"""
|
|
Retrieves the blue color intensity.
|
|
|
|
Returns
|
|
-----------
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 1024
|
|
|
|
Errors
|
|
-----------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def wait_until_color(self, color):
|
|
"""
|
|
Waits until the Color Sensor detects the specified color.
|
|
|
|
Parameters
|
|
-----------
|
|
color : The name of the color
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'black','violet','blue','cyan','green','yellow','red','white',None
|
|
|
|
Default : no default value
|
|
|
|
Errors
|
|
------------
|
|
TypeError : color is not a string or None.
|
|
|
|
ValueError : color is not one of the allowed values.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def wait_for_new_color(self):
|
|
"""
|
|
Waits until the Color Sensor detects a new color.
|
|
The first time this method is called, it returns immediately the detected color. After that, it waits until the Color Sensor detects a color that is different from the color that was detected the last time this method was used.
|
|
|
|
Returns
|
|
-----------
|
|
The name of the new color
|
|
|
|
Type : string (text)
|
|
|
|
Values : 'black','violet','blue','cyan','green','yellow','red','white',None
|
|
|
|
Errors
|
|
----------
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def light_up_all(self, brightness=100):
|
|
"""
|
|
Lights up all of the lights on the Color Sensor with a specified brightness.
|
|
This causes the Color Sensor to change modes, which can affect your program in unexpected ways. For example, when the Color Sensor is in light up mode, it cannot read colors.
|
|
|
|
Parameters
|
|
---------
|
|
brightness : The desired brightness of the lights on the Color Sensor.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 % (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100 %
|
|
|
|
Errors
|
|
----------
|
|
TypeError : brightness is not an integer.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
def light_up(self, light_1=100, light_2=100, light_3=100):
|
|
"""
|
|
Sets the brightness of the individual lights on the Color Sensor.
|
|
This causes the Color Sensor to change modes, which can affect your program in unexpected ways. For example, when the Color Sensor is in light up mode, it cannot read colors.
|
|
|
|
Parameters
|
|
-------------
|
|
light_1 : The desired brightness of light 1.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 % (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100 %
|
|
|
|
light_2 : The desired brightness of light 2.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 % (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100 %
|
|
|
|
light_3 : The desired brightness of light 3.
|
|
|
|
Type : integer (positive or negative whole number, including 0)
|
|
|
|
Values : 0 to 100 % (0 is off and 100 is full brightness.)
|
|
|
|
Default : 100 %
|
|
|
|
Errors
|
|
--------
|
|
TypeError : light_1, light_2, or light_3 is not an integer.
|
|
|
|
RuntimeError : The sensor has been disconnected from the Port.
|
|
"""
|
|
pass
|
|
|
|
class PrimeHub:
|
|
speaker = Speaker()
|
|
motion_sensor = MotionSensor()
|
|
left_button = Button("left")
|
|
right_button = Button("right")
|
|
light_matrix = LightMatrix()
|
|
status_light = StatusLight()
|
|
PORT_A = 'A'
|
|
PORT_B = 'B'
|
|
PORT_C = 'C'
|
|
PORT_D = 'D'
|
|
PORT_E = 'E'
|
|
PORT_F = 'F'
|
|
|
|
def __init__(self):
|
|
"""
|
|
The PrimeHub is divided into six components, each with a number of functions linked to it. To be able to use the Hub, you must initialize it.
|
|
"""
|
|
pass |