Omvänd Geocache (6 / 8 steg)
Steg 6: Programvara: Waypoint-menyn
Som en sjöman vet jag hur svårt det är att skriva in ett antal waypoints korrekt.Därför letade jag efter ett sätt att kopiera klistra in waypoints direkt från Google maps. Waypoints är uppbyggda som latitud (N eller S) och logitude (E eller W). En typisk ingång ser ut: 50.846669,4.352514 (= Bryssel, Grote Markt). Sydlig latitud och västlig longitud är negativa värden
Hur man kopierar från Google kartor:
- Öppna Google maps, skriv i den önskade miljön
- Navigera på kartan till den exakta punkten
- Högerklicka på den exakta platsen, välj sedan "vad är här?"
- Kopiera (CTRL-C) latitud, longitud information från Google kartor inmatningsrutan.
- Klistra in koordinater i Arduino seriell ingång rutan
Jag beslöt att göra en separat waypoint skiss. Det fungerar via Arduino seriell bildskärmen och drivs menyn.
Minne karta:
Varje waypoint upptar 10 byte:
- 2 x 4-byte float (latitud och longitud)
- en 2-byte heltal (vidarebefordra länken till nästa waypoint adrress).
Detaljer:
Byte 0 till 7 innehåller rubriken för listan waypoint.
Byte 8 och 9 lagra ett heltal, som pekar på den första waypoint adressen.
Den första latituden är i byte 10-13, första longituden i 14-17.
Byte 18 och 19 spara länken till den nästa waipoint igen.
Maximalt är 99 waypoints.
Allmänna: breddgrader börja på 10k, longituder vid 10 k + 4, länkar till nästa latitude på 10 k + 8.
"-1" i länken anger den sista waypointen i listan.
Vid start, skissen visar följande meny (är inte så trevligt här, men är väl anpassade i monitor)
******************************************
* *
* Välj en åtgärd: *
* *
* Visa alla waypoints: s *
* Ange en ny waypoint lista: n *
* ÄNDRA en waypoint: v *
* Ta bort en vägpunkt: d *
* Lägga till en vägpunkt: en *
* *
* HELP: h *
* *
******************************************
Åtgärder:
- NYHET: alla tidigare länkar skrivs över med "-2". Sedan uppmanas användaren att kopiera ett antal waypoints i seriell övervaka inmatningsrutan. Är stängd genom att mata in "#", som infogar "-1" i fältet länk.
- SHOW: Vägpunktslistan visas. På monitorn föregås varje waypoint av flera att möjliggöra ytterligare redigering. Observera att dessa siffror inte nödvändigtvis i följd efter några lägga till och ta bort åtgärder.
- Radera: en waypoint tas från listan.
- ADD: en extra waypoint kan infogas efter vald waypoint flera.
- FÖRÄNDRING: åtgärden kan ändra waypoint innehållet på ett valde nummer.
- HJÄLP: visar vägen till kopiera waypoints från Google Maps.
Programmering Detaljer:
Skissen kontrollerar fel ingångar på menyn åtgärder och waypoint nummer.
Det finns ingen kontroll på waypoint innehållet, som antas vara kopierat från Google.
Det finns rutiner för läsning och skrivning flöten och heltal till och från Eeprom.
Nedan visas rutinerna för hantering av float värden (4 byte) i EEprom (vi fick lite hjälp från en expert här).
Liknande rutiner användes för heltal (2 byte).
{
flyta f;
byte byte [4].
};
void EepromWriteFloat (int adres, flytvärdet) {
FloatBinary temp;
Temp.f = värde;
för (int jag = 0; jag < 4; i ++) {
EEPROM.write (adres + i, temp.bytes[i]);
}
}
EepromReadFloat(int adres) {float
FloatBinary temp;
flyta ut;
för (int n = 0; n < 4; n ++) {
Temp.bytes[n] = EEPROM.read(adres+n);
}
ut = temp.f;
återvända ut; }