PROBLEMA AL PROGRAMAR SERVO TRUCADO

Hola a todos :slight_smile: , resulta que estoy haciendo un proyecto y he trucado un servomotor para que gire 360º pero el problema es que a la hora de programarlo no sé como detenerlo ni cambiarle el giro! (al modificarlo pues ya no se puede controlar su posición según aprendí) :disappointed_relieved: solo se mantiene girando y no sé que hacer, alguien ha encontrado solución a esto? podrían ayudarme? =( solo quiero saber como detenerlo y como cambiar el giro.

:astonished: puedes poner el code ?

supongo que estas usando la libreria servo .

#include <Servo.h> 
 
Servo myservo;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 
 
int pos = 0;    // variable to store the servo position 
 
void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
 
 
void loop() 
{ 
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
}

aqui un ejemplo de mover el servo de 0 a180 grados, y luego vuelve de 180 a 0 grados.
para pararlo, debes enviar un mismo valos todo el tiempo
es decir si quieres que este a 90 envias myservo.write(90);

en tu caso es a 360, cambia eso en el code.

Si de hecho he usado la librería Servo y he intentado cambiar el valor el ángulo pero solo se mantiene girando como un motor normal de CD :S la única solución que he encontrado es precisamente eso, manejarlo como un motor normal de CD usando un L293D para controlar el giro, me ha funcionado pero pues esa no era precisamente la idea xD

Tecnicamente al trucar el servo, ya que le pones dos resistencias de igual valor, el servo detecta que esta en posicion central, es decir 90 grados. por lo tanto, si colocas 0 grados, girara hacia la izquierda, si colocas 90 grados, se mantendra detenido, y si colocas 180 girara continuamente hacia la derecha.

Todo esto es teorico, ya que en mi caso mi servo se detenia en 94, por lo que te recomiendo utilizar el siguiente codigo, que ademas del servo necesitas un potenciometro, y a medida que muevas el poteciometro podras verificar en que angulo se detiene y darte cuenta de otras cosas

// El servo debes conectar en el pin digital 7
//Potenciometro va conectado al pin Analogo 0

#include Servo.h

int val;
int angulo;
int potenciometro = 0;
Servo myservo;

void setup(){
myservo.attach(7);
Serial.begin(9600);
}

void loop(){

val = analogRead(potenciometro);

angulo = map(val, 0, 1023, 0, 179);

myservo.write(angulo);

Serial.print("Angulo: ");Serial.println(angulo);
}

Espero que te sirva, saludos

Hola Chicos

Aprovechando el tema, queria hacerles una pregunta

Yo quiero hacer que mi servo de N vueltas hacia la Izquierda y M a la derecha, sin un potenciometro, solo controlandolo mediante el ingreso de las variables de pulso y el delay...

Alguien sabe como hacerlo?.... Que simplemente no se me ocurre como....

Saludos
Cuando estabas escribiendo en este post te salio una advertencia en rojo lo que te indica que no deberias escribir en este post. Ya que tienes mas de 120 dias sin actividad, es decir, mas de un año.

Crea otro post y plantea tu problema alli.