Paso 3: programación
Software para este proyecto consiste en dos partes, una para el control remoto (que llamo "Host" más adelante) y el otro para el robot ("cliente").
La programación del control remoto tiene un diagrama de flujo mostrado en la primera imagen. Es responsable de inicializar la conexión, restablecer la conexión rota, codificación de los comandos y proporcionar retroalimentación de cliente al usuario. También habrá un sistema de menú LCD para proporcionar información sobre el estado actual del controlador, permiten el ajuste de los parámetros en tiempo real, calibración y así sucesivamente.
Segundo cuadro es el diagrama de flujo para el cliente. Es responsable de aceptar la conexión, decodificación de comandos y de comunicación.
Comunicación
En cuanto a envío de datos, porque estamos utilizando los pines seriales en el Arduino, utilizaré Serial.write() para enviar datos. Esta función envía un byte de datos que significa que el valor máximo que podemos transmitir es 255 cada vez que llamamos a esta función.
Tal vez se pregunte lo que debemos hacer sobre las entradas de los potenciómetros y palancas de mando, ya que tienen un valor máximo de 1023. Tenemos dos opciones, una es bajar la resolución para asignar un nuevo valor entre 0 y 255, que puede caber en un byte el valor entre 0 y 1023. Segunda opción es tratar al número en término de bits (1024 puede ser representado con 10 bits), que se puede enviar por separado como dos paquetes. Cuando llegaron al lado del cliente, ponemos nuevamente como uno número. Como saber, para un único valor, enviar dos bytes llevaría más de un byte. Aunque es menos preciso, a veces no tenemos ese nivel de precisión y menor latencia. Así que estoy planeando adoptar ambos métodos en la comunicación del mando a distancia, por lo que el usuario puede seleccionar qué camino a seguir depende de la situación.
Enlace al archivo de origen puede encontrarse en el registro de proyecto. Como he mencionado, necesita saber cómo utilizar Arduino para utilizar el código fuente.