Hola, estaba programando el funcionamiento de un servo mediante potenciómetro para poder usarlo en diferentes proyectos. Lo he hecho con un simulador entonces funciona perfectamente, pero me han comentado que a la hora de conectarlo a un arduino real este manda la señal tan rápido que el servo es incapaz de realizar el giro. Mi pregunta es como puedo hacer que este vaya haciendo el giro poco a poco. Adjunto aquí lo que he hecho.`#include <Servo.h>
int Entrada = A0;
int posicion= 0;
int grados;
Servo servo_6;
void setup() {
Serial.begin(9600);
servo_6.attach(6);
}
void loop() {
posicion = analogRead(Entrada);
grados = map(posicion, 0, 1023, 0, 180); // establece el valor proporcional a la escala del servomotor (valor entre 0 y 180)
//for (int i= 0; i<grados; i++){// en un montaje real el servo motor no puede realizar el giro tan rápico como se lo indica arduino por lo que con esta función le permitimos que lo vaya realizando poco a poco
servo_6.write(grados);
delay(10);
//}
}`
Hola claro que no funciona.
En principio te falta declarar en el setup como son los pines
pinMode (6, OUTPUT); y pinMode (Entrada, INPUT); o INPUT_PULLUP segun tengas conectado el potenciometro.
El For:
En primer lugar por mas que cuente siempre mandas al servo la variable grados, deberías mandarle la variable del for es decir la "i". Y por otro lado al cambiar la entrada le dices que empiece a contar desde la posición 0º sea cual sea la posición actual, deberías guardar la posición actual y realizar el conteo desde la actual a la nueva. Podria quedar algo asi:
for (int i= a_grados; i<=grados; i++){
servo_6.write(i);
delay(10);
}
a_grados=grados;
Esto claro para la ida tendras que poner otro similar para la vuelta (i--), con algun if para ejecutar uno u otro.
Saludos.