Paso 3: Arduino y programación de PC
En el Arduino necesitamos una interfaz que permite a la PC controlar los motores. También necesitamos un sistema de impulsión servo PWM para enviar las señales correctas a los motores de Vex y asegúrese de que van en la dirección correcta cuando da los valores correctos. También he añadido algunos simple LED intermitente, principalmente para indicación de Estado sino también porque se ve cool.
En la PC necesitamos abrir el puerto serial y enviar cuadros de datos que comprenderá el programa de Arduino. La PC también tiene que llegar a valores de motor. Una manera fácil de hacerlo es utilizar un joystick o un gamepad USB, estoy usando un controlador de Xbox 360. Otra opción es usar una computadora en red (un netbook o un mini pequeño tablero ITX) en el robot en sí mismo para conducir de forma inalámbrica. Con un netbook, usted puede incluso utilizar la webcam a bordo corriente detrás una alimentación video y tu robot remotamente. Usé el sistema de sockets de Linux para red de programación de mi configuración. Un programa (el "servidor de joystick") se ejecuta en un PC aparte que tiene un controlador conectado a él, y otro programa (el "cliente") se ejecuta en el netbook conectado a Arduino. Esto conecta las dos computadoras y envía información del joystick a la netbook, que luego envía paquetes serial al Arduino que impulsa el robot.
Para conectar con Arduino usando un PC Linux (en C++) debe primero abrir el puerto serie a la velocidad correcta y luego enviar los valores utilizando un protocolo que también ha utilizado el código de Arduino. Mi formato de serie es simple y eficaz. Usar 4 bytes por "marco" para enviar las dos velocidades de motor (cada uno es un solo byte). Los bytes de la primeros y la últimos son valores codificados que se utilizan para mantener el Arduino se envía el byte mal el código de PWM y los motores a enloquecer. Este es el propósito principal de los LED RGB, parpadea en rojo cuando el marco de la serie era incompleto. Los 4 bytes son los siguientes:
255 (byte duro codificado «start»), 200 (byte duro codificada "final")
Para asegurar una recepción fiable de los datos, asegúrese de que usted pone suficiente retardo entre bucles de programa. Si ejecuta el código de la PC demasiado rápido, inundará el puerto y el Arduino puede comenzar los golpes o incluso mal leyendo bytes. Aunque no soltar información también puede desbordamiento de búfer de puerto serie de Arduino.
Para los motores de Vex, usé la librería Arduino Servo. Ya Vex motores son motores de rotación sólo continua, utilizan el exacto mismo de señalización que utilizan servos. Sin embargo, en lugar de 90 grados es el punto central, es el punto donde el motor no gira. Bajar el "ángulo" hace que el motor arranque giro en una dirección, mientras que aumentar el ángulo hace girar en otra dirección. Cuanto más alejándose del punto central que es, más rápido el motor girará. Mientras que no se va a romper nada si envía valores de más de 180 grados a los motores, yo aconsejaría limitar los valores de 0 a 180 grados (que en este caso son incrementos de velocidad). Porque quería más control y menos fuera de control robot conduce, agregué un software "límite de velocidad" en mi programa que no permite la velocidad aumentar por encima de 30 "grados" en cualquier dirección (el rango es 90 +-30). Plan sobre cómo agregar un comando de puerto serie que cambia el límite de velocidad, para que la computadora pueda quitar el límite sobre la marcha si quieres ir rápido (he estado probando en pequeñas salas por lo que no lo quiero para acelerar y chocar contra la pared, especialmente con un netbook en él).
Para obtener más información, descargue el código adjunto al final de este Instructable.