Stepper motor drive hat made by Adafruit Uses rpi-gpio-pin daemons for limit switches. Allows for control of microstepping.

external links



The adafruit-stepper-motor-hat daemon can be installed using the following package managers:



The adafruit-stepper-motor-hat daemon is composed of the following traits:

has-position (from has-limits)
uses-serial (from uses-i2c)


microsteps (integer) default: 16

stepper_index (integer) default: 1

lower_limit_port (integer) default: NULL
Port for a rpi-gpio-pin daemon representing the lower limit, running on the same machine. If not given, assume there is no limit detector on the lower bound. This limit is required for the homing procedure.

upper_limit_port (integer) default: NULL
Port for a rpi-gpio-pin daemon representing the upper limit, running on the same machine. If not given, assume there is no limit detector on the upper bound.

i2c_addr (integer) default: 96
I2C bus address.
from uses-i2c
addendum by adafruit-stepper-motor-hat:
Default to 0x60, the hardware default without bridging any addressing pads.

limits ([number, number]) default: [-inf, +inf]
Configuration limits are strictly optional.
from has-limits

out_of_limits (string) default: closest
Control behavior of daemon when set_position is given a value outside of limits.
from has-limits

port (integer)
TCP port for daemon to occupy.
from is-daemon

serial (string) default: NULL
Serial number for the particular device represented by the daemon
from is-daemon

make (String) default: NULL
from is-daemon

model (String) default: NULL
from is-daemon


The adafruit-stepper-motor-hat daemon will provide the following state information:

type: [number, number]
from has-limits

type: number
from has-limitshas-position

type: number
from has-limitshas-position


Daemons with the adafruit-stepper-motor-hat trait expose the following public methods:

get_lower_limit_switch ➜ boolean
Get state of the lower bound limit switch

get_upper_limit_switch ➜ boolean
Get state of the upper bound limit switch

get_limits ➜ [number, number]
Get daemon limits. Limits will be the intersection of config limits and driver limits (when appliciable).
from has-limits

in_limits ➜ boolean
Check if a given position is within daemon limits.
from has-limits

position, {'type': 'number'}

get_destination ➜ number
Get current daemon destination.
from has-limitshas-position

get_units ➜ string
Get units of daemon. These units apply to the position and destination fields.
from has-limitshas-position

get_position ➜ number
Get current daemon position.
from has-limitshas-position

Give the daemon a new destination, and begin motion towards that destination.
from has-limitshas-position

position, {'type': 'number'}

set_relative ➜ number
Give the daemon a new destination relative to its current position. Daemon will immediately begin motion towards new destination. Returns new destination.
from has-limitshas-position

distance, {'type': 'number'}

Initiates the homing procedure. The daemon will report as busy during the homing procedure. After the homing procedure is complete, the daemon will return to the current destination.
from is-homeable

Expose direct access to the serial port to clients. This should not be encouraged for normal use, but may be very important for debugging. If a device is expected to return data, it should be logged at the INFO level, not returned to the client. This is done to allow long tasks to be run asynchronously, and to explicitly discourage use of this method except when debugging. Setting `busy` to true is encouraged, but individual daemon writers should consider their own use case.
from uses-i2cuses-serial

message, {'type': 'string'}

busy ➜ boolean
Returns true if daemon is currently busy.
from is-daemon

id ➜ dictionary
JSON object with information to identify the daemon, including name, kind, make, model, serial.
from is-daemon

get_config_filepath ➜ string
String representing the absolute filepath of the configuration file on the host machine.
from is-daemon

get_config ➜ dictionary
Full configuration for the individual daemon as defined in the TOML file. This includes defaults and shared settings not directly specified in the daemon-specific TOML table.
from is-daemon

get_traits ➜ [string]
Get a full list of the daemon traits.
from is-daemon

get_state ➜ dictionary
Get daemon state, as saved in the state.toml file.
from is-daemon

Set daemon state. Accepts any subset of the state dictionary, dynamically.
from is-daemon

list_methods ➜ [string]
Get an array of all known public method names.
from is-daemon

Cleanly shutdown daemon.
from is-daemon

help ➜ string
If method not given, return a human-readable string with information about the daemon as a whole. If method is given, return a human-readable string with the signature of the method on the first line and a description of the method on subsequent lines. The signature is not specified to be in any particular language. It is intended for usage by humans ONLY.
from is-daemon

method, {'type': 'string'}