Llamada a la función
el robot y la línea, un valor entre 0 y 4000. El valor 0 indica que la línea esta a la izquierda del
sensor 0, valor de 1000 indica que la línea esta debajo del sensor 1, 2000 indica que esta debajo
del sensor 2, y así sucesivamente.
El valor devuelto por read_line() se divide en tres casos posibles:
1. 0–1000: el robot está lejos del lado derecho de la línea. En este caso, gira rápido a
izquierda, ajustando el motor derecho a 100 y el izquie
de los motores es de 255, luego estamos rodando el motor derecho al 40% de su
velocidad.
2. 1000–3000: el robot está bastante centrado en la línea. En este caso, ajusta los
motores a velocidad 100, para correr recto.
3. 3000–4000: el robot está lejos del lado izquierdo de la línea. En este caso, gira rápido
a derecha ajustando los motores derecho a 0 e izquierdo a 100. Dependiendo de que
motores están activados, se encienden los leds correspondientes para mejorar el
aspecto. Esto puede ayudar en la depuración del código.
De
pendiendo de que motores se activa, los leds correspondientes se encienden lo que ayuda a su
de
puración y control.
Para abrir el programa en el AVR Studio debes ir a
. Compila el programa, mételo en tu 3pi y adelante. Tienes que saber que tu robot es
test.aps
capaz de seguir las curvas de la línea en curso sin perderla. Sin embargo los motores se mueven
a velocidades de alrededor de 100 de su máximo posible de 255, y el algoritmo debe producir
una gran cantidad de cálculos para las curvas. En este punto puedes intentar mejorar el algoritmo
antes de pasar a la siguiente sección. Algunas ideas para ello pondrían ser:
• Incrementar la velocidad al máximo posible.
• Añadir causas intermedias son velocidad intermedias de ajuste para hac
• Usar la memoria del robot: tiene su máxima
tramo de línea con unos pocos ciclos de código.
También puedes:
1.
Medir la velocidad del bucle, usando las fu
calcular el
tiempo necesario de ciclos o de parpadeos del led por cada 1000 ciclos.
2.
Mostrar las lecturas de los sensores en la
de la LCD conlleva bastante tiempo y sobre todo si son varias veces por segundo.
3.
Incorpora el buzzer en programa. Puedes hacer que tu 3pi toque música mientras corre o
tener información adicional con los beeps según lo que esté haciendo. Ver sección 4 para
más información del uso del buzzer; para música tendrías que usar
desconecta la lectura de los sensores.
El código entero del programa de seguimiento de línea es este:
1.
/*3pi-linefollower - demo code for the Pololu 3pi Robot
2.
/This code will follow a black line on a white background
3.
/very simple algorithm.
4.
/the 3pi IR sensores, motor control, bar graphs using cust
5.
/characters, and music playback, making it a good starting point for
6.
/developing your own more competitive line follower.*/
7.
// The 3pi include file must be at the beginning of any pro
8.
// uses the Pololu AVR library and 3pi.
9.
#include <pololu/3pi.h>
10.
// This include file allows data to be stored in program space.
11.
// ATmega168 has 16k of program space comp
12.
// pieces of static dat
13.
#include <avr/pgmspace.h>
14.
// Introductory messages.
15.
// go into program space.
16.
const char welcome_line1[] P
17.
const char welcome_line2[] PROGMEM = "3\xf7 Robot";
18.
const char demo_name_line1[] PR
19.
const char demo_name_line2[] PROGMEM = "follower";
20.
// A couple of simple tunes, stored in program space
read_line().
Obliga al sensor a leer y devuelve una lectura estimada entre
It demonstrates auto-calibration and use of
a should be stored i
The "PROGMEM" identifier causes the data to
ROGMEM = " Pololu";
OGMEM = "Line";
rdo a 0. La máxima velocidad
examples\3pi-linefollower
aceleración después de haber circulado por un
nciones de cronómetro de la sección2 para
. Hay que tener en cuenta que la escritura
LCD
, using a
om
gram that
ared to 1k of RAM, so large
n program space.
.
y un doble-clic en
erlo más divertido.
_CHECK, pero
PLAY
The