Go Down

Topic: Ayuda con codigo para seguidor de linea (Read 10 times) previous topic - next topic

JRodrigo

Para suavizar los movimientos puedes utilizar el analogWrite() [PWM] para en vez de que pare el motor de golpe vaya más lento hasta parar.

jorgepl

Como en cualquier lectura de un sensor, yo te recomendaría que hicieses varias lecturas y calculases una media para obtener el valor "resultado" con el que vas a trabajar.

Como te han dicho, lo más importante de ese código es que quites el delay y no utilices ninguno, ya que eso "para" la ejecución del código y dejas sin control el robot durante ese segundo. Si quieres ver como hacer una temporización sin delays, hay un ejemplo en el IDE "blink without delay" donde lo importante está en:

Code: [Select]

  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis > interval)
  {
    // save the last time you blinked the LED
    previousMillis = currentMillis;   
    // Codigo que se ejecuta cada "interval" de tiempo
  }


En cuanto al motor, no dices que tipo de motor utilizas ni como lo has conectado, con lo cual no se sabe si lo estás controlando bien o no.

Como te dije en el primer post, si ese es tu robot, antes de montar todo deberías haber ido probando cada cosa por separado para saber como controlarlas y después ir juntandolas y probandolas juntas. Si lo tienes todo montado y no lo has probado, ahora no vas a saber si el fallo está en el software o en el hardware, por no decir que no sabes como controlar cada una de las partes.

ionhs

Como te comenta Jrodrigo lo ideal sería usar PWM. La teoría la tengo explicada aquí, es la teoría faltaría pasar de la teoría al código para Arduino aunque es un salto muy pequeño.
http://elektronikadonbosco.blogspot.com.es/2012/04/control-de-motor-dc-con-arduino.html

Salu2

nayma

podrías pensar en poner 2 o 3 sensores más, aunque con dos puede que te valga.

L30N87

Mis amigos disculpen el no poder indicado avances esta semana la verdad que e comensado examenes y no me queda tiempo para nada bueno vamos al punto el problema es que el seguidor se me descontrola al rato de estar yendo bien.... me pedrian decir como implemento en control pwm teniendo en cuenta que solo utilizo un solo motor de direccion como se ve en las fotografias










float qrdizq;
float qrdder;

int qrd1 = 4;
int qrd3 = 5;
int moizq = 0;
int moder = 1;

void setup(){   
  pinMode(moizq, OUTPUT);
  pinMode(moder, OUTPUT);
}

void loop(){
 
  qrdizq = analogRead(qrd1);                     
  qrdder = analogRead(qrd3);   
                     
//Control de giro del sensor 2 qrdder
  if (qrdder >= 400)
  {
  digitalWrite(moder, HIGH);
  }
  else
  {
  digitalWrite(moder, LOW);
  }
//Control de giro del sensor 1 qrdizq
  if (qrdizq <= 400)
  {
  digitalWrite(moizq, HIGH);
  }
  else
{
digitalWrite(moizq, LOW);
}

  delay(50);
}

Go Up