Skip to content

Motor API

vihaanvp edited this page Jun 25, 2026 · 1 revision

Motor API

The Motor class controls a DC motor connected through an H-bridge driver that uses 2 direction pins + 1 PWM pin (e.g. L298N, TB6612FNG, L293D, MX1508).

You never create a Motor directly — use board.attach_motor().


Motor.forward()

Motor.forward(speed: int | float = 100) -> None

Rotate the motor forward at the given speed.

Parameter Type Default Description
speed int/float 100 Speed percentage (0 = stop, 100 = full).

Raises: InvalidSpeedError if speed is not a number or outside 0–100.

motor.forward()     # full speed
motor.forward(75)   # 75% speed

Motor.backward()

Motor.backward(speed: int | float = 100) -> None

Rotate the motor backward. Same parameters and validation as forward().

motor.backward(50)  # 50% speed backward

Motor.stop()

Motor.stop() -> None

Coast to a stop (both direction pins LOW, PWM = 0).

motor.stop()

Motor.brake()

Motor.brake() -> None

Brake by shorting the motor terminals (both direction pins HIGH, PWM = 0). Stops more abruptly than stop().

motor.brake()

Motor.set_speed()

Motor.set_speed(speed: int | float) -> None

Change speed without altering direction.

Parameter Type Description
speed int/float New speed (0–100).
motor.forward(100)
motor.set_speed(30)   # now going forward at 30%

Motor.speed property

Motor.speed -> int

Current speed (0–100). Readable and writable (setter calls set_speed()).

print(motor.speed)   # e.g. 75
motor.speed = 50     # same as motor.set_speed(50)

Motor.direction property

Motor.direction -> str

One of: "forward", "backward", "stopped", "braked".

print(motor.direction)  # e.g. "forward"

Motor.name

Motor.name -> str | None

The optional name given at creation time.

motor = board.attach_motor(2, 4, 11, name="left")
print(motor.name)  # "left"

Motor.__repr__()

repr(motor)  # e.g. "Motor(direction='forward', speed=75)"

Clone this wiki locally