| Driving Servo from a graphical user interface by BARRAGAN <http://barraganstudio.com> Demonstrates the use of the servo library, it sweeps a generic servo motor from the minimum to the maximum position from a graphical user interface, the angle is received from the serial port. Created 2 January 2006 Revised 30 August 2007 |

    // Driving Servo from a graphical user interface
    // by BARRAGAN <http://barraganstudio.com>

    #include <Servo.h>

    Servo myservo;           	// create servo object to control a servo

    int val = 0;             	// variable to read from the serial port

    void setup()
    {
      myservo.attach(0);     	// attaches the servo on pin 0 to the servo object
      Serial.begin(9600);    	// starts the serial Serial at 9600 bauds
    }

    void loop()
    {
      if( Serial.available() )     	// if data is available to read
      {
        val = Serial.read();       	// read it and store it in 'val'
      }
      myservo.write(val);          	// sets the servo position according to value in val
      delay(15);                   	// waits for the servo to get there
    }

    /* Processing code for this example

    // servo serial
    // by BARRAGAN <http://barraganstudio.com>

    // Write data to the serial according to the position of a marker
    // controlled by the mouse to position a servo motor

    // created 2 January 2006

    import processing.serial.*;

    Serial port;  			// create serial port object
    int val;      			// variable to receive data from the serial port
    float mx = 0.0;

    void setup()
    {
      size(200, 200);
      noStroke();
      frameRate(10);

      // List all the available serial ports in the output pane.
      // You will need to choose the port that the Wiring board is
      // connected to from this list. The first port in the list is
      // port #0 and the third port in the list is port #2.
      println(Serial.list());

      // Open the port that the Wiring board is connected to (in this case #2)
      // Make sure to open the port at the same speed Wiring is using (9600bps)
      port = new Serial(this, Serial.list()[1], 9600);
    }

    void draw()
    {
      background(#222222);		// clear background
      fill(#555555);		// set fill color
      rect(40, height/2-15, 120, 25);	// draw square

      float dif = mouseX - mx;
      if(abs(dif) > 1.0) {
        mx = mx + dif/4.0;
      }
      mx = constrain(mx, 50, 150-1);// keeps marker on the screen
      noStroke();
      fill(255);
      rect(50, height/2-5, 100, 5);
      fill(204, 102, 0);

      rect(mx-2, height/2-5, 4, 5);// draws the position marker
      int angle = (int)(mx-50)*180/100;	// scales the maker value to one in the range 0-180
      //print(angle + " ");		// prints the current angle (debug)
      port.write(angle);		// writes the angle to the serial port
    }

    */

|  | Circuit schematics: the servo signal pin is connected to Wiring digital pin 0.