siguelineas

Ya has montado el PrintBot Renacuajo. Ahora vamos a programarlo para que siga una línea negra. ¿Sabes cómo funciona un siguelíneas? En la siguiente imagen te lo explicamos. El robot, gracias al sensor infrarrojo, sabe cuándo el suelo es blanco o negro, por lo que es capaz de detectar si está encima de la línea o no y, en función de esta información, puede actuar para seguirla.

Siguelineas100

Bien, vamos a ir paso a paso viendo cómo se programa en bitbloq

¡Comencemos! Nuestro PrintBot tiene dos sensores infrarrojos que le ayudan a detectar cuándo está encima de la línea negra, así que vamos a leer el valor de los sensores. Llamaremos a las lecturas ir_derecho e ir_izquierdo. ¡Ojo! “ir” significa infrarrojo, no es el verbo ir. Además, como puedes ver en el esquema eléctrico de arriba, el servo derecho está conectado al PIN digital 9 y el izquierdo al PIN digital 6.

dec_pines

Fíjate en que el sensor izquierdo está conectado al pin 3 y el derecho al 2

El sensor infrarrojo nos da un valor 0 cuando detecta negro y 1 en caso contrario. Para acordarnos, vamos a declarar la variable NEGRO con el valor 0. Las variables son “nombres” a los que asignamos un valor. Mira cómo se hace.

NEGRO

¿Y ahora? Pues ahora tenemos que mover los motores para que el robot siga la línea. ¿Has leído bien la explicación del siguelíneas?

1. Cuando los dos sensores ven la línea negra quiere decir que el robot está sobre la línea, y por lo tanto debe avanzar. Para ello los dos servos giran.

2. Cuando los dos sensores ven blanco entonces se ha terminado la línea negra o el robot se ha perdido, y lo mejor es pararnos.

3. Cuando el sensor izquierdo ve negro y el derecho blanco quiere decir que el robot se está saliendo por la derecha, y debe girar a la izquierda. Para girar a la izquierda lo que hago es mover sólo la rueda derecha (prueba en casa, ya verás como tengo razón).

gira_izquierda

4. Cuando el sensor derecho ve negro y el izquierdo blanco quiere decir que se está saliendo por la izquierda, y debe girar a la derecha. Para girar a la derecha lo que hago es mover sólo la rueda izquierda (¿ya te has convencido?).

gira_derecha

Bien, ¡está claro! Ahora pensemos juntos. Fíjate en los 4 casos y busquemos una regla sencilla.

Siempre que el sensor derecho ve negro, se mueve la rueda izquierda, y si el sensor derecho ve blanco se para la rueda izquierda.

Siempre que el sensor izquierdo ve negro, se mueve la rueda derecha, y si el sensor izquierdo ve blanco se para la rueda derecha.

¡Piensa en ello!

Si has entendido esto hacer el programa es facilísimo:

control

La pausa de 10 milisegundos que hay en cada servo es porque después de mover un servo siempre es bueno esperar un poquito :)

Ya sabes programarlo perfectamente, y si no nuestra amiga Berta te lo explica en este vídeo. Es una auténtica robonauta. ¿Te atreves tú a mandarnos tus propios videos? Escríbenos a diy@bq.com y te los publicaremos.

36 comentarios

  1. interesado en conocer edad más apropiada para comenzar a “disfrutar” con mis hijos de este “parque de atracciones”.
    Tienen 6 y 7 años.

    1. Alberto Valero

      Hola Francisco Javier,

      Pensamos que la edad ideal para empezar es entre 8 y 10 años, pero hemos conocido algún niño de hasta 5 años que ha disfrutado mucho. Lo que yo te recomiendo es que si a tus hijos les apetece, adelante, eso sí, deberás acompañarles, es algo para aprender en familia, algunos que pensaban que el niño sólo podría apañárselas se ha llevado una decepción, pero es que no es la idea, y siempre que hay alguien que aprende tiene que haber alguien que le enseñe. Nosotros con esta web intentamos hacérselo más fácil a los padres (o al profesor) y al niño, y para cualquier duda o dificultad aquí estamos para ayudar en todo modmento. :)

      Un saludo, y si te animas, ahora o más adelante, ¡cuéntanos tu experiencia!

  2. Hola Alberto,

    Tengo una duda, ¿ la placa uno v1.8.1 Freaduino a cual de las placas del compilador de Arduino se corresponde?

    Porque hay muchas opciones Uno, Fio, Micro, Esplora.

    Lo cierto es que lo tengo seleccionado en Uno pero el comportamiento es errático.

    1. Alberto Valero

      Hola Francisco, la Freaduino es de la familia UNO. Puedes programarla desde cualquier entorno compatible con Arduino, incluído bitbloq.org

  3. buenas
    he copiado varias veces el proyecto del siguelineas de la página y el código no se corresponde, hay algún lugar donde se pueda descargar? Gracias

    1. Alberto Valero

      Hola Pablo, ¿a qué te refieres con que no se corresponde? ¿no te funciona? ¿en qué falla? Puedes probar a abrir el proyecto del siguelíneas que ya existe en bitbloq. Puedes ir a “Explora” y buscarlo. Salvo error nuestro debería funcionar correctamente.

  4. Hola, tengo un problema: cuando conecto el robot al pc no lo detecta, por lo que no puedo cargarle en programa en la placa.
    He descargado los Drivers para mi Windows(64bits) y tampoco lo detecta; no se donde puede estar el problema, si es el robot
    o que estoy haciendo algo mal con el pc.
    Gracias.

    1. Alberto Valero

      Hola,
      ¿Que versión de windows usas? Para instalar los drivers debes hacerlo como administrador, para ello pulsa botón derecho y luego ejecutar como administrador. Recuerda ejecutar los dos archivos del archivo comprimido.

      Una vez hecho esto debería reconocer la placa. Si no es así dinoslo e intentamos encontrar el problema.

      Alberto

  5. hola. Monte el renacuajo y descargue el programa “robopad_renacuajo_plusplus” Arduino INO file….(para controlarlo con la applicatiob Robotpab ++ bluetooth y siguelineas)
    con el bluetooth funciona perfectamente pero al cambiar la funcion del siguelineas, no funciona. para comprobar descague el programa de siguelias ( sin el bluetooh) y el siguelineas funciona pero con los servos invertidos. hasta ahora logro que el renacuajo funcione solo con el bluetooth o solo con el sigue lineas… pregunto cual es el programa INO arduino completo que permita ambas funciones,
    gracias
    jose maya

    1. Anita de Prado

      Hola Jose.
      El programa “robopad_renacuajo_plusplus.ino” funciona correctamente. Aquí te dejo el link rápido para volverlo a descargar:
      ROBOPAD++ PARA RENACUAJO

      Este programa funciona con la placa FreaduinoUNO y el módulo bluetooth HC-05 de Mi Primer Kit de Robótica. Recuerda desconectar los cables del bluetooth de los pines 0 y 1 antes de programar la placa.

      También es posible que tengas un problema de alimentación, prueba a utilizar pilas bien cargadas u otro método que no sea el cable USB conectado al ordenador. Si los servos están invertidos (el robot retrocede en lugar de avanzar), prueba a invertir su conexión (pin 6 y 9).

      Espero que este comentario te ayude, ¡ánimo!

  6. Buenos días.

    He montado el siguelineas sin problemas programándolo con Bitbloq. Como mi hijo ya había hecho anteriormente algunas cositas con Scrtach se me ha ocurrido intentar realizar algun programa con scratch para el renacuajo.

    Entiendo que caargando al Frearduino el firmware de S4A podrái programarlo, ¿Creeis que podría darme problemas?

    1. Alberto Valero

      Hola Pablo,

      Sí, puedes programarlo con S4A, el problema es que necesitarás mantenerte conectado al ordenador con el cable USB, por lo que puede ser poco práctico. La diferencia entre S4A y bitbloq es que bitbloq programa el robot, por eso puedes luego desconectarlo del ordenador y sigue funcionando. Sin embargo, S4A comunica con el robot, por lo que siempre es necesario tener conectado el cable USB.

  7. Buenos días
    Me gustaría preguntarle como programar este siguelineas pero en vez de emplear servo motores , micromotores, el resto igual
    El microprocesador que dispongo es el Arduino uno rev 3.
    Gracías de antemano.

    1. Alberto Valero

      Hola Alex,

      Se programa del mismo modo sólo que con el código correspondiente al control de motores.

  8. Hola
    Tengo un problema que no se solucionar con el programa del siguelineas, cuando lo cargo en la placa funciona mientras lo tengo en el aire, cuando lo poso sobre una superficie sólo mueve la rueda izquierda, con lo que no para de girar .Me he descargado el código por si había algún error en el mío, pero hace lo mismo. ¿Cómo puedo solucionarlo?Gracias

  9. Hola
    He programado el sigue lineas y lo he probado con cinta aislante en el suelo. Funciona correctamente, pero me gustaría tener un circuito hecho con plástico o lona, que pudiera enrollar y guardar.
    ¿Vendéis algún circuito con la linea ya hecha?

    1. Alberto Valero

      Hola Ferrán,

      Lo sentimos, actualmente no vendemos circuitos para siguelíneas.

      Alberto

  10. Hola,
    En primer lugar quería daros las gracias por abrir el mundo de la robótica a profanos en la materia!!
    Quería también preguntaros: ¿no están cambiados los pines de los sensores-servo en el esquema de las conexiones? Por ejemplo, las variables se declaran ir_derecho – 2, servo_derecho – 9, en cambio en el conexionado indica pines 3 – 9. De hecho monté el renacuajo con las indicaciones de la web y cargué el programa de la web tal cual y va hacia atrás! Aunque fué toda una experiencia verlo seguir la línea.
    Otra pregunta: la línea negra ¿tiene que ser tan ancha como la distancia entre los sensores? ¿Se podrían hacer dos líneas negras separadas esta distancia o mejor aún, programarlo para seguir una línea blanca?

    1. Alberto Valero

      Hola Claudio,

      Gracias por el aviso sobre los pines, lo revisamos.

      Respecto a la línea, en realidad se puede hacer de muchas maneras. El ejemplo más sencillo es el de una sola linea más ancha que la distancia entre IRs, pero hay alternativas, como una línea negra estrecha entre ambos… o dos líneas… es cuestión de probar.

  11. El programa Bitbloq que usan aca, sirve para cualquier tipo de programacion o tengo que usar los modulos y accesorios que venden para poder programar?

    1. Alberto Valero

      Hola Luis,

      Bitbloq sirve para cualquier placa controladora y periférico de la familia Arduino UNO

  12. Hola, mi pregunta no es precisamente del sigue-líneas, pero sí relacionada. Hemos montado el renacuajo, hemos hecho un programa en bitbloq para que solo caminara de un lado para otro y doblara, solo usando los servos. Por divertirnos y ver resultados rápidos. Y perfecto, el bicho camina y dobla, y genial. Pero…
    El programa le ordena al renacuajo caminar, doblar a la izquierda, caminar de nuevo, detenerse, y tras 3 segundos, volver a empezar. Y lo hace perfecto. Pero antes de empezar la primera vez, y luego también antes de empezar cada ciclo, empieza a dar vueltas solo. Es decir, una rueda funciona y la otra no. Y entonces empieza a hacer lo que debe. Para, vuelve a dar las vueltas antes de empezar de nuevo…Hemos revisado el programa y no hay nada que le diga que haga eso. Hemos forrajeado la placa y vuelto a cargar el programa. Y hemos revisado los servos, y están bien calibrados (además, ya digo, cuando debe detenerse, se detiene).
    ¿Qué podría ser?
    Me doy cuenta de que me he enrollado demasiado, disculpen. Y gracias por adelantado por vuestra ayuda.
    Saludos,
    Guillermo.

    1. Alberto Valero

      Hola Guillermo,

      Tal y como lo describes parecería que es un tema de pilas. Cuando las pilas están gastándose o no son de buena calidad la placa puede bloquearse y luego resetearse. Que el robot empiece a girar es porque el micro se ha bloqueado, luego se resetea y por eso te parece que sigue funcionando, lo que pasa en realidad es que el programa se ha reiniciado.

      Si pruebas con pilas nuevas o pilas recargables probablemente no te pase.

      Ya nos contarás, un saludo,

      Alberto.

      1. Buenas Alberto,

        Muchas gracias en estos días lo veo y te digo. Es verdad que las pilas que he puesto son de las baratas, para probar.

        Saludos,

        Guillermo

  13. hola mi pregunta consiste en

    Como puedo hacer que un robot siga las lineas con optoacopladores en Arduino

  14. Pingback: Desarrollando Juntos | (BitBloq + Arduino) Robot Siguelineas

  15. Buenos dias!
    He adquirido el PrintBot  Renacuajo
    Estoy programando en la versión antigua de Bitblog el programa del seguidor de lineas..
    En los bloques de control, en la instrucción de “Si ejecutar “, hago clic en la estrella para emplear  la opción  de ” lo contrario “.
    Se me queda seleccionada añado la condición de servo. y  no consigo que se quede el bucle con la instrucción ” si ejecutar” y “lo contrario” ¿ Cómo lo puedo resolver para que vengan las dos condiciones  dentro de la instrucción en verde  ? Lo he mirado en los tutoriales pero me india que haga clic en la estrella del bloque ” Si ejecutar” , pero no lo consigo….

    Un saludo

  16. Buenas tardes

    Muchas gracias por tan maravilloso modelo y por los tutoriales e instrucciones de montaje.

    Queríamos hacer un pequeño apunte respecto a los ficheros, recordando que hay sistemas de archivos que tienen problemas con las tildes. Nosotros hemos solucionado rápido el error que nos daba el IDE con el fichero siguelíneas.ino eliminando la tilde de la i, pero imaginamos que puede haber robonautas que no conozcan este problema. Simplemente escribimos para avisar de que puede suponer un pequeño quebradero de cabeza.

    Un saludo

  17. Pingback: Destripando el Printbot Evolution de BQ - Rufián en la Red

  18. Hola! Me parece muy productivo y emcoinante vuestro proyecto. Aunque me gustaria que actualizaseis esta pagina y pusieseis la programacion con el nuevo bitbloq.

    SALUDOS

  19. Pingback: programmer son robot BQ suiveur de ligne avec blockly@rduino – LibrEduc

  20. Hola Alberto,
    Esto está fenomenal

    Quería saber si es posible modificar la potencia con la que se mueven los motores, para que no tenga que parar totalmente uno al girar.
    ¿Es necesario usar potenciómetros? O hay una manera más sencilla.

    Parece que solo puedo conectar los motores a la entrada digital.
    Gracias!

    1. Enrique Heredia

      Hola Javi,
      Muchas gracias por la valoración.
      El control de los servos lo hacemos variando la velocidad y sentido de giro, no la potencia. El robot gira a partir de la diferencia de velocidades en las ruedas, si la derecha gira más rápido que la izquierda el robot girará hacia la izquierda. En este caso el giro a la izquierda lo hacemos parando el servo izquierdo, pero bastaría con que gire en el mismo sentido a menor velocidad que el derecho o incluso en el sentido opuesto. Esto depende de la amplitud de giro que quieras.
      Como dices estos servos los conectamos a los pines digitales ya que se controlan por pulsos (PWM).
      Un saludo

Los comentarios están cerrados.