Servo not rotating 180degrees.

The arduino servo library makes some assumptions about how wide a control pulse corrosponds to the end of travel position for a servo will be:

#define MIN_PULSE_WIDTH 544 // the shortest pulse sent to a servo
#define MAX_PULSE_WIDTH 2400 // the longest pulse sent to a servo

So for a 0 degree command they use a 544 usec pulse and for a 180 degree command they use a 2400 usec pulse. It may be that your specific servo can handle slightly lower and higher values to actually reach 180 degrees of travel. You can perform some tests using the servo.writeMicroseconds(uS) command to find the actual physical end of travel points for your specific servo. However you have to be careful as if you drive your servo too hard against either mechanical stop you can cause damage and draw high motor current values.

Lefty