Stap 6: Software: het Waypointmenu
Als een zeeman weet ik hoe moeilijk het is om te typen in een aantal waypoints correct.Dus zocht ik naar een manier om te kopiëren plakken waypoints direct van Google maps. Waypoints zijn opgebouwd als latitude (N of S) en logitude (E of W). Lijkt op een typische input: 50.846669,4.352514 (= Brussel, Grote Markt). Zuidelijke breedtegraden en westelijke posities zijn negatieve waarden
Hoe kopieer ik van Google maps:
- Google maps openen, typt u in de gewilde omgeving
- Navigeren op de kaart om het exacte punt
- Rechtsklik op de exacte locatie, kies dan "wat is hier?"
- Kopiëren (CTRL-C) de breedtegraad, lengtegraad info van Google maps invoervak.
- Plak deze coördinaten in de Arduino seriële ingang vak
Heb ik besloten om een aparte waypoint schets maken. Het werkt via de Arduino seriële monitor en menu-gestuurde is.
Kaart van het geheugen:
Elke waypoint beslaat 10 bytes:
- 2 x 4-byte float (lengte- en breedtegraad)
- een integer van 2 bytes (Forward link naar volgende waypoint adrress).
Details:
Byte 0 tot en met 7 bevatten de titel van de lijst van waypoint.
Byte 8 en 9 opslaan een integer, die verwijst naar het eerste waypoint-adres.
De eerste latitude is in byte 10-13, de eerste longitude in 14-17.
Byte 18 en 19 wordt de koppeling naar de volgende waipoint weer opslaan.
Maximale capaciteit is 99 waypoints.
Algemeen: breedtegraden vanaf 10k, posities op 10 k + 4, de links naar de volgende latitude op 10 k + 8.
Een '-1' in de koppeling geeft aan dat het laatste waypoint in de lijst.
Bij het opstarten, de schets toont na menu (hier niet zo leuk, maar is goed uitgelijnd in de monitor)
******************************************
* *
* Kies een actie: *
* *
* Toon alle waypoints: s *
* Voer een nieuw waypoint-lijst: n *
* Het wijzigen van een waypoint: v *
* Het verwijderen van een waypoint: d *
* Het toevoegen van een waypoint: een *
* *
* HELP: h *
* *
******************************************
Acties:
- Nieuw: alle vorige links worden overschreven met-'2'. Vervolgens wordt de gebruiker gevraagd om een aantal kopieën van waypoints in het invoervak seriële monitor. De lijst wordt gesloten door het invoeren van '#', die wordt '-1' ingevoegd in het veld link.
- Toon: de waypoint lijst wordt weergegeven. Op de monitor, wordt elke waypoint voorafgegaan door een getal toe verder te bewerken. Merk op dat deze nummers niet noodzakelijkerwijs opeenvolgende zijn na wat toevoegen en verwijderen van acties.
- VERWIJDEREN: een waypoint wordt onttrokken uit de lijst.
- Bijvoegen: een extra waypoint kan worden ingevoegd na het nummer van een gekozen waypoint.
- VERANDERING: actie kunt wijzigen van de inhoud van de waypoint op een nummer kiezen.
- HELP: geeft de manier om te kopiëren van waypoints van GoogleMaps.
Programmering de details:
De schets wordt gecontroleerd voor verkeerde ingangen van het menu acties en waypoint nummers.
Er is geen schaak op de inhoud van het waypoint, als wordt uitgegaan van Google worden gekopieerd.
Er zijn routines voor lezen en schrijven van drijvers en gehele getallen tot en vanaf Eeprom.
Hieronder staan de routines voor het afhandelen van float waarden (4 bytes) in EEprom (we kregen wat hulp van een expert hier).
Soortgelijke routines werden gebruikt voor gehele getallen (2 bytes).
{
vlotter f;
byte bytes [4];
};
VOID EepromWriteFloat (int adres, drijvende-kommawaarde) {}
FloatBinary temp;
Temp.f = waarde;
for (int i = 0; ik < 4; i ++) {}
EEPROM.write (adres + i, temp.bytes[i]);
}
}
float EepromReadFloat(int adres) {}
FloatBinary temp;
zweven
voor (int n = 0; n < 4; n ++) {}
Temp.bytes[n] = EEPROM.read(adres+n);
}
uit = temp.f;
terug uit; }