| Driving Servo from a graphical user interface by BARRAGAN <http://barraganstudio.com> Read data from the serial and turns a DC motor on or off according to the value Created 1 May 2007 |

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

    char val;                       // Data received from the serial port
    int motorpin = 0;               // Wiring: Connect L293D Pin En1 connected to pin PWM 0

    void setup() {
      Serial.begin(9600);           // Start serial communication at 9600 bps
    }

    void loop() {
      if (Serial.available()) {     // If data is available,
        val = Serial.read();        // read it and store it in val
      }
      if (val == 'H') {             // If 'H' was received,
        analogWrite(motorpin, 125); // turn the motor on at medium speed
      } else {                      // If 'H' was not received
        analogWrite(motorpin, 0);   // turn the motor off
      }
      delay(100);                   // Wait 100 milliseconds for next reading
    }

    /* Processing code for this example

    // Write data to the serial port according to the status of a button controlled
    // by the mouse

    import processing.serial.*;

    Serial port;                // Create serial port object
    boolean rectOver = false;
    int rectX, rectY;           // Position of square button
    int rectSize = 100;         // Diameter of rect
    color rectColor;
    boolean buttonOn = false;   // Status of the button

    void setup() {
      size(200, 200);
      noStroke();
      frameRate(10);
      rectColor = color(100);
      rectX = width/2 - rectSize/2;
      rectY = height/2 - rectSize/2;

      // 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()[2], 9600);
    }

    void draw() {
      update(mouseX, mouseY);
      background(0);            // Clear background to black
      fill(rectColor);
      rect(rectX, rectY, rectSize, rectSize);
    }

    void update(int x, int y) {
      if (overRect(rectX, rectY, rectSize, rectSize) = true) {
        rectOver = true;
      } else {
        rectOver = false;
      }
    }

    void mouseReleased() {
      if(rectOver == true) {
        if (buttonOn) {
          rectColor = color(100);
          buttonOn = false;
          port.write('L');      // Send an L to indicate button is OFF
        } else {
          rectColor = color(180);
          buttonOn = true;
          port.write('H');      // Send an H to indicate button is ON
        }
      }
    }

    boolean overRect(int x, int y, int width, int height) {
      if ((mouseX >= x) && (mouseX <= x+width) &&
         (mouseY >= y) && (mouseY <= y+height)) {
        return true;
      } else {
        return false;
      }
    }

    */