controllables.ServoMotor
- class controllables.ServoMotor(port: Optional[int] = None)
Reference to a servo motor part. Base class:
MotorBase
.The follow code block assumes that a servo is assigned to port
0
.from controllables import ServoMotor from inputs import Input from math import tau motor = ServoMotor(0) left = Input.stream("a") right = Input.stream("d") rotation = 0 stepsize = tau / 12. while True: for event in left: if event: rotation -= stepsize for event in right: if event: rotation += stepsize motor.spin_to(rotation)
- spin(power: float = 1)
Sends a signal to spin the motor.
power
should be set to afloat
from-1
to1
representing the proportion of max velocity at which the motor will run. Negative values run the motor backwards.from controllables import ServoMotor from time import sleep motor = ServoMotor(0) motor.spin() sleep(1) motor.spin(-1) sleep(1) motor.stop()
- spin_to(angle: float)
Sends a signal to spin the motor towards
angle
in the clockwise direction.angle
should be provided in radians. A negative value forangle
will spin the motor counter clockwise.from controllables import ServoMotor from math import tau #get the motor reference motor = ServoMotor(0) #spin the motor a quater turn to the right. motor.spin_to(tau / 4.)
- spin_to_degrees(angle: float)
Sends a signal to spin the motor towards
angle
in the clockwise direction.angle
should be provided in degrees. A negative value forangle
will spin the motor counter clockwise.from controllables import ServoMotor #get the motor reference motor = ServoMotor(0) #spin the motor a quater turn to the right. motor.spin_to_degrees(90)
- stop()
Stops running the motor.
Note
If a transmitter is spinning the motor, this will not stop it.
from controllables import ServoMotor from time import sleep from math import tau motor = ServoMotor(0) #set the motor to move to a quarter turn motor.spin_to(tau / 4.) sleep(2) #release control of the motor so it can be moved by transmitters #or the "return to origin" property motor.stop()
- property limits: Tuple[float, float]
A tuple with two positive radian components representing the counterclockwise and clockwise rotational limits of the servo motor respectively.
To set the limits to their max do the following:
from controllables import ServoMotor from math import tau motor = ServoMotor(0) #set the limits in each direction to half #the way around the circle motor.limits = (tau / 2.,tau / 2.)
- property limits_degrees: Tuple[float, float]
The limits (in degrees) property of the servo avaliable in the properties tab.
To set the limits to their max do the following:
from controllables import ServoMotor from math import tau motor = ServoMotor(0) #set the limits in each direction to half #the way around the circle motor.limits = (180,180)
- property oscillate: bool
The oscillate property of the servo avaliable in the properties tab.
- property return_to_origin: bool
The return to origin property of the servo in the properties tab.
- property map_to_input: bool
The map to input property of the servo in the properties tab.
- property acceleration_time: float
The acceleration time (in seconds) property of the motor avaliable in the properties tab.
- angle() float
Returns the angle of the motor in radians.
- degrees() float
Returns the angle of the motor in degrees.
- property flipped: bool
The flip property of the motor avaliable in the properties tab.
- property max_rpm: float
The max rpm property of the motor avaliable in the properties tab.
- property max_torque: float
The max torque (in newton meters) property of the motor avaliable in the properties tab.
- property max_velocity: float
The maximum angular velocity of the motor in radians per second.
- name() str
Returns the user editable name of the controllable as found in the properties tab of the game.
from ports import PortReference print(PortReference(0).name())
- rpm() float
Returns the angular velocity of the motor in rotations per minute.
- velocity() float
Returns the angular velocity of the motor in radians per second.