#stepper-motor #embedded-hal-driver #pololu #motor #stepper #hal-driver

no-std pololu_tic

An embedded-hal driver to control the Tic series of stepper motor controllers created by Pololu. "

3 unstable releases

Uses new Rust 2024

new 0.2.0-beta.2 May 9, 2025
0.1.0 Feb 21, 2025

#1 in #stepper

MIT/Apache

55KB
744 lines

Pololu Tic Rust Driver

A Rust embedded-hal library for controlling the Pololu Tic series of stepper motor drivers. It supports the same devices the official Arduino driver does, namely the T500, T834, T825, T249, and 36v4.

Currently, this driver supports the I²C and Serial control modes which the Tic devices support. Serial control is planned for the future. This driver only supports embedded-hal >= 1.0.

[!IMPORTANT] The Tic devices utilize I²C clock-stretching, which can cause timeouts and errors on some chips. Ensure you increase the I²C timeout delay on your chip if you are getting timeout errors while using this library.

Feature Flags

This library has a few feature flags to enable or disable support for different interfaces.

  • i2c (default): Enables support for the I²C interface
  • serial: Enables support for the UART Serial interface

License

This library is licensed under the MIT and Apache 2.0 permissive open-source licenses. Please review the terms of these licenses to decide how to incorporate this library into your projects.

Example

A basic example of using this library to set up and control a Tic36v4 is as follows. Ensure you replace <i2c_bus> with your platform's embedded_hal I²C interface.

use pololu_tic::{TicBase, TicI2C, TicProduct};

let mut tic = pololu_tic::TicI2C::new_with_address(
    <i2c_bus>,
    TicProduct::Tic36v4,
    14
);

tic.set_target_velocity(2000000);

loop {
    tic.reset_command_timeout();
}

Dependencies

~0.4–0.9MB
~19K SLoC