Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
CONSULTA ROBOT DOS MOTORES CON SERVO PARA DIRECCION
#1
hola a todos .Tengo este programa con dos motores y un servo .Para mover los motores utilizo L238D Los motores funcionan bien pero el servo no responde ,hace como el intento de moverse pero nada mas.He echo este programa sin librerias por que prefiero hacerlo si .¿Alagien save decirme donde meto la pata.soy nuevo en el tema

int vel1=0;
int vel=250;
int velservo=250;
int servoPin=9;
int angulo;
int izq=170;
int cen=100;
int der=0;
int i=0;
float pausa;
                     
void setup()
{
pinMode (2,OUTPUT);
pinMode (4,OUTPUT);
pinMode (12,OUTPUT);
pinMode (13,OUTPUT);
pinMode (5,OUTPUT);
pinMode (3,OUTPUT);
 pinMode(servoPin, OUTPUT);     // Declaramos el pin digital 9 como salida
 digitalWrite(servoPin, LOW);   // Ponemos el pin digital 9 en LOW
}
void loop()
    
{
moverServo(servoPin,cen);

delay(velservo);
recto();
paro_motores();
moverServo(servoPin,der);
delay(velservo);
giro_derecha();
paro_motores();
moverServo(servoPin,cen);
delay(velservo);                       
atras();
paro_motores();
moverServo(servoPin,izq);
delay(velservo);  
giro_izqui(); 
}
     

void moverServo(int pin, int angulo) 
   // Recogemos las variables PIN y ANGULO en cada llamada 
{
 pausa = cen*2000.0/180.0 + 460;   // Calculamos el ancho del pulso aplicando la regla de tres
 digitalWrite(servoPin, HIGH);             // Ponemos el pin en HIGH 
 delayMicroseconds(pausa);            // Esperamos con el pin en HIGH durante el resultado de la regla de tres
 digitalWrite(servoPin, LOW);              // Y ponemos de nuevo el pin en LOW
 delayMicroseconds(2460-pausa);
}
void giro_derecha()

{
digitalWrite(12,LOW);//giro derecha paro solo motor a
digitalWrite(13,LOW);
analogWrite(11,vel1);//enable motor a patilla 
digitalWrite(2,HIGH);
digitalWrite(4,LOW);
analogWrite(3,vel);//enable motor dos
delay(5000);
}

void atras()
{
digitalWrite(12,HIGH);//Marcha adelante
digitalWrite(13,LOW);
analogWrite(11,vel);
digitalWrite(2,HIGH);
digitalWrite(4,LOW);
analogWrite(3,vel);
delay(5000);
}

void recto()
{
digitalWrite(12,LOW);//Marcha atras
digitalWrite(13,HIGH);
analogWrite(11,vel);
digitalWrite(2,LOW);
digitalWrite(4,HIGH);
analogWrite(3,vel);
delay(5000);
}

void giro_izqui()
{
digitalWrite(12,HIGH);//giro izquierda paro motor b
digitalWrite(13,LOW);
analogWrite(11,vel);
digitalWrite(2,LOW);
digitalWrite(4,LOW);
analogWrite(3,vel1);
delay(5000);  
}

void paro_motores()
{
digitalWrite(12,LOW);//paro motores
digitalWrite(13,LOW);
analogWrite(11,vel1);
digitalWrite(2,LOW);
digitalWrite(4,LOW);
analogWrite(3,vel1);
delay(5000);  
}
Citar
#2
Yo te recomendaría utilizar la librería Servo.h, que ya viene incluida en el IDE de Arduino (aquí te dejo la información: https://www.arduino.cc/en/Reference/Servo). Otro problema puede ser la alimentación. ¿Los motores y los servos está alimentados por el Arduino? Te recomendarí hacerlo mediante una fuente externa. Poco más se me ocurre.
¡Un saludo!
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  CONSULTA Re: Arduino Mega, 1 servo ,1 nema, 3 motor DC carlos hop 8 436 26-09-2018, 01:30 PM
Último mensaje: Shellmer
  problemas con libreria servo homer32 9 1,543 17-03-2017, 12:45 PM
Último mensaje: homer32
  control servo sin libreria "servo.h" homer32 11 3,896 08-12-2016, 01:25 PM
Último mensaje: homer32
  [Problema] Arduino y servo antoniobeta 6 5,380 20-07-2016, 11:07 AM
Último mensaje: tazma
  robot que se dirige a la luz solar jhon_bishop 0 416 16-10-2015, 09:28 PM
Último mensaje: jhon_bishop