The SMCC (SMC-Core) is a simple python based API that allows to interface via serial port with the SMCD (SMC-Driver). This allows the SMCC to be imported to your own projects without having to drag the GUI with it.
To install the SMCC
just use pip as follows:
$ pip install smcc
The project is hosted on the pypi register: https://pypi.org/projects/SMCC
Configure a 3.75°/step stepper motor to perform a full clockwise rotation at 20 rpm:
# Imports
import serial
import time
from SMCC.Commands import SETUP_CMD, STEP_CMD, generateControlDict, sendCommand, getFrequency
# Configure motor
ctrl_dict = generateControlDict()
ctrl_dict['degrees_per_step'] = 3.75
# Serial port configuration
port='/dev/ttyACM0'
br = 9600
to = 10 # seconds
ctrl_dict['comms'] = serial.Serial(port, baudrate=br, timeout=to)
# Wait 10 seconds for Arduino to reboot
time.sleep(10)
# Configure speed
ctrl_dict['speed'] = 20
# Configure freq from speed
_, real_freq, counter = getFrequency(ctrl_dict)
ctrl_dict['freq'] = real_freq
ctrl_dict['freq_counter'] = counter
# Send setup CMD
setup_cmd = SETUP_CMD(ctrl_dict)
setup_response = sendCommand(ctrl_dict['comms'], setup_cmd)
# Set rotation direction and number of steps
n_steps = int(360/ctrl_dict['degrees_per_step'])
ctrl_dict['steps'] = n_steps
ctrl_dict['direction'] = True
# Send step cmd
step_cmd = STEP_CMD(ctrl_dict)
step_response = sendCommand(ctrl_dict['comms'], step_cmd)
# Wait for the motor to complete rotation before closing port
wait_time = 20 #Seconds
time.sleep(wait_time)
ctrl_dict['comms'].close()
Two detailed explained examples are provided on Examples:
python_example.py
: Shows the basic operation of the API, by performing the configuration and then a full counterclockwise rotation of the stepper motor.jupyter_example.ipynb
: Shows the basic operation of the API, performs a clockwise and then a counterclockwise rotation of the stepper motor.
All the examples are designed to work with the SMCD (Serial Motor Controller Driver)
The REFERENCE.md provides a detailed explanation of every function and constant provided on the API.