API Reference

qwiic_scmd

Python module for the serial control motor driver.

This python package is a port of the existing [SparkFun Serial Controlled Motor Driver Arduino Library](https://github.com/sparkfun/SparkFun_Serial_Controlled_Motor_Driver_Arduino_Library)

This package can be used in conjunction with the overall [SparkFun qwiic Python Package](https://github.com/sparkfun/Qwiic_Py)

New to qwiic? Take a look at the entire [SparkFun qwiic ecosystem](https://www.sparkfun.com/qwiic).

class qwiic_scmd.QwiicScmd(address=None, i2c_driver=None)[source]
Parameters:
  • address – The I2C address to use for the device. If not provided, the default address is used.
  • i2c_driver – An existing i2c driver object. If not provided a driver object is created.
Returns:

The Serial Control Motor Driver device object.

Return type:

Object

begin()[source]

Initialize the operation of the SCMD module

Returns:Returns true of the initializtion was successful, otherwise False.
Return type:bool
bridging_mode(driverNum, bridged)[source]

Configure a driver’s bridging state

Parameters:
  • driverNum – Number of driver. Master is 0, slave 1 is 1, etc. 0 to 16
  • bridged – 0 or 1 for forward and backward
Returns:

No return value

busy()[source]

Returns if the driver is busy

Returns:busy status
Return type:boolean
connected

Determine if a SCMD device is conntected to the system..

Returns:True if the device is connected, otherwise False.
Return type:bool
disable()[source]

Disable driver functions

Returns:No return value
enable()[source]

Enable driver functions

Returns:No return value
get_diagnostics()[source]

Get diagnostic information from the masterd

Returns:Object returned with properties that are the diagnostic info
Return type:Object - SCMDDiagnostics()
get_remote_diagnostics(address)[source]

Get diagnostic information from a slave

Parameters:address – Address of slave to read. Can be 0x50 to 0x5F for slave 1 to 16.
Returns:Object returned with properties that are the diagnostic info
Return type:Object - SCMDDiagnostics()
inversion_mode(motorNum, polarity)[source]

Configure a motor’s direction inversion

Parameters:
  • motoNum – Motor number from 0 to 33
  • polarity – 0 or 1 for default or inverted
Returns:

No return value

is_connected()[source]

Determine if a SCMD device is conntected to the system..

Returns:True if the device is connected, otherwise False.
Return type:bool
read_remote_register(address, offset)[source]

Read data from a slave. Note that this waits 5ms for slave data to be aquired before making the final read.

Parameters:
  • address – Address of slave to read. Can be 0x50 to 0x5F for slave 1 to 16.
  • offset – Address of data to read. Can be 0x00 to 0x7F
Returns:

Register Value

Return type:

integer

ready()[source]

Returns if the driver is ready

Returns:Ready status
Return type:boolean
reset()[source]

This is a hack in the Arduino lib - the placeholder is for compatablity

reset_diagnostic_counts()[source]

Reset the master’s diagnostic counters

Returns:No return value
reset_remote_diagnostic_counts(address)[source]

Reset a slave’s diagnostic counters

Parameters:address – Address of slave to read. Can be 0x50 to 0x5F for slave 1 to 16.
Returns:No return value
set_drive(motorNum, direction, level)[source]

Drive a motor at a level

Parameters:
  • motoNum – Motor number from 0 to 33
  • direction – 0 or 1 for forward and backward
  • level – (-255) to 255 for drive strength
Returns:

No return value

write_remote_register(address, offset, dataToWrite)[source]

Write data from a slave

Parameters:
  • address – Address of slave to read. Can be 0x50 to 0x5F for slave 1 to 16.
  • offset – Address of data to read. Can be 0x00 to 0x7F
  • dataToWrite – The data to write
Returns:

No return value

class qwiic_scmd.SCMDDiagnostics[source]

Object used for diagnostic reporting.

Variables:
  • numberOfSlaves
  • U_I2C_RD_ERR
  • U_I2C_WR_ERR
  • U_BUF_DUMPED
  • E_I2C_RD_ERR
  • E_I2C_WR_ERR
  • LOOP_TIME
  • SLV_POLL_CNT
  • MST_E_ERR
  • MST_E_STATUS
  • FSAFE_FAULTS
  • REG_OOR_CNT
  • REG_RO_WRITE_CNT