I have a Snapper Robotic Arm kit from Trossen Robotics. The servos are powered externally via 7v/5a supply that came with the kit. I power the Geekduino via USB to micro-USB connection, and upload the sketch from my Macbook Pro.

Whenever I run a sketch like this or an animation written using this library, the servos run & animate just fine. If, however, I power the Geekduino by connecting the USB cable to my Raspberry Pi 3 instead, the servos run erratically: halfway through an animation, a servo that has any load on it at all will give way, or a servo will start "ticking"/moving a few degrees at regular one second intervals, or both.

I just can't figure why the RPi scenario doesn't work. Is it something to do with the USB port in the RPi? What else can I investigate that I'm not thinking of? The Raspberry Pi 3 is powered by a recommended 5v/2.5a supply, and I've properly disabled anything that would interfere with the serial port (that I know of).

NOTE: lsusb on the RPi lists the GeekDuino as an FTDI device, rather than Arduino or Atmel, if that makes a difference.

  • If you don't get helpful answers here, I would suggest you ask at arduino.stackexchange.com Dec 21, 2016 at 23:35
  • 1
    Will do. I originally posted there, but deleted because I wasn't sure which forum was best.
    – Gregir
    Dec 21, 2016 at 23:37

2 Answers 2


Your GeekDuino is based on ATMega328 which AFAIK doesn't provide any UART flow control. So, if you send too many bytes at once, you will lose some of the bytes and thus risk to get erratic behavior depending on the protocol you have. I know you run the same software on both Mac and RPi, but they certainly have different UART drivers, which may affect how many bytes they send at once.

If possible, make your GeekDuino send back whatever it receives from the UART, then you'll have a clear picture of what you receive.

  • OK, would it be sufficient to just serial.write what the GeekDuino receives back to the application on the computer? Anything else I should add?
    – Gregir
    Dec 22, 2016 at 6:44
  • @Gregir Yep, that's exactly what I have in mind. Dec 22, 2016 at 7:53
  • Ran a test and it looks like the GeekDuino is getting clean information from serial.
    – Gregir
    Dec 22, 2016 at 17:39
  • I'm not actually using UART at this point (by connecting to the TX, DX pins, etc.) I have a USB cable on the RPi connected to micro USB on the GeekDuino.
    – Gregir
    Dec 22, 2016 at 18:53
  • 1
    @Gregir It doesn't really matter whether you have a separate UART module or the UART chip on the same board as the ATMega328, which is your case. You still get TX and RX connected on the board with copper traces. But more to the point, if you're getting data without any losses, something else must cause your issue, and I don't know what it is. Dec 22, 2016 at 20:31

This turned out to be an issue of powering the Geekduino from any of the Raspberry Pi's ports. I swapped out the Geekduino for an Arduino Uno, used the USB A to USB B cable, put the Robot Geek sensor shield on it, and ran my programs. They servos animate fine when the Arduino is powered by the Raspberry Pi now, as well as the Macbook Pro.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.