#include Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created int dial_pos = 0; // variable to store the servo position int led_pin = 13; int difference = 0; unsigned char value1 = 0, value2 = 0; int value = 0; void setup() { digitalWrite(led_pin, LOW); Serial.begin(9600); //set serial to 9600 baud rate myservo.attach(9); // attaches the servo on pin 9 to the servo object myservo.write(dial_pos); } void loop() { while(Serial.available() <= 0); value1 = Serial.read(); while(Serial.available() <= 0); value2 = Serial.read(); // we're looking to make two bytes into a 16 bit int here value = value2; value = value << 8; value = value | value1; Serial.println("servo value is:"); // some debugging Serial.println(value); // as long as we're above zero, drop off slowly when there's no // activity if ((value == dial_pos) && (dial_pos > 0)) value--; difference = abs(dial_pos - value); dial_pos = value; // if there's a big change, blinkenlight if (difference > 5) { digitalWrite(led_pin, HIGH); delay(10 * difference); digitalWrite(led_pin, LOW); Serial.flush(); } for (int i = dial_pos - difference; i <= dial_pos; i++) { myservo.write(i); delay(10); } }