Omvänd Geocache (7 / 8 steg)
Steg 7: Programvara: spelet skissen
De olika modulerna i skissen:Setup:
Uppenbara artiklarna setup och påbörjas: Serial monitor, GpsSerial till GPS-modulen, Led drivande skiftregister, alla spel variabler.
Under fälttester, uppdatera den standard 1Hz GPS kurs visade sig vara för långsam.
Jag var tvungen att gräva i ST22 programmet anteckningar och nu skicka ett antal binära uppställningar till GPSmodule.
- Seriell port interface börjar på 9600 baud, sedan 38400 baud råtta är inställd för modulen och för Gps-Arduino-gränssnittet
- GPS uppdateringsfrekvensen är upp till 8 Hz
- Fotgängare navigationen läget anges, anpassa GPS inre filtrering
- Alla onödiga NMEA meningar från GPS stängs, endast GPRMC hålls
Till min frustration, jag var inte kunna visa GPS ACK och NACK-meddelanden, men jag fick bevis för att mina meddelanden wel fick.
Även om det är möjligt, jag inte lagra ovanstående inställningar permanent i GPS.
LED hantering:
Led displayen kan visa flera meddelanden:
- Självtest: LED lyser, en efter en, i en långsam sätt, medan GPS-modulen försöker få en fix.
- Söka nästa waypoint: led motsvarar en relativ bäring till waypoint lyser
- waypoint hittade OK: lysdioderna köra 2 snabb "mexikansk våg" rörelser.
- NOK, waypoint inte nått ännu: lysdioder säga nej av omväxlande 90 ° och 90 ° lysdioder.
- Straffad: serie av 10 snabb NOK meddelanden.
- Hurra, sista waypoint hittade & Game Over: serie av snabbt mexikanska vågor tills avstängd.
Spelet logik:
Vid start visas självtestet, väntar på en fix.
När det finns en fix, införs sökläget. spelaren blir rörliga, visas bäringen till nästa waypoint.
Efter att trycka på knappen OK, är flera situationer möjliga:
- avståndet till waypointen ligger inom gränserna och den sista waypointen inte nås: OK visas, nästa waypoint är laddad och sökläget trädde
- avståndet till waypointen ligger inom gränserna och den sista waypointen nås: hurra är visas, spelet är över
- avståndet är nok och detta är den första eller andra fel för denna vägpunkt: efter NOK visning, fortsätter sökningen
- avståndet är nok för tredje gången: straffad visas, tidigare waypointen är laddad och sökläget trädde
GPS hantering:
De flesta av gränssnittet till GPS-modulen hanteras av nmea.h biblioteket
Tre utgångar används här:
- nr, gps.gprmc_course(), spelarens rörelseriktning
- uthärda, gps.gprmc_course_to(latitude_Wp,longitude_Wp), riktningen till målet waypointen
- avstånd, gps.gprmc_distance_to (latitude_Wp, longitude_Wp, MTR), avståndet till målet waypointen
De relativa lagren, visas på led display, beräknas genom att substrahera med från väg, och föra resultatet mellan 0° och 180°.
Medan en NMEA meningen är avkodad karaktär av chracter av nmea.h, bör den inte avbrytas. därför denna åtgärd är inbäddad i en "tag (! avkodade)" loop.
Minneshantering:
Delkurser: getNextWaypoint, getPreviousWaypoint, heltal och flyttal läsa rutiner
getNextWaypoint beräknar nästa Waypoint adress form den aktuella waypointen länk, och returnerar latitud och longitud för nästa mål waypoint. Det flaggar också slutet av Vägpunktslistan när nått.
getPreviousWaypoint följer den waypoint kättingar, start från botten. Anmärkning att waypoints i minnet inte är nödvändigtvis i följd, eftersom spelet master kunde ha bort eller införas waypoints i förteckningen.
Hämtar rutiner för heltal och flöten är densamma som i den meny skissen.
Se skiss nedan.