Motor
Controlling the motors directly is not very precise because the NXT firmware
does not expose the needed method for precise control. If you need more than
basic controls, nxt.motcont.MotCont
provides finer controls thanks to
a program running on the NXT brick.
Work in progress… The nxt.motor.Motor
class will probably be
reworked in a future version.
- class nxt.motor.Port(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
Enum
Output port identifier.
- A = 0
Output port A.
- B = 1
Output port B.
- C = 2
Output port C.
- class nxt.motor.Mode(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
Flag
Motor mode.
These are flags that can be combined together using the | operator.
- IDLE = 0
Keep the motor unpowered.
- ON = 1
Enable motor power.
- class nxt.motor.RegulationMode(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
Enum
Motor regulation mode.
- IDLE = 0
No regulation.
- SPEED = 1
Speed regulation,
Mode.REGULATED
must be enabled.
- SYNC = 2
Synchronous regulation of two motors,
Mode.REGULATED
must be enabled.
- class nxt.motor.RunState(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
Enum
Motor run state.
- IDLE = 0
Not running.
- RAMP_UP = 16
Ramping speed up.
- RUNNING = 32
Running at constant speed.
- RAMP_DOWN = 64
Ramping speed down.
- nxt.motor.LIMIT_RUN_FOREVER = 0
No angle limit.
- exception nxt.motor.BlockedException
Bases:
Exception
Raised when a motor is not moving as expected.
- class nxt.motor.OutputState(values)
Bases:
object
An object holding the internal state of a motor, not including rotation counters.
- to_list()
Returns a list of properties that can be used with set_output_state.
- class nxt.motor.TachoInfo(values)
Bases:
object
An object containing the information about the rotation of a motor.
- get_target(tacho_limit, direction)
Returns a TachoInfo object which corresponds to tacho state after moving for tacho_limit ticks in the given direction.
- is_greater(target, direction)
- is_near(target, threshold)
- class nxt.motor.SynchronizedTacho(leader_tacho, follower_tacho)
Bases:
object
- get_target(tacho_limit, direction)
This method will leave follower’s target as None
- is_greater(other, direction)
- is_near(other, threshold)
- nxt.motor.get_tacho_and_state(values)
A convenience function. values is the list of values from get_output_state. Returns both OutputState and TachoInfo.
- class nxt.motor.BaseMotor
Bases:
object
Base class for motors
- turn(power, tacho_units, brake=True, timeout=1, emulate=True, stop_turn=<function BaseMotor.<lambda>>)
Use this to turn a motor.
- Parameters:
power (int) – Value between -127 and 128 (an absolute value greater than 64 is recommended)
tacho_units (int) – Number of degrees to turn the motor. Values smaller than 50 are not recommended and may have strange results.
brake (bool) – Whether or not to hold the motor after the function exits (either by reaching the distance or throwing an exception).
timeout (int) – Number of seconds after which a BlockedException is raised if the motor doesn’t turn.
emulate (bool) – If set to
False
, the motor is aware of the tacho limit. IfTrue
, a run() function equivalent is used. Warning: motors remember their positions and not using emulate may lead to strange behavior, especially with synced motorslambda – bool stop_turn: If stop_turn returns
True
the motor stops turning. Depending onbrake
it stops by holding or not holding the motor.
The motor will not stop until it turns the desired distance or stop_turn returns True. Accuracy is much better over a USB connection than with bluetooth…
- class nxt.motor.Motor(brick, port)
Bases:
BaseMotor
- get_tacho()
- reset_position(relative)
Resets the counters. Relative can be True or False
- run(power=100, regulated=False)
Tells the motor to run continuously.
- brake()
Holds the motor in place
- idle()
Tells the motor to stop whatever it’s doing. It also desyncs it.
- weak_turn(power, tacho_units)
Tries to turn a motor for the specified distance. This function returns immediately, and it’s not guaranteed that the motor turns that distance. This is an interface to use tacho_limit without RegulationMode.SPEED
- class nxt.motor.SynchronizedMotors(leader, follower, turn_ratio)
Bases:
BaseMotor
The object used to make two motors run in sync. Many objects may be present at the same time but they can’t be used at the same time. Warning! Movement methods reset tacho counter. THIS CODE IS EXPERIMENTAL!!!
- get_tacho()
- reset_position(relative)
Resets the counters. Relative can be True or False
- run(power=100)
Warning! After calling this method, make sure to call idle. The motors are reported to behave wildly otherwise.
- brake()
- idle()
- turn(power, tacho_units, brake=True, timeout=1)
Use this to turn a motor.
- Parameters:
power (int) – Value between -127 and 128 (an absolute value greater than 64 is recommended)
tacho_units (int) – Number of degrees to turn the motor. Values smaller than 50 are not recommended and may have strange results.
brake (bool) – Whether or not to hold the motor after the function exits (either by reaching the distance or throwing an exception).
timeout (int) – Number of seconds after which a BlockedException is raised if the motor doesn’t turn.
emulate (bool) – If set to
False
, the motor is aware of the tacho limit. IfTrue
, a run() function equivalent is used. Warning: motors remember their positions and not using emulate may lead to strange behavior, especially with synced motorslambda – bool stop_turn: If stop_turn returns
True
the motor stops turning. Depending onbrake
it stops by holding or not holding the motor.
The motor will not stop until it turns the desired distance or stop_turn returns True. Accuracy is much better over a USB connection than with bluetooth…