Hola, Buenos días. Tengo que mover un servo con un potenciómetro de 0 a 180 grados. y cuando presione un pulsador el servo tiene que ir directamente a 33 grados y quedarse fijo allí. sí presiono el mismo botón de nuevo el servo tiene que volver a moverse con el potenciómetro. este es mi código:
include <Servo.h>
Servo servo1;
int pinservo = 9;
int angulo = 0;
int pot = A0;
int potvalue=0;
int pulsador = 4;
int valor, valor_antiguo, estado;
void setup() {
servo1.attach(pinservo);
pinMode (pot,INPUT);
servo1.write(angulo);
pinMode(pulsador,INPUT);
}
void loop() {
potvalue= analogRead(pot);
angulo=map(potvalue,0,1023,0,180);
servo1.write(angulo);
delay(20);
//pulsador
valor = digitalRead(pulsador);
if((valor==HIGH)&&(valor_antiguo==LOW)){
estado = 1 - estado;
delay(20);}
valor_antiguo = valor;
if(estado==1){
servo1.write(33);
}
if(estado==0){
servo1.write(angulo);
}
}
por algún motivo el servo si funciona con el potenciómetro. pero al presionar el botón no va a 33 grados, si no que se mueve unos grados y vuelve continuamente.
¿cual puede ser el detalle que me falta? Muchas Gracias!
Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>
Gracias por las respuestas.. el problema era esa línea de código como marcó surbyte.
esa línea forzaba al servo a seguir solamente al potenciómetro.
una vez solucioné el problema noté que el servo se movía con demasiada velocidad.
lo resolví descargando la librería (VarSpeedServo.h)
Muy valioso el foro arduino. gracias a todos.