When I first built Sawppy using LewanSoul LX-16A serial bus servos, I was not interested in using their PC software which was tailored to running pre-scripted sequences of motion. At the time I was not using an Arduino, either, so I wrote my own serial communication driver in Python based on LewanSoul’s PDF documenting their serial communication protocol.
This time around, I am using an Arduino and eager to take advantage of already prebuilt software to cut down on development time. In the same Dropbox where I found my
LewanSoul Bus Servo Communication Protocol.pdf reference document, there was a file
LSC series communication routines of controller.zip. Now that I’ve seen Arduino libraries packaged in a zip file, I looked inside to verify the structure of having
*.h source files. It turns out they were packaged inside that zip file as another file
LobotServoController.zip. This zip file within a zip file looked like an Arduino library, with
LobotServoController.h header file and
LobotServoController.cpp source, a
keywords.txt for Arduino IDE syntax highlighting, and a few
*.ino sketch files inside an example directory.
It all looked very promising at first glance but a closer look deflated the initial enthusiasm. The API only had commands for servo position, nothing for continuous rotation mode which is how Sawppy’s six wheels roll on the ground. And looking under the hood inside the code, the serial communication header is in the wrong format. The first two bytes are LewanSoul identifiers
0x55 0x55 as expected, but the third byte is length, not servo ID.
Digging a little deeper, I realized despite its location in the
LX-16A Bus Servo subdirectory of LewanSoul’s Dropbox, this Arduino library was not for controlling LX-16A devices. They are, as the file name stated (but I overlooked) intended for their LSC line of controller boards for standard RC servos, not the serial bus servos.
Sadly, this promising-looking Arduino library will not help me.
Code for LX-16A servos actually lived in a different folder:
bus servo communication routines held Arduino sketches matching the expected protocol. However, they were written as individual one big flat *.ino file, and not written as an Arduino library.
This is fine for sample code, but not well suited to be part of a larger project. It looks like I’ll need to learn to how to write an Arduino library after all, either to convert this LewanSoul sample code into a library or create my own from scratch (again).