#include <Servo.h>
template<class T> inline Print &operator << (Print &obj, T arg) { obj.print(arg); return obj; }
Servo servo; //Create Servo instance
int servo_pin = 53;
int goal_angle = 80;
void setup()
{
Serial.begin(9600);
servo.attach(servo_pin);
}
void loop()
{
int actual_angle = servo.read();
int delta_angle = goal_angle - actual_angle;
if (delta_angle == 0)
{
Serial << "You are at your goal angle of " << actual_angle << " degrees!\n";
}
else
{
Serial << "Goal angle: " << goal_angle << ". Actual angle: " << actual_angle << ".\n";
Serial << "Will start servo movement in 4 seconds\n";
delay(4000);
int angle_increment = (delta_angle > 0) ? 1 : -1;
int new_angle = actual_angle + angle_increment;
while (actual_angle != goal_angle)
{
servo.write(new_angle);
delay(15);
new_angle += angle_increment;
actual_angle = servo.read();
Serial << "Actual: " << actual_angle << "\n";
} //while
} //if-else
delay(4000);
}