Paso 5: El dibujo código para ejecutar el robot
EL CÓDIGO DEL SKETCH DE ARDUINO
Este código beta unidades basados en Arduino servo-conducido barrido radar IR para realizar control de servo y evitar obstáculos.
Última versión: Beta 0.8 22 de octubre de 2011
Este código fue escrito para ser como uno mismo-documentación como sea posible. He utilizado sintaxis detallado y ampliado en lugar de código compacto para que sea más fácil de entender y al puerto a otros lenguajes de programación. Con excepción de la IR leyendo el código, este bosquejo no fue copiado de cualquier proyecto pero se benefició de la experiencia colectiva de muchos otros. Cualquier persona puede utilizar y modificar este código con atribución.
Este robot se mueve mediante manejo diferencial. Hacerlo girar a una rueda debe moverse más rápido que el otro en el mismo o enfrente de la dirección por un período de tiempo. Usé el ensayo y error para encontrar este valor de tiempo. será diferente de su propio robot.
Estos valores de tiempo dependen de muchos factores como el tamaño de la rueda, peso del robot, calidades superficiales, tracción, etc.. Es mejor probar su robot en la superficie del blanco (por ejemplo disco de sumo, piso de mármol) para llegar a valores de trabajo para que no tenga que cambiarlos más adelante.
Nota: Para detener los servos, simplemente "separar" los "agregado" en el programa de ellos cuando los necesite para moverse otra vez. Esto era mejor que el dolor de cabeza de intentar averiguar el punto de parada de cada servo que he modificado para rotación continua.
La lógica de las pseudo funciona como sigue:
PROGRAMA DE INSTALACIÓN
Configurar las constantes ambientales y físicas tales como tiempo de vueltas de rueda, distancia segura al obstáculo, etc.;
Robot de inicio;
Exploración hacia la izquierda, adelante, derecha;
Moverse en la dirección de un mayor espacio;
LAZO
Manténgase en movimiento hacia adelante mientras se exploraba por delante;
Si obstáculo llegó a parar y en todas las direcciones (izquierda, adelante, derecha)
Moverse en la dirección de un mayor espacio;
Si no encuentran obstáculos en todos los grados de direcciones entonces Backturn 360 después explorar en todas direcciones agin (a la izquierda, adelante, derecha)
Si el obstáculo se encuentra en todas las direcciones entonces parada;
REPETIR BUCLE
Eso es todo.
En el nivel lógico, tengo 3 secciones principales del código de bosquejo:
1) configuración de constantes, variables físicas y ambientales.
2) lógica IR servo y leer distancias y advertencia de obstáculo.
3) lógica para servos de la rueda hacia adelante, izquierda, derecha, 360 y simplemente inverso.
Una vez más, se trata de código beta pero funciona.
Aquí hay otra grabación de video, pero de peor calidad (tomada con la cámara del Nokia 5800)