Paso 3: programación
Esto es donde se pone divertido.La biblioteca UTFT resultó para ser bastante fácil de usar y también encontró una fácil de usar biblioteca para la DHT-22. Incluso con estas bibliotecas agradables, hubo algunos retos.
El Arduino como esclavo i2c parece comportarse sólo si usted limita su uso a las operaciones del solo-octeto, y esto dificulta el envío flexibles estructuras complejas. Quiero ser capaz de enviar comandos de dibujo de pantalla de la BeagleBone a Arduino. Mis opciones eran a código de un sistema que se envía un byte como un "tipo comando" entonces rama para leer bytes más para completar la estructura o manera para encapsular una cadena delimitada y procesarlo. Método 1 significaría no puedo tener parámetros opcionales, y si el envío de bytes obtiene fuera de sincronización será difícil volver a sincronizar. Usé el método 2 usando algunas variables de búfer y enviar un byte 0 como terminador null, como C usa para cuerdas. Incluso si llega caer un byte, el byte 0 terminará la estructura en algún momento y entonces es sólo una cuestión de tratar con datos raros cuando parse.
El siguiente reto era que el DHT22 es lento. como, realmente lento. Resuelto que el uso de un "valor actual" variable y un retraso. No necesito respuesta super rapida cuando los valores cambian, pero quiero que respondan rápido cuando le pregunto por los valores. El bucle principal sondea una función cada vez, que luego los cheques cuando el valor de la última actualización y actualizaciones si hace más de 3 segundos. Probablemente te terminan de convertir esto en un temporizador de algún tipo.
También programé en un modo de"dev" para que pueda desconectar la pantalla LCD y obtener información sobre la serie. Ha sido útil hasta ahora, pero ahora que se elaboran los fundamentos probablemente no usarlo otra vez.
En el Beaglebone, estoy usando ahora mismo PyBBIO . arduino como comandos y métodos me impiden conseguir super confundido cuando trata de estos diferentes lenguajes como C y Python es. Es bastante fácil de instalar, y tiene unas clases bien estructura en. Es mi intención para tratar de obtener a algún tipo de clase de i2c, si Haim no primero!
Encontrarás un archivo zip que se adjunta con mi código, un archivo de ino para el arduino y un archivo de python para el beaglebone. Actualmente hay solamente apoyo para las lecturas de temperatura y humedad DHT22. Actualiza la visualización en el arduino aunque no ejecuta el script de python. El script de python simplemente obtiene los valores y les imprime en el terminal. Como dije al comienzo, todavía tenemos mucho trabajo que hacer!
El bosquejo compilado utiliza 29,5 K del K 32,2 máxima, y necesito agregar soporte táctil y las funciones de dibujo! Creo que hay un montón de código en el utft que puedo cortar hacia fuera, y tal vez puedo tirar las cosas biblioteca DTH y hacer más magra así. O, tal vez lo suficiente, voy a ver!