Omvänd Geocache (5 / 8 steg)
Steg 5: Programvara intro
Vid slutet av Arduino jam session var programvaran för riktning finder ett pågående arbete. Grundläggande delar fungerade och testades: ledde matrisen, "mexikansk våg" självtest, seriell anslutning till en GPS-modul, extrahera latitud och longitud, lagra och hämta float datatyper i EEprom. Arbetet inleddes också, ladda ner Waypoints från Google maps.Sedan dess har lagt jag mycket arbete utveckla två separata skisser för omvänd geocache spelet:
-en menystyrd waypoint redaktör skiss: Geocache_menu
-spelet skissen: Geocache
Se nästa steg.
Kombinera båda skisser i en enkel skiss skulle vara möjligt, men jag höll dem åtskilda av följande skäl:
- både skisser är redan ganska stora (12 och 15 kbytes)
- onödig komplexitet skulle läggas
- skisserna är utförda av olika personer ändå.
Eftersom båda programmen har nästan 400 linjer, dela jag upp dem i mindre, hanterbara delar.
E.g. har Geocache skissen en spelet logik del, en del LED hantering, en waypoint minne hanterare, en GPS modulen hanterare.
Skriva och felsöka skisser gjordes metodiskt:
- En liten skiss var beredd för alla underobjekt
- Många seriella övervakning meddelanden har inkluderats för att följa programflödet, kontroll input och output variabler etc.
- Alla möjliga indatavärden lades till skiss och reaktionen utvärderades
- Skissen var debuggade, tills resultatet blev upp till förväntningar
Sedan integrerat jag de separata delarna taget i översiktsschema, testning och felsökning som jag gick.
Slutligen var den färdiga produkten "testas".
Detta visade fortfarande brister, t.ex reaktion på riktning förändringar var för långsam (jag var tvungen att öka uppdateringsintervallet GPS--tillbaka till ritbordet).
Jag tog bort de flesta felsökning saker, och lagt till kommentarer för enkelt underhåll.
Jag försökte inte att optimera skisser för hastighet, minnesstorlek eller allmänna skönhet.
Miljö som används: Arduino 1.0
Följande bibliotek ingick:
SoftwareSerial.h, används för det seriella gränssnittet till GPSmodule, bredvid den standard seriella gränssnittet till datorn.nmea.h för att samla in GPS-info.
Detta bibliotek erbjuder fler möjligheter än han enklare TinyGPS bibliotek. Särskilt "course_to" metoden visat sig nödvändigt att clalculate rubriken till en viss latitud och longitud.
Biblioteket fungerade inte som sådan. En patch behövs för att använda WProgram.h. Efter Bill Ho's patch introducerades i nmea.h och nmea.ccp, sammanställt skissa OK. Ref: http://arduino.cc/forum/index.php?action=profile;u=11017;sa=showPosts
EEPROM.h för informationen om waypoint i Arduino EEprom.
Den information som waypoint, bestående av longitud en latitud, kommer i float-datatyper. Bryta upp en float för att lagra och rekonstruera det efter hämtning från eeprom visade sig vara en komplicerad fråga. Specialist på Arduino SW, C och C++, måste att kallas att hjälpa oss.