# JMotor Library [![arduino-library-badge](https://www.ardu-badge.com/badge/JMotor.svg?)](https://www.ardu-badge.com/JMotor) [![PlatformIO Registry](https://badges.registry.platformio.org/packages/joshua1024/library/JMotor.svg?)](https://registry.platformio.org/libraries/joshua1024/JMotor) [![ESP32 Component Registry](https://components.espressif.com/components/joshua-8/jmotor/badge.svg)](https://components.espressif.com/components/joshua-8/jmotor) ## work in progress! Bug reports and suggestions welcomed ### there will be backwards compatible breaking changes between some versions https://github.com/joshua-8/JMotor reference docs (made with Doxygen): https://joshua-8.github.io/JMotor/md_readme.html list of all classes: https://joshua-8.github.io/JMotor/hierarchy.html This library defines common interfaces for reading encoders and controlling motors allowing for easy open or closed loop motor control. Supports reading the following kinds of encoders: quadrature, single pin, absolute with PWM output, AS5048b with I2C. Supports controlling the following kinds of motor drivers: single PWM pin, PWM and direction pins, servo signal, L293/L298 driver. supports the following boards: ESP32, ESP32S3, Arduino AVR (tested on nano), Teensy (tested on LC), SAMD M0 boards (tested on feather m0) available as an Espressif IDF Component: https://components.espressif.com/components/joshua-8/jmotor Why do all the classes start with J? It's to avoid name conflicts with other libraries (and J is my first initial). This library uses lots of floating point math, and in general isn't optimized for speed or small size. Ease of use and ease of development is prioritized.
bc3ce341d1306d1cb135dcecdbb886e71e791b40
idf.py add-dependency "joshua-8/jmotor^0.25.2"