Arduino Motor Controllers
Control motors and actuators with Arduino and Arduino-like boards. Supports UART and CANopen communication.
Build Your Motor Projects
Looking for a versatile way to control motors with Arduino?
SOLO Motor Controllers Arduino Library, supported by all SOLO Motor Controllers, is a simple-to-use, complete, and maintained library for managing motors and actuators using Arduino and Arduino-like products.
Hello World Tutorial
Guide
1. Easy Install
SOLO Motor Controllers Arduino Library is fully Open Source and available on GitHub. Install it directly from the Arduino IDE Library Manager.
Github

2.1. Setup
There are several ways to connect your system to your SOLO motor controller.
Alternatives:
- USB port [need a USB data Cable]
- UART pins (TX, RX, GND) [need a USB-to-UART adapter]
- CAN pins (CH, CL, GND) [need a USB-to-CAN adapter]
Important Note for Arduino Uno Users
NOTE 1
- Whenever you want to program your ARDUINO UNO board through the ARDUINO IDE, you need to disconnect the UART_RX of ARDUINO UNO, by not doing this, you might get some errors in the ARDUINO IDE during uploading the code.
( In ARDUINO UNO, there is only 1 line of UART, which is shared between the UART to USB converter of the ARDUINO board itself, which is also used for flashing the ARDUINO UNO board as well. To know more, read this post on the ARDUINO website. )
NOTE 2
- For Arduinos rated at +5V, to have a consistent start-up while Arduino is connected to SOLO, you need to make sure that the +5V output of SOLO is also connected to the +5V of Arduino.
(Arduino might disturb SOLO during boot-up stages due to over-current drained from TX and RX lines.)
UART WIRING Example
CANopen WIRING Example
2.2. Accessories
3. Code Example
UART
#include "SOLOMotorControllersUart.h"
SOLOMotorControllers *SOLO_Obj1;
void setup() {
Serial.begin(115200);
SOLO_Obj1 = new SOLOMotorControllersUart();
}
void loop() {
Serial.println((String) "Read from SOLO the temperature: " + SOLO_Obj1->GetBoardTemperature());
delay(1000);
}
In the example Arduino is connected to the Motor Controller using the UART pins and GND.
CAN OPEN
#include "SOLOMotorControllersCanopenMcp2515.h"
SOLOMotorControllers *SOLO_Obj1;
void setup() {
Serial.begin(115200);
SOLO_Obj1 = new SOLOMotorControllersCanopenMcp2515();
}
void loop() {
Serial.println((String) "Read from SOLO the temperature: " + SOLO_Obj1->GetBoardTemperature());
delay(1000);
}
In the example, ARDUINO is connected to the Motor Controller with a CANOpen Shield.
Here are some examples. You can also check the Repo/Examples, the Documentation or a complete Hello World Tutorial to better know our library.
You can also open library examples directly in the Arduino IDE


CANopen support
For demanding and industry-standard applications, the library supports the CANopen protocol, which can be used as a communication protocol, it’s as simple as the UART communication with extremely few differences, in short, the protocol is much stronger compared to UART, able to support high-intensity communication, under harsh conditions with superior error handling, and networking capabilities.
SOLO Motor Controllers Arduino Library is a single library that contains both UART and CANopen capabilities.
In order to use CANopen, you need a CAN shield (MCP2515).





