Servo Position

hey i was trying to control the servo using joystick(potentiometer).
i am but stuck at a problem
when joystick is at center servo is at 90° when i move the joystick to left, servo sets at 0° and when i release the joystick it came back to its 90° but when i move the joystick to right, the server does sets to 180° but does not come back to 90° on release the joystick, it sets to a little more than 90° like 100°
what could be the problem ?

#include <Servo.h>
Servo servo;
int sp ;
int js_x;
void setup()
{
servo.attach(3);
}
void loop()
{
sp= map(js_x ,0 ,1023, 0, 180);
servo.write(sp);
}

try this code


#include <Servo.h>

Servo myservo; // create servo object to control a servo

int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin

void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there