Skip to content
Servo

360° Continuous Rotation Servo

Modified servo that spins continuously like a geared motor.

A servo modified for full continuous rotation rather than fixed-angle positioning, useful as a simple speed-controlled wheel drive.

Specifications

Operating voltage4.8V - 6V DC (5V typical)
Control signalPWM, 50Hz, 1ms-2ms pulse width — but the pulse now sets speed and direction, not angle
Neutral point~1.5ms pulse = stopped; shorter/longer pulses spin one way or the other, further from 1.5ms = faster
PositioningNone — fully open-loop, no feedback on shaft angle, only continuous rotation
Typical no-load speed~50-60 RPM, varies by donor servo and how it was modified
Weight~9g-55g depending on donor servo (SG90-based vs MG996R-based)

Pinout

PinNameDescription
1GNDGround — usually the brown or black wire
2VCCPower, 4.8V-6V DC — usually the red wire
3SignalPWM control input — usually the orange or yellow wire

Every unit's stop point drifts slightly from the textbook 1.5ms. Sweep 1.3ms-1.7ms in code once and hard-code the value that actually stops your specific servo.

Variants

A continuous rotation servo is convenient because it uses the exact same single-wire PWM signal as a positional servo, making it an easy drop-in for simple wheeled robots without adding a separate motor driver. For anything beyond a basic two-wheel rover, though, a dedicated gear motor and driver combo gives finer speed control and better efficiency than a servo that's been hacked to spin continuously.

VariantPrice
Continuous rotation servo (this listing)~$2-5
Standard SG90/MG90S servo~$1-4
TT/N20 gear motor + driver~$3-8 (motor) + ~$2-5 (driver)

Board Integration

Library

Servo by Arduino

Bundled with the Arduino IDE core

Wiring

Component pinESP32 pinNote
VCC5V (VIN, if available on your ESP32 board)Use an external 5V supply if the board resets when the servo moves
GNDGND
SignalGPIO18Any PWM-capable GPIO works

Example code

C++

Unlike a positional servo, write() here sets speed and direction, not an angle -- 90 is stop, values above/below rotate at a speed proportional to distance from 90. The exact stop point varies per unit and may need trimming (e.g. write(88)).

View full ESP32 guide