Paso 3: Flash el Firmware
El código es bastante simple.
Contamos con un menú de interfaz (Serial) del RS232 para configurar la dirección I2C, límites suaves en el sensor, la velocidad del motor y el rumbo predeterminado. La mayoría de lo firmware se asocia con ese menú de interfaz en serie. Uso un dispositivo USB a RS232 TTL como un chip FTDI para flash su Arduino Pro Mini, el terminal serie entonces le mostrará el menú de configuración.
La lógica real está en el "viraje", esta rutina mide la posición del sensor y vuelva a ejecutar los motores hasta dos veces la velocidad indicada para "atrapar" al otro lado.
Para I2C tenemos dos subrutinas, se llama receiveEvent cuando llegan datos de Arduino en el bus I2C. RequestEvent ocurre cuando unas datos de solicitud de dispositivos I2C Arduino ejecuta el SwerveSteerTwoTone.
Utilizamos EEPROM para guardar los ajustes para que el dispositivo puede recordar sus ajustes cuando se apaga. Usted puede pensar esto como un disco duro para el Arduino. Recuerde que sólo tiene muy pocos bytes.
Un poco inteligente de este código es mediante la función de tono para crear un contador de tiempo constante para generar dos frecuencias distintas para los dos motores paso a paso. Para ello el tono la función de salida en el Pin 2 y desde el Pin 2 es también cambios Int 0 a Int 0 entonces llame al manejador de interrupción "intHandler". intHandler comprueba que si el pin de los pasos del motor necesita ser activada, lo hace para pasadores.
Todo esto podría ser más elegante pero esta es una buena manera de crear encapsulado del movimiento del pie lejos del resto del código para el robot.
Finalmente una última nota. Somos creyentes fuertes en "La cosa más simple que podría trabajo." por lo que es posible que este código fallará en algún caso o se pudieron escribir más rápido o limpiador de sincronización más consistente. Pero este es el más simple que pensamos que funcionaría. Y apareció a trabajar como se esperaba.