Metadata-Version: 2.4
Name: python-st3215
Version: 1.2.1
Summary: A Python library for interfacing with the ST3215 smart servo.
Project-URL: Homepage, https://github.com/alessiodam/python-st3215
Project-URL: Issues, https://github.com/alessiodam/python-st3215/issues
Author-email: Alessio D'Ambrosio <alessio@alessiodam.dev>
License-Expression: GPL-3.0
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Hardware
Requires-Python: >=3.9
Requires-Dist: pyserial>=3.4
Description-Content-Type: text/markdown

# Python-ST3215

[![PyPI Version](https://img.shields.io/pypi/v/python-st3215)](https://pypi.org/project/python-st3215/)
![Python Versions](https://img.shields.io/pypi/pyversions/python-st3215)
![License](https://img.shields.io/github/license/alessiodam/python-st3215)
![Downloads](https://img.shields.io/pypi/dm/python-st3215)
[![Issues](https://img.shields.io/github/issues/alessiodam/python-st3215)](https://github.com/alessiodam/python-st3215/issues)

Python-ST3215 is a lightweight and intuitive Python library for communicating with ST3215 Smart Servos over a serial bus.
It provides a high-level interface for reading and writing servo parameters, controlling motion, and working with the servo memory map.


## Features

* Simple API for controlling ST3215 servos
* High-level wrapper for movement and parameter access
* Helpful exceptions for robust applications
* Fully typed and documented through docstrings
* Tested against Waveshare ST3215 hardware


## Installation

Install via pip:

```bash
pip install python-st3215
```


## Quick Start

```python
from python_st3215 import ST3215, ServoNotRespondingError

controller = ST3215("/dev/ttyUSB0")

try:
    servo = controller.wrap_servo(1)
    print("Current location:", servo.sram.read_current_location())
except ServoNotRespondingError:
    print("Servo not responding")
finally:
    controller.close()
```


## Examples

A collection of example scripts is available in the [`examples/`](examples) directory.
These cover tasks such as motion control, serial communication tests, reading/writing parameters, and more.

## Documentation

The library is fully documented through docstrings.
Hover over classes and functions in your editor to see type hints, parameter descriptions, and usage notes.

## Hardware Compatibility

| Brand     | SKU   | Product                                                                      |
|-----------|-------|------------------------------------------------------------------------------|
| Waveshare | 22414 | [ST3215 Series Serial Bus Servo](https://www.waveshare.com/st3215-servo.htm) |
| Waveshare | 25514 | [Bus Servo Adapter (A)](https://www.waveshare.com/bus-servo-adapter-a.htm)   |

## Memory Table

The complete memory map is documented in [`MEMORY_TABLE.md`](MEMORY_TABLE.md).

## License

This project is licensed under the **GPL-3.0-or-later** license.
See the [`LICENSE`](LICENSE) file for full details.

## Supporting the Project

If this library has been useful to you, consider supporting its development:
**[https://ko-fi.com/alessiodam](https://ko-fi.com/alessiodam)**
