Mi servo no gira cuando acepta comandos de un arduino

1

Estoy intentando convertir un servo con mi arduino cuando recibe comandos de una entrada en serie, en este caso mi teclado. Ya lo he hecho con motores y funciona bien, pero cuando intento con mi servo no se mueve en absoluto. Hasta ahora tengo esto escrito

#include <SoftwareServo.h>

SoftwareServo myservo;
int movemotor;

void setup() {  
  Serial.begin(9600);
  myservo.attach (10);
  myservo.write(90);
}

void loop() {
  movemotor = Serial.read();

  if (movemotor = 111) {
     for (int pos = 90; pos >=0; pos--) {
       myservo.write(pos);
       delay(15);
    }
  }

  else if (movemotor = 99) {
     for (int pos = 90; pos <= 180; pos++) {
       myservo.write(pos);
       delay(15);
    }
  }
}

Estoy alimentando el servo externamente con una batería de 9 voltios y me he asegurado de conectar su tierra a la del arduino, pero no puedo ver nada más que hice mal. Cualquier ayuda sería apreciada grandemente.

    
pregunta user1291703

2 respuestas

1

¿Ha intentado pasar por un Ejemplo / tutorial del servo Arduino ? El ejemplo vinculado muestra una cosa que le falta: una llamada a refresh ()

  

actualizar ()    Debe llamar a esto al menos una vez cada 50 ms para mantener el   Servos actualizados. Puedes llamarlo tantas veces como quieras, no disparará   Más de una vez cada 20ms. Cuando se dispare, tomará de .5 a   2.5 milisegundos para completar, pero no deshabilitará las interrupciones.

Editar: como mencionó TheTerribleSwiftTomato, no estás verificando el valor de movemotor sino configurándolo. Debido a esto, la primera sentencia if siempre debería ser verdadera, ya que cualquier valor distinto de cero se evaluará como verdadero. Puede evitar estos errores de condición de asignación adoptando el estilo condición de Yoda . Parece un poco divertido, pero ayuda al compilador a detectar errores.

    
respondido por el ben
0

Prueba este código. También es posible que desee comprobar que los pines que se adjuntan al arduino y al servo son correctos; Por ejemplo, voltaje, tierra y pulso.

// Sweep
// by BARRAGAN <http://barraganstudio.com> 
// This example code is in the public domain.


#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 
  } 
} 
    
respondido por el Gyonka

Lea otras preguntas en las etiquetas