Key Topics

Multi-Servo Control Structure Using PWM Servo Driver

The PWM Servo Driver (Adafruit_PWMServoDriver) functioned as our tool to handle multiple servo motors during this stage of development. The process of driving multiple servos from Arduino or ESP32 board pins creates power and signal problems which we solved through channel-based servo control with driver boards. The driver board provides channels (e.g., 0 to 15) which users can connect to different servo motors for separate control of each connected motor. The system architecture works best for robotic arm systems because it enables simultaneous control of multiple joints which require precise synchronization.

Servo Driver

Servo Driver


Joystick Input and the Concept of Deadzones

Users can observe the joystick output because it generates uninterrupted analog data which appears as X and Y axis readings. Our program reads these values through analogRead()while we establish a central position range which spans from 1000 to 3000. The system keeps its present angle when users provide input values which stay within the defined boundaries.

The method succeeds in controlling servo because it reduces joystick input noise which produces unwanted servo movement during joystick center position rests.

Joystick

Joystick


Incremental Angle Control and Range Limitations (0–180°)

The system applies a slow angle modification technique which converts joystick inputs into angle changes that add or subtract ±1 instead of transforming values into predetermined angle positions. The system stops robotic arms from making quick abrupt movements which results in smooth and continuous operation. The physical limitations of servo motors required us to create a programming system which blocks commands that exceed the operating range between zero and 180 degrees.


Hands-on Practice

Controlling 4 Servo Channels with 2 Joysticks

The practice demanded us to handle two joysticks which generated four distinct input signals through their X and Y axes which we connected to four separate servo channels from (0~3).