Stap 5: Software intro
Aan het einde van de Arduino jamsessie was de software voor de radiorichtingzoeker een work in progress. Basisonderdelen werkte en werden getest: de Led-matrix, de 'Mexicaanse Golf' self test, de seriële verbinding met een GPS-module, winning van lengte- en breedtegraad, opslaan en ophalen van float gegevenstypen in EEprom. Ook is werk gestart voor het downloaden van de Waypoints van Google maps.Sindsdien ik veel werk in het ontwikkelen van twee aparte schetsen voor het omgekeerde geocache-spel:
-een schets menugestuurd waypoint editor: Geocache_menu
-de game schets: Geocache
Zie de volgende stappen.
Het combineren van beide schetsen in een enkele sketch mogelijk zou zijn, maar ik hield hen gescheiden om volgende redenen:
- Beide tekeningen zijn al nogal groot (12 en 15 Koctetten)
- onnodige complexiteit zou worden toegevoegd
- de schetsen zijn hoe dan ook uitgevoerd door verschillende mensen.
Als beide programma's bijna 400 lijnen hebben, ik opgesplitst hen in kleine, beheersbare delen.
VB. heeft de Geocache-schets een deel van het spel logica, een deel van de LED-behandeling, een waypoint geheugen handler, een GPS module handler.
Schrijven en debuggen van de schetsen werd methodisch gedaan:
- Een kleine schets opgesteld voor elk sub-item
- Een heleboel seriële toezicht berichten werden opgenomen voor het volgen van de programmeerstroom, controle van input- en output variabelen enz.
- Alle mogelijke invoerwaarden worden werden gepresenteerd op de schets en de reactie was beoordeeld
- De sketch werd gezuiverd tot het resultaat was tot verwachting
Vervolgens geïntegreerd ik de afzonderlijke delen één voor één in de overzichtsschema, testen en debuggen als ik langs ging.
Ten slotte was het eindproduct "veld getest".
Dit nog steeds tekortkomingen, bijvoorbeeld reactie op richting veranderingen was te traag (ik moest het verhogen van de vernieuwingsfrequentie van het GPS--terug naar de tekentafel).
Ik verwijderd van de meeste van de foutopsporing spullen, en voegde opmerkingen bij gemak van onderhoud.
Ik heb niet geprobeerd te optimaliseren de schetsen voor snelheid, grootte van het systeemgeheugen of algemene schoonheid.
Milieu gebruikt: Arduino 1.0
Volgende bibliotheken zijn opgenomen:
SoftwareSerial.h, gebruikt voor de seriële interface naar de GPSmodule, naast de standaard seriële interface aan op de PC.nmea.h voor het verzamelen van GPS info.
Deze bibliotheek biedt meer mogelijkheden dan hij eenvoudiger TinyGPS bibliotheek. Met name de methode van de "course_to" noodzakelijk gebleken te clalculate de titel van een bepaalde lengte- en breedtegraad.
De bibliotheek werkte niet als zodanig. Een patch nodig is voor het gebruik van WProgram.h. Nadat Bill Ho's patch werd geïntroduceerd in nmea.h en nmea.ccp, de schets gecompileerd OK. Ref: http://arduino.cc/forum/index.php?action=profile;u=11017;sa=showPosts
EEPROM.h voor het opslaan van de informatie van het waypoint in de Arduino EEprom.
Het waypoint-informatie, bestaande uit lengte van een breedtegraad, komt in float-gegevenstypen. Sloop een float voor het opslaan en reconstructie van het na het ophalen van de eeprom bleek te zijn een gecompliceerde aangelegenheid. Een specialist in Arduino SW, C en C++, moest worden genoemd om ons te helpen.