Interactive Desktop Robot

At last, the robot is in full swing, or rather poke. I worked on the code to slow down it’s movement, remove it’s awkward lifting-up, and allow it to search for missed keys. I documented the robot and its interaction in a video. I also considered that the part of the project most useful to future students is how to read an angle from a servo motor, so a made a special tutorial for how modify a servo for that too.

Video and source code here

Toturial here

This reads in different resistance, and display different color rectangle.


int analPin = 1;                       // Analog pin connected to pin 1

void setup() {
  pinMode(switchPin, INPUT);             // Set pin 0 as an input
  Serial.begin(9600);                    // Start serial communication at 9600 bps

void loop() {

  Serial.print(analogRead(analPin, Byte));
  delay(100);                            // Wait 100 milliseconds


Processing side

import processing.serial.*;

Serial myPort;  // Create object from Serial class
int val;      // Data received from the serial port

void setup() 
  size(200, 200);
  // I know that the first port in the serial list on my mac
  // is always my  FTDI adaptor, so I open Serial.list()[0].
  // On Windows machines, this generally opens COM1.
  // Open whatever port is the one you're using.
  String portName = Serial.list()[0];
  myPort = new Serial(this, portName, 9600);

void draw()
  if ( myPort.available() > 0) {  // If data is available,
    val =;         // read it and store it in val
  background(255);             // Set background to white
  if (val <500) {              // If the serial value is 0,
    fill(0);                   // set fill to black
  else {                       // If the serial value is not 0,
    fill(204);                 // set fill to light gray
  rect(50, 50, 100, 100);