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.