Paso 7: Software: el bosquejo juego
Los diferentes módulos en el sketch:Configuración:
Los artículos obvios son configurados e inicializado: monitor Serial, GpsSerial el módulo GPS, el registro de desplazamiento conducción Led, todas las variables de juego.
Durante pruebas de campo, el estándar 1Hz GPS actualización tasa resultó para ser demasiado lento.
Tuve que cavar en las notas de aplicación ST22 y enviar un número de configuraciones binarias a la GPSmodule.
- Interfaz de puerto serie comienza a 9600 baudios, luego rata de baudios 38400 está establecido para el módulo y para la interfaz de Gps-Arduino
- La frecuencia de actualización GPS se eleva a 8 Hz
- Se establece el modo de navegación peatonal, adaptando el filtro interno de GPS
- Se cierran todas las innecesarias sentencias NMEA del GPS, se mantiene sólo GPRMC
Para mi frustración, no fui capaz de mostrar los mensajes de ACK GPS y NACK, pero tengo prueba de que mis mensajes son wel recibido.
Aunque es posible, no guardar la configuración anterior permanentemente en el GPS.
Manejo de LED:
La pantalla led puede mostrar varios mensajes:
- Autoprueba: leds se encienden, uno por uno, de forma lenta, mientras que el módulo GPS intenta conseguir una solución.
- Búsqueda siguiente waypoint: led correspondiente con el cojinete relativo a waypoint se enciende
- punto encontrado OK: los leds ejecutar 2 rápidos movimientos de la 'ola mexicana'.
- NOK, waypoint no alcanzado aún: leds de decir 'no' por la alternancia de los leds de-90 ° y 90 °.
- Punished: serie de 10 mensajes NOK rápidos.
- Hurra, último waypoint encontrados y Game Over: serie de olas que rápidamente mexicanas hasta apagado.
Lógica del juego:
En el arranque, se muestra la prueba, a la espera de una solución.
Cuando una solución está disponible, modo de búsqueda se introduce; Cuando el jugador se mueve, se muestra el rodamiento hacia el próximo waypoint.
Después de presionar el botón OK, varias situaciones son posibles:
- la distancia hasta el waypoint es dentro de los límites y no se alcanza el último waypoint: OK se muestra, se carga el siguiente waypoint y entrado en modo de búsqueda
- la distancia hasta el waypoint es dentro de los límites y se alcanza el último waypoint: Hurra es juego, se muestra sobre
- la distancia es de nok y este es el primer o segundo error para este punto: después de pantalla NOK , la búsqueda continúa
- la distancia es de nok por tercera vez: Punished se muestra, se carga el waypoint anterior y entró en modo de búsqueda
Manejo de GPS:
La mayor parte de la interfaz con el módulo GPS está a cargo de la biblioteca de nmea.h
Aquí se utilizan tres salidas:
- partida, gps.gprmc_course(), la dirección de movimiento del jugador
- cojinete, gps.gprmc_course_to(latitude_Wp,longitude_Wp), la dirección hacia el waypoint de destino
- distancia, gps.gprmc_distance_to (latitude_Wp, longitude_Wp, MTR), la distancia hasta el waypoint de destino
El cojinete relativo, que se muestra en la pantalla led, se calcula restando de la partida y que el resultado entre 0° y 180°.
Mientras que una sentencia NMEA es carácter decodificado por chracter por nmea.h, no debe ser interrumpido. por lo tanto esta acción está incrustada en un "tiempo (! descodificada)" lazo.
Dirección de memoria:
Módulos: getNextWaypoint, getPreviousWaypoint, integer y float leen rutinas
getNextWaypoint calcula la forma de dirección Waypoint siguiente enlace del punto de referencia actual y devuelve la latitud y longitud del siguiente waypoint de destino. También lo marca el final de la lista de waypoint cuando llegó.
getPreviousWaypoint sigue la cadena de enlace de punto de referencia, a partir de la parte inferior. La observación que los waypoints en la memoria no son necesariamente consecutivos, como el maestro de juego podría ha borrado o inserta waypoints en la lista.
Las rutinas de recuperación de enteros y flotantes son los mismos que el bosquejo de menú.
Ver dibujo a continuación.