Paso 9: El código final
En este paso, el Robot puede seguir un lazo constante y lo hará sin parada.
El programa de circuito sería:
void loop)
{
readLFSsensors(); leer sensores, valores de almacenamiento de información en el Sensor de matriz y calcular el "error"
calculatePID();
motorPIDcontrol();
}
Pero para una operación más completa y real, es importante agregar al menos un par de conceptos básicos "comandos" de hecho "con la línea". Por ejemplo, vamos a introducir una nueva variable: "modo". Vamos a definir 3 Estados para esta variable:
modo de:
- #define parado 0
- #define FOLLOWING_LINE 1
- #define NO_LINE 2
Si todos los sensores encuentran una línea negra, la salida del Sensor de matriz podría ser: 1 1 1 1 1. En esta condición, podemos definir el modo como "Parado" y el Robot debe realizar un "punto".
si ((LFSensor [0] == 1) & & (LFSensor [1] == 1) & & (LFSensor [2] == 1) & & (LFSensor [3] == 1) & & (LFSensor [4] == 1)) {mode = parado; }
- Otra situación común con Robots de seguidor de línea es donde no funda "línea", o la salida del Sensor de matriz es: 0 0 0 0 0. En este caso podemos programar una vuelta de 180o o girar en ángulos pequeños hasta que una línea es encontrar y la condición de seguir línea normal se reanuda.
else if ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 0) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) {mode = NO_LINE;)
El (circuito completo) sería:
void loop()
{
readLFSsensors();
interruptor (modo)
{
caso de parada:
motorStop();
rotura;
caso NO_LINE:
motorStop();
motorTurn (a la izquierda, 180);
rotura;
caso FOLLOWING_LINE:
calculatePID();
motorPIDcontrol();
rotura;
}
}
El código real final integrará alguna lógica adicional y también alguna variable debe ser inicializada, etc.. Durante la explicación de los pasos, he dejado hacia fuera por razones de simplicidad, pero todo debe ser claro mirando código final.
Abajo el último código de Arduino: