Paso 6: El código
Empecé con el primer paso lógico, me he cargado el programa de ejemplo de PING que se construye en el lenguaje de arduino y probado hacia fuera. Entonces modifiqué para leer los 7 pings que estábamos usando. Esto se convirtió en el Ping prueba programa de abajo, que fue utilizado más adelante para asegurar las conexiones apropiadas y en el desarrollo de algunas porciones del código principal.
El siguiente paso fue una simple prueba de la Sabertooth. Esta fue la primera vez que yo nunca había utilizado antes, así que escribí un pequeño programa que solo hacia adelante, atrás, luego izquierda, luego a la derecha. Es un programa sencillo, pero otra vez muy útil. Terminamos reconstruyendo y cablear el robot varias veces y cada vez que funcionaría este sencillo programa para asegurar que habíamos conectado los motores correctamente.
El siguiente programa fue escrito con una mofa temprana de nuestro robot hecho de un pedazo de chatarra de aluminio, un par de servomotores, pings y cartón (grabado los pings a la cartulina para montarlos), se puede ver una imagen de nuestro bot basura poco más abajo. fue lanzado juntos una hora pero sirve su propósito. Comencé leyendo los sensores del lado derecho. El robot conduciría hacia adelante como los valores de los sensores eran el mismo (cuadrado a la pared) y conduciría un motor más rápido y luego el otro, si los valores fueran diferentes. Esto corrige cualquier deriva que ocurriría. Esto es muy importante, incluso si usted conduce 2 motores a la misma velocidad no siempre giran exactamente al mismo ritmo, especialmente si están girando en direcciones opuestas.
Una vez que este código estaba trabajando empecé a monitorear el sensor delantero derecho para ver que si alguna vez fue dramáticamente rosa, esto sólo se produciría si el robot alcanzó el borde de una pared. Después de un giro de 90 grados que todavía estaríamos viendo una larga distancia a la pared lateral que podría ser un problema, aunque lo hizo impulsar desde allí se confundido cuando el primer sensor golpeó la pared siguiente, por lo que un algoritmo especial fue escrito para utilizar otros sensores al cuadrado contra la otra pared y coche hasta dos sensores de lado leer la pared otra vez. Más tarde agregué en algunas excepciones más en la entrada a cada una de las habitaciones y una comprobación de los sensores delanteros para las esquinas interiores.
Estoy seguro de que mayoría de la gente leyendo esto hacerlo porque quieren aprender cómo hacer un obstáculo evitando el robot, se trataba de un propósito construido el robot, y algunas partes del código utilizado durante la competencia sería de ninguna utilidad a la mayoría de ustedes, así que decidí hacer 2 versiones simplificada. Sé lo molesto se puede encontrar código de ejemplo que hace exactamente lo que necesita, luego tienes que ir a través y borrar la mitad de lo que no necesita. Son aún funcionales como obstáculo evitando robots excepto que quité las partes que se comunican con la cámara y el escudo de Speakjet. Este es realmente el código que se utilizó durante nuestra demostración de "Día de la ingeniería" del robot para los displays de 7 segmentos al azar generan nuevos números cada vez que llega un interior esquina. Hemos construido un pequeño curso rectangular (nuestro curso de prueba había sido desmontado después de la competición) para el evento y sería bueno para la pantalla actualizar de vez en cuando así que para generar aleatoriamente números de pensamiento. En la versión mínima pelada, también eliminar un montón de código que se utilizó para realizar un seguimiento de cada habitación y mostrar a los displays de 7segmentos.