top of page

Servo Robotic Arm: Firmware

  • Justin Michaud
  • Nov 28, 2025
  • 1 min read

Of all the three aspects of the design, this is the most simplistic. the Arduino has a struct with a series of arm positions, an angle for each joint, and a bool for if the gripper should be open or closed. To attempt to limit the current I also implemented a very basic state machine like system that let me slow the movements down. Each position was treated as a state and based on a speed variable the servo position was either increased or decreased by that value every 100ms until the position and desired state equaled each other.

The system worked, but it led to an issue where each joint rotated at a constant velocity, a joint that had to move 10deg finished much sooner than the others. In future versions I would update the system to consider what the largest distance and joint must cover, calculate the time it would take, and make every other joint take that amount of time. While that wouldn't be proper forward or reverse kinematics, it would allow fairly smooth preprogramed motion.

Comments


bottom of page