Arduino Mega GPS med LCD och SD loggning (7 / 9 steg)
Steg 7: UK nationella rutmönsterposition och tillryggalagda
1) konvertera position i decimal longitud och latitud till UK ordnance survey meter enheter är detaljerad i en pdf av ordnance survey:
http://www.ordnancesurvey.co.uk/docs/support/guide...
Sidan 40 gör inte ljus läsning, men ger den nödvändiga matematiken.
Min subrutin void ordnance (float phi, float lamda) implementerar beräkningen.
De värden som returneras har en noggrannhet på +-0,1 för easting och +-0,02 för nordlig. Denna brist på precision beror på Arduino flötet aritmetiska begränsad noggrannhet. Arduinoen stöder endast "6-7" betydande decimaler.
.
Ordnance survey täcka numrerar kan extraheras från den viktigaste siffran i longitud och latitud värden. Funktionen sträng NE2NGR(float &east, float &north) utför utvinning och krediteras:
Alex http://www.codeproject.com/Articles/13577/GPS-Der...
.
2) tillryggalagda kan beräknas från skillnaden i två värden för latitud och longitud.
Små skillnader måste uppskattningen vara misstänkt på grund av precision inneboende i en gps-fix. Begränsningen på Arduino flytande punkt decimalen stöd också påverkar totala noggrannheten. Trots detta kumulativa tillryggalagd sträcka uppskattningar är rimliga. Ursprung är helt korrekt eftersom det bara handlar om skillnaden mellan 2 platser.
Ursprunget för avstånd beräkningar kan ställas åter in med knappen lägre.
Vid låga hastigheter prova jag positioner under en tre andra att öka sannolikheten att skillnaden i positionen är större än avståndet av osäkerhet i GPS fix. Vid högre hastigheter minska jag tiden mellan ståndpunkterna som ingick i urvalet. Denna tid styrs av den variabla dlimit.
Subrutin float distance_between (flyta lat1 flyta long1, flyta lat2, flyta long2) returnerar avståndet.
Det ursprungliga arbetet krediteras Maarten Lamers.