Programación Servo

Hola, estoy intentando programar el servo mg946r con un sensor de flexión, el problema es que este servo siempre vuelve a la posición de inicio, es decir, quiero que permanezca cierto tiempo en la posicion y este regresa como a una posición de inicio, jamas permanece quieto. He probado el código con el servo 9g y funciona perfecto.

Si alguien ha trabajado con un servo de este estilo, agradezco su ayuda.
Ya he usado fuentes externas de alimentación conectando la tierra del arduino y la del servo.

El código es el siguiente.

FlexServo.ino (231 Bytes)

Hola Diego:

¿No esta el problema en el código?

val = analogRead(flexPin);

De la manera que lo escribiste se esta leyendo todo el tiempo y no me extrañaría que el servo se mueva acorde.

Porque no tratas de hacer un delay de (por ejemplo) un segundo y mandar a pantalla el valor de val. Para ver que esta pasando.

Saludos.

Porque tan estrecho el rango de lectura del AD para decirle al servo como moverse?

val=map(val,416,540,0,180);

De 416 a 540 me da un Delta = 540-416= 124

Sin promediación eso tiene como leve unos 5 arriba y 5 abajo que traducido por tu map

128 son 180 grados

5 son 7 grados pero como puede variar arriaba abajo del valor, tendras excursiones de 14 grados.

No entiendo como dices que vuelve al comienzo la unica posibilidad que tu potenciómetro este mal. Supongo que es un potenciometro.

Porque no agregas un esquema o foto de como tienes conectadas los elementos de entrada (es el que importa).