Class Name



Opens an RC servo motor connected to a GPIO pin

This library uses timers to control RC servo motors by means of pulse width modulation (PWM). While not as accurate as dedicated PWM hardware, it has shown to be sufficient for many applications.

Connect the signal wire (typically colored yellow) to any available GPIO pin and control the servo's angle as shown in the example sketch.


  • import*;
    SoftwareServo servo;
    void setup() {
      servo = new SoftwareServo(this);
      // On the Raspberry Pi, GPIO 4 is pin 7 on the pin header,
      // located on the fourth row, above one of the ground pins
    void draw() {
      // we don't go right to the edge to prevent
      // making the servo unhappy
      float angle = 90 + sin(frameCount / 100.0)*85;


  • SoftwareServo(parent)


  • parenttypically use "this"


  • attach()Attaches a servo motor to a GPIO pin
  • attach()Attaches a servo motor to a GPIO pin

    You must call this function before calling write(). Note that the servo motor will only be instructed to move after the first time write() is called.

    The optional parameters minPulse and maxPulse control the minimum and maximum pulse width durations. The default values, identical to those of Arduino's Servo class, should be compatible with most servo motors.
  • write()Moves a servo motor to a given orientation
  • attached()Returns whether a servo motor is attached to a pin
  • detach()Detatches a servo motor from a GPIO pin