Paso 1: La secuencia de comandos
Usted puede encontrar el script completo en: Bitbucket
Primero de todas las librerías necesitada:
- Biblioteca de SenseHat . (Sustituido el estándar RTIMUlib instalado por RTIMUlib2)
- os y sys comando analizar como poner fin a la ejecución del script
- json para recuperar los datos de la API de llama en un diccionario de Python
- urllib2 para acceder a la URL a través de la web
- fecha y hora y el tiempo por razones obvias
- pygame para la interpretación de los eventos de joystick
- IssFlags un segundo script en Python que contiene todas las definiciones de sprite de las banderas
La sección principal contiene las instrucciones para recuperar los eventos (movimientos de la palanca de mando) de la cola de pygame. Esta parte debe ser siempre en el bucle principal del script. El joystick es un botón de 5 vías (arriba, abajo, izquierda, derecha, prensa) que produce 10 eventos diferentes (5 veces KEYUP, KEYDOWNde 5 veces). Al empujar la palanca de mando, uno produce 2 eventos (KEYUP y KEYDOWN) con la misma clave (arriba, abajo, izquierda, derecha). Primero limpié la cola después de leer un solo evento, pero cuando he añadido la función trackISS() en el bucle principal, de alguna manera peculiar, pygame maneja ambos eventos antes de eliminar la cola. Por razón la función de handle.event() comienza con un filtro de tipo de evento. El resto habla por sí mismo.
trackISS() fue agregado al bucle principal hacer que el script un poco más animado: cuando no se utilizan teclas, se muestra la localización de la ISS. La función se mantiene simple: obtener un registro json de la API, enriquecer los datos recibidos a través de una llamada a una API de segunda y mostrar los resultados.
Una descripción de la API y algunos ejemplos de cómo utilizarlos, puede encontrarse en: ISS API
La estructura de datos de los registros de json también puede ser fácilmente obtenida copiando la url en un navegador. (Después de una API es sólo un 'no-tan-bueno-buscando-url'). A 'probar – excepto' declaración controla el acceso a la url de la API. Esto se hace para evitar que el script falle cuando la url no es accesible (causada por p. ej. pérdida de wifi, un error o de su proveedor de mantenimiento en el servidor de la API, etc..).
La primera devuelve muchos datos como coordenadas solares, velocidad, visibilidad y coordenadas de la tierra. Para enriquecer esta información con un código de país y la zona horaria actual, la latitud y longitud devuelta por la API de primera deben ser añadida a la segunda URL por concatenación de cadena simple.
La segunda sólo devuelve datos cuando el ISS está por encima de la tierra. Mar la API devuelve el notorio '404 página no encontrada error'. Así que, después de comprobar la disponibilidad de la url, la secuencia de comandos comprueba un HTTPError así. Cuando se enfrentan a un HTTPError, se muestra la ubicación en el mar. Si se devuelven los datos, el código de país se utiliza para buscar los datos de la bandera.
La función showLevels() se ocupa de los datos de la echada y del rodillo. Contiene un bucle comprobando la orientación de la RPi y la posición de reposo de la frambuesa de la sincronización. Cada vez que el IPC se mueve en el tiempo máximo de inactividad, el número de filas y collumns se calcula y se muestra. El tamaño de la matriz de lcd (8 x 8) determina la resolución del nivel (degr 180 / 8). Ya que no existe ningún centro medio de la matriz, la fila o columna de entrada tiene que determinarse cada vez, según el movimiento (nariz o cola, de izquierda o derecha). No es sofisticado de codificación, sólo manejo cada requisito/limitar en un momento.
La función environmentals() solo llama para cada sensor a la vez. La codificación para cada sensor se toma directamente de los ejemplos de SenseHat (la carpeta es parte de la instalación). Tenga en cuenta que pidiendo el magnetómetro deshabilita el giroscopio y el acelerómetro. Tendrás que encender aquellos cada vez utilizando el 'set_imu_config (bool, bool bool)' declaración.
Hasta el momento por lo que pude conseguir de la SenseHat. Que ayuda a las personas con los primeros pasos con la Junta. Tengo curiosidad sobre otros/nuevas ideas para apllications. Y por supuesto hacer más banderas en el script de IssFlag.py.