RobotGeek Snapper Arm Getting Started Guide

This guide will teach you how to setup and use your RobotGeek Snapper Robot Arm.

This guide will refer to the RobotGeek Geekduino, the Arduino Compatible microcontroller recommended for use with RobotGeek products. However this kit will also work with the Arduino Uno, or other Arduino variants like the Seeeduino.

The Snapper Arm Kit comes with a RobotGeek Gripper Kit. We recomend that you go through the RobotGeek Gripper Getting Started Guide before proceding. The guide will show you how to build and test your gripper, as well as configure the other servos for your arm.

Setting up the Arduino Software

Geekduino Getting Started Guide

If you have not already set up your Geekduino/ Arduino compatible board, please see the Geekduino Getting Started Guide. This guide will assist you in getting set up with the Arduino software as well as install libraries and test sketches for the Snapper Arm.

Snapper Arm Assembly

Snapper Arm Assembly Guide

Wiring the Snapper Arm

Direct Analog Control

During the assembly of the Snapper Arm, you should have wired up your servos to the sensor shield. Please take a moment to double check your connections and jumper match the following diagram.

Device Sensor Shield Port
Base Rotation RobotGeek Servo Digital 3
Shoulder RobotGeek Servo Digital 5
Elbow RobotGeek Servo Digital 6
Wrist RobotGeek Servo Digital 9
Gripper 9G Servo Digital 10
Base Rotation Knob Analog 0
Shoulder Joystick (Vertical) Analog 1
Elbow Joystick (Vertical) Analog 2
Wrist Joystick (Vertical) Analog 3
Gripper Rotation Knob Analog 4

Testing the Arm

When you installed the RobotGeek Tools and Libraries, you installed the test sketch for the snapper arm. You can find the snapperArmTest here:

File -> Sketchbook -> RobotGeek sketches -> Tests -> snapperArmTest

Now load the sketch onto your Geekduino. The Arm should complete the following movements:

  • Arm Moves to 'centered' position
  • Base Servo
    • Base servo moves 90 degrees clockwise (right)
    • Base servo moves 180 degrees counterclockwise (left)
    • Base servo moves 90 degrees clockwise to 'centered' position (right)
  • Shoulder Servo
    • Shoulder servo moves 90 degrees clockwise (back)
    • Shoulder servo moves ~120 degrees counterclockwise (forward)
    • Shoulder servo moves ~30 degrees clockwise (back) to 'centered' position
  • Elbow Servo
    • Elbow servo moves ~30 degrees clockwise (down)
    • Elbow servo moves ~120 degrees counterclockwise (up)
    • Elbow servo moves 90 degrees clockwise (down)to 'centered' position
  • Wrist Servo
    • Wrist servo moves 90 degrees clockwise (down)
    • Wrist servo moves 180 degrees counterclockwise (down)
    • Wrist servo moves 90 degrees clockwise (down)to 'centered' position
  • Gripper Servo
    • Gripper servo moves ~60 degrees clockwise (open)
    • Gripper servo moves ~120 degrees counterclockwise (closed)
    • Gripper servo moves ~60 degrees clockwise (half open) to 'centered' position

The Arm will then repeat this sequence.

Controlling the Arm

RobotGeek Snapper Arm Control Sketch

To control the Snapper Arm with the included analog inputs you will need to load the RobotGeek Snapper Arm Control Sketch onto your Geekduino. For easy access we recommend that you put the RobotGeekArmAnalog folder in

Documents -> Arduino -> RobotGeek sketches	

You will then be able to access the sketch from

File -> Sketchbook -> RobotGeek sketches ->RobotGeekArmAnalog	

After you've restarted your Arduino IDE. Otherwise you can open the file RobotGeekArmAnalog.ino directly.


The two rotational knobs will control the base servo and the gripper servo directly. Rotating the first knob counter-clockwise will rotate the base servo counter-clockwise, and rotating the knob clockwise will rotate the base clockwise. Rotating the second knob counter-clockwise will open the gripper all the way, and rotating the knob clockwise will close the gripper all the way.

The three joysticks will incrementally move the shoulder, elbow and wrist joint. Moving the joystick up will slowly move the joint in one direction, while moving the joystick down will move it in the opposite direction. Moving the joysticks left/right will have no effect, as these axes are not connected.

These servos have no over-current protection. Trying to lift to large of a load or applying to much force to the gripper may damage the servos.

Analog Input Mapping

This code uses a combination of direct and incremental code for converting analog inputs into servo positions

  • Direct/Absolute Mapping

    Absolute positioning is used for the knobs controlling the base and gripper servo. This means that the value of the knob is mapped directly to the corresponding servo value. This method is ideal for sensors that stay at static positions such as knobs and sliders.

  • Incremental Mapping

    Incremental code is used for the joysticks controlling the shoulder, elbow and gripper servo. Each joystick value is mapped to a small relatively small positive or negative value. This value is then added to the present position of the servo. The action of slowly moving the joystick away from its center position can slowly move each joint of the robot. When the joystick is centered, no movement is made

    The choice for using Direct/Incremental mapping for each joint was made based on usability, however the code can be modified so that any joint can use either direct or incremental mapping

Servo Positions

The servos' positions will be tracked in microseconds, and written to the servos using .writeMicroseconds().

For RobotGeek servos, 600ms corresponds to fully counter-clockwise while 2400ms corresponds to fully clock-wise. 1500ms represents the servo being centered

For the 9g servo, 900ms corresponds to fully counter-clockwise while 2100ms corresponds to fully clock-wise. 1500ms represents the servo being centered