Skip to content
/ SMCC Public

SMCC (SMC_core) allows for direct communication and control of the Serial-Motor-Controller project via Python-code.

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
LICENSE
Notifications You must be signed in to change notification settings

Wauro21/SMCC

Repository files navigation

SMCC

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.

Index

Installation

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

Example use

Quick Start

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()

In depth examples

Two detailed explained examples are provided on Examples:

  1. python_example.py : Shows the basic operation of the API, by performing the configuration and then a full counterclockwise rotation of the stepper motor.
  2. 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)

Reference

The REFERENCE.md provides a detailed explanation of every function and constant provided on the API.

About

SMCC (SMC_core) allows for direct communication and control of the Serial-Motor-Controller project via Python-code.

Topics

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
LICENSE

Stars

Watchers

Forks

Packages

No packages published

Languages