Bricktronics library for motor control
C++ C
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


BricktronicsMotor v1.2 - A software library for LEGO NXT motors.

More details at

To Download

  • Click the "Clone or download" button on the upper-right side of this page below the pink bar, then select "Download ZIP". Rename the uncompressed folder BricktronicsMotor. Check that the BricktronicsMotor folder contains BricktronicsMotor.cpp and BricktronicsMotor.h
  • Place the BricktronicsMotor library folder into your <arduinosketchfolder>/libraries/ folder. You may need to create the libraries subfolder if this is your first installed library. Restart the Arduino IDE.

API Highlights

  • BricktronicsMotor(uint8_t enPin, uint8_t dirPin, uint8_t pwmPin, uint8_t encoderPin1, uint8_t encoderPin2) - Constructor
  • void begin(void) - Call the begin function in your setup() function
  • void coast(void) - Let the motor coast
  • void brake(void) - Rapidly slow down the motor
  • void hold(void) - Stop the motor and hold it in place
  • void update(void) - Recalculate the PID motor control parameters
  • void setFixedDrive(int16_t speed) - Raw, uncontrolled motor speed setting
  • void goToPosition(int32_t position) - Uses PID algorithm to drive motor to position
  • void goToPositionWaitForDelay(int32_t position, uint32_t delayMS) - Same as goToPosition but wait for delayMS
  • void goToPositionWaitForArrival(int32_t position) - Same as goToPosition but wait for arrival. May get stuck if motor never arrives...
  • bool goToPositionWaitForArrivalOrTimeout(int32_t position, uint32_t timeoutMS) - Same as above but will timeout after timeoutMS.
  • void goToAngle(int32_t angle) - There is a whole family of functions for moving to an angle (0 - 355 degrees)
  • void pidSetTunings(double Kp, double Ki, double Kd) - Update the PID tuning parameters
  • bool settledAtPosition(int32_t position) - Check if the motor has reached the desired position, accounting for PID output and a deadband around the desired position.
  • More API details in

If you want to use motors with your Bricktronics Shield or Megashield, you may also be interested in these libraries:

Wayne and Layne, LLC and our products are not connected to or endorsed by the LEGO Group. LEGO, Mindstorms, and NXT are trademarks of the LEGO Group.