RoboticsTutorialsEmbedded Systems

Building Your First Robot Arm with Arduino

Building a robot arm is one of the most rewarding projects for anyone interested in robotics. It combines mechanical design, electronics, and programming into a single hands-on build. In this tutorial, we'll create a 3-axis servo-controlled arm that you can command via serial input.

22 May 2026
10 min read
By Head of Robotics
Building Your First Robot Arm with Arduino

Introduction

Building a robot arm is one of the most rewarding projects for anyone interested in robotics. It combines mechanical design, electronics, and programming into a single hands-on build. In this tutorial, we'll create a 3-axis servo-controlled arm that you can command via serial input.

Parts You'll Need

ComponentQuantityNotes
Arduino Uno1Any compatible board works
MG996R Servo Motor3High-torque, metal gear
3D-Printed Arm Segments1 setSTL files linked below
Breadboard + Jumper WiresFor prototyping
5V 3A Power Supply1Servos draw significant current

Mechanical Assembly

  • Print the parts — download the STL files from our GitHub repo
  • Mount the base servo — this controls rotation
  • Attach the shoulder and elbow segments — use servo horns and M3 screws
  • Secure all connections — a wobbly arm won't repeat positions accurately

Wiring

Arduino Pin → Servo Signal
────────────────────────────
D9 → Base servo (rotation)
D10 → Shoulder servo
D11 → Elbow servo

5V Supply → Servo VCC (all)
GND → Servo GND + Arduino GND

Important: Never power servos directly from the Arduino's 5V pin — the current draw can damage the board.

The Code

#include <Servo.h>

Servo base, shoulder, elbow;

void setup() {
 base.attach(9);
 shoulder.attach(10);
 elbow.attach(11);
 Serial.begin(9600);
 Serial.println("Robot Arm Ready. Format: B,S,E (0-180)");
}

void loop() {
 if (Serial.available()) {
 String input = Serial.readStringUntil('\n');
 int b = input.substring(0, input.indexOf(',')).toInt();
 int s = input.substring(input.indexOf(',') + 1, input.lastIndexOf(',')).toInt();
 int e = input.substring(input.lastIndexOf(',') + 1).toInt();

 base.write(constrain(b, 0, 180));
 shoulder.write(constrain(s, 0, 180));
 elbow.write(constrain(e, 0, 180));
 Serial.println("Moved!");
 }
}

Next Steps

  • Add inverse kinematics for coordinate-based control
  • Attach a gripper for pick-and-place tasks
  • Upgrade to stepper motors for higher precision

Happy building!

Written by

Head of Robotics

Head of Robotics & Faculty

Leads the robotics curriculum and the lab, from ROS and kinematics to industrial integration and digital twins. Believes you learn robotics by building robots.

Read it.Now build it.

Every piece here comes out of real work in the lab. Come do that work yourself — book a visit or find your track.