Hackaday Space ARG contest prize build.
Powering Hexy has proved to be a slight challenge, at least un-wired.
I've got to collect all my batteries or spend some bucks. For now I've found a 6V power supply for the servo side of the board, using usb for the logic side. Hexy is Alive. I messed up connecting a few servos to the board, and a couple of Hexy's legs didn't work as expected, a quick swap of positions and all seemed well, Until I ran the first few sets of moves in the PoMoCo python application provided with Hexy.
The gui give buttons for all of Hexy's moves, controls for each servo, and a "Kill all Servos" button. When you send Hexy though a move, PoMoCo doesn't kill power to the servos used after it's moved, leaving you with a hexy with a bunch of servo's making a bunch of noise. Your only option is to push the kill all button.
Now I don't understand servos too much yet, but this would indicate to me that the servos are having to work, fighting each other pretty hard when you have already completed a move. Maybe this is part of the high servo failure rate users have experienced?
Taking a look into the code a little, it became very apparent that the software was written to get the product out and has not really been updated to included the functionality they had once planned. There are a number of TODO's left waiting for someone to implement.
One of which appears to be return feedback from Hexy, so you can't tell if a servo has made it to it's target (possible??), which didn't really leave them many options that I can see to terminate power to the servo. Hence the Kill All Servos button.
# retreive waiting responses
# don't need reading yet, holding off on fully implementing it till needed
This doesn't work for me. I want Hexy to make it's intended moves and then go silent, not having servos fighting each other until you click a button telling them to stop. So I've made a few changes and will continue to make the software a little kinder to Hexy before I run the servos much more. I've tried making some changes to the move() function. Though the way the moves are designed to "cascade" (for lack of a better word) changes there won't quite work as expected.
For now I have been adding servo kill commands to the moves that I am using.
At the end of a moves .py file I add something like
for i in servos:
servos[i].kill()