Let's Make Robots! | RobotShop

Micro Servo Robot

MiniRobot_1_3.ino_.zip2.73 KB
MiniRobot_1_3EN.ino_.zip3.52 KB
Micro_Servo_Robot_Flowchart.pdf84.04 KB
Micro_Servo_Robot_Diagramm.pdf74.13 KB

4 axis robot arm with a small gripper and teach function. (In fact: it is a 3 axis robot)

This robot can follow. This robot can learn. And this robot can repeat endles. And he lost all his memory if the batterys are low. This makes it new all the time he is powered again. - The idea for this project is taken from https://www.robotshop.com/letsmakerobots/node/21633 - Stoerpeak made me do it! -

Arduino mini pro 5V/16MHz

4 micro servos 180degrees

4 22k potentiometer

NmH Battery 4.8V

Wires, Button, Switch

Balsa wood, Metal, Plastic

Zip Ties and Glue


Teach mode: After a reset the robot arm follows the teach in arm while simple mapping the analog inputs every 25ms to the servo motors. Pressing the button stores each servo position in a array

Play mode: Double press the button switch to play mode. The sketch reads the array step by step and and moves the robot arm. For cool loocking movements i added a routine calculates different micro steps for each servo to have moving start and end sync on all axis. Also added a ramp for soft increase/decrease velocity. Shorter travel distances the robot does slow, longer distances with faster speed. Its all about timing so my thoughts in this moment

Play Mode version 1.1 The gripper input is used to set the delay (0,1,3,15,60,300 seconds) after a loop is done. The switch (it was left from the project start) pauses the robot

08/2015 i added the same code 1.3 but i try add english comments

10/2015 flowchart for the code and electrical diagram. (make sure you use a pullUp resistor at input 4,6 / change the code for input 4. This should fix the 'slow running problem' often happend)


Hey people!!: If u share my code please keep decency and give me credits. And dont forget Stoerpeak!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Hi, nice build !

Thank you for sharing. I like the idea of a potentiometer arm to control the one with servos. In fact it's a more elaborated joystick, but I'm a simple hobbyist...

I like the flexible gripper too.

Would be nice that you post your code to have a look at your "algorythm" of microsteps and ramp for velocity.

Ok, zip file attached. But i can imagine the code is very ugly for someone has studied that stuff.  But it works well ;-)

I like it! Yeah, the code would be interesting.

Dear: Pinaut

You should know I am a big fan of baxter and your robot is a lot like him. Baxter is an industrial smart robot that can do almost anything. Maybe you should make your robot humanoid to resemble baxter, just saying.

From: Noah

Thanks so much for sharing and giving good explanation of algorithm approach.

quite precise movements. why don't you create direct interface with human hands and fingers? Great job anyway!!

Well, first of all, welcome to LMR. Your robot arm is something really cool, especially the learning option. 

You said he's losing all his memory when powered down. Why not write those nubers in the EEPROM or add an SD card to your robot arm for lots of different moving patterns.

Another thing. Don't worry about how your code looks like. Important is that it works. Once compiled it's just looking the same like any other code :-) Viele Grüße nach Deutschland ...


Sure it would be possible write the recorded steps in a memory (the code writes data to serial after start playmode (for debug or later using)). But i'm fine with 'no memory' because ... how should i say? ... its the soul from this robot: Be something like 'virgin' or rebirth and new each time he is powered on. - Everything in life is ephemeral. ;-)

Soul, rebirth, fair enough. Still, he should remember something, at least give him a name :-)

Lumi, I think the memory idea is great. So the Pinaut Arm I built now has eeprom storage for one loop only. Its still in beta, but if power is removed, it will do an EEPROM.get and perform the saved loop. No easy task for a ROM noobie, but I'm getting close to complete. Maybe a 4 position rotary switch to select 1 of 4 stored loops. Any thoughts?