Servo Futaba, tower pro, No funciona, sg90 si

Buenos dias, os subo este sketch haber si ha alguno le ocurre lo q a mi, resulta que funciona perfecto con un servo sg90 conecatdo a gnd y 5v, pero al conectar un futaba s3003 o un tower pro sg5010 con su fuente de alimentacion independiente, o bateria de 6v, este no hace nada, he comprobado las conexiones, pines etc,, y no veo q puede estar mal.
he probado ha cambiar incluso los ms en configuracion mini-max pero nada.Texto preformateado

saludos

#include <VarSpeedServo.h>


VarSpeedServo myservo;
const int servo = 8; //define Servo Signal Pin
const int trigPin = 10; //define Trigger Pin
const int echoPin = 11; //define Echo Pin

// define variables
long duration;
int distance;
int distanciaCalculada;
int pos = 0; // Variable para almacenar la posicion del servo
int pulsoMinimo = 580; 
int pulsoMaximo = 2500;
int ledverde = 5;
int estado = LOW;
int ledrojo = 6;

void setup() {
  pinMode(trigPin, OUTPUT); // Establece trigPin como Salida ///output inicial
  pinMode(echoPin, INPUT); // Establece a echoPin como Entrada /// input inicial
  myservo.attach(servo, pulsoMinimo, pulsoMaximo); // Acopla al servo en el pin 9

  myservo.write(0); // Sets Servo to initially 0 degrees
  delay (2000);

  Serial.begin(9600); // Comienza la comunicacion serial
}

void loop() {

  distanciaCalculada = medirDistancia();

  if (distanciaCalculada < 20)/////50 INICIAL
  { //Revision: que la distancia sea menos que 50cm
    myservo.attach (servo, pulsoMinimo, pulsoMaximo);
    myservo.write(130,20 , true);
    myservo.detach();

    delay(5000);//tiempo para que aguante la puerta abierta //// 5000 inicio
   

   for (int i = 0; i < 50; i++) { // el 50 son las veces que recorreremos este ciclo
      myservo.attach (servo, pulsoMinimo, pulsoMaximo);
      myservo.write(0,20, false); // Mover el servo hacia la posicion 0 sin esperar a que termine de hacerlo
      distanciaCalculada = medirDistancia();
      
      if (distanciaCalculada < 20) { // Si la distancia se detecta <50
        myservo.attach (servo, pulsoMinimo, pulsoMaximo);
        myservo.write(130, 20, true);
        Serial.println(i);
        myservo.detach();
        delay(5000);//tiempo para que aguante la puerta abierta
        i = 0; // Reiniciar el contador de este ciclo for
      }
      else { // Si no se detecta el obstaculo en el sensor continuar
        Serial.println(i);
        delay(50);
      }
    }

    myservo.detach();
    delay(500);
  }
}

///// Funcion para medir distancia con el sensor ultrasonido
int medirDistancia() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  // Establece a pin trig en estado alto (HIGH) por 10 microsegundos
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Lectura del echo pin, retorna el tiempo de viaje de la onda ultrasonica en microsegundos
  duration = pulseIn(echoPin, HIGH);

  // Calculando la distancia
  distance = duration * 0.034 / 2;

  // Imprime la distancia en el monitor serial
  Serial.print("Distance: ");
  Serial.println(distance);
  return distance;
}

EDIT - moved to the Spanish section as English is the language for the General forums

movido a la sección en español ya que el inglés es el idioma de los foros generales


¿Has conectado el GND?

Buenas tardes, te refieres a conectar el pin negro del servo a gnd arduino?
Si es así no lo conecté, esta solo a + y - alimentación.

Saludos

El El sáb, 5 jun 2021 a las 12:46, J-M-L via Arduino Forum <arduino@discoursemail.com> escribió:

Hola
publicar un diagrama exacto del montaje

Buenas tardes, si no lo veo no lo creo, gnd de arduino no estaba con gnd de servo, disculpad la ignorancia.
ahora funciona perfecto.

muchas gracias

saludos.

:wink: buenas noticias !

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.