Hallo,

die Abweichung von den besagten 4m hat sich geklaert. Da hatte ich nen simplen Zahlendreher in der Rechnung (irgendwann sieht man vor lauter Zahlen nichts mehr... :) ). Nun passen die Ergebnisse vom Atmel exakt mit denen von Excel ueberein. Ich habe mittlerweile auch einen ATMega128 genommen. Beim 16er war der Flash schon stellenweise zu 30% voll. Und das Programm ist ja noch laengst nicht fertig. Als naechstes die Winkelberechnung, dann grafische Aufbereitung der Daten, Auslesen einer GPS-Mouse und Abfrage einen Drehimpulsgebers (zur Eingabe von einer Koordinate). Ein Drehimpulsgeber spart Platz und sieht huebscher aus, als so ein klobiges Tastenfeld. :)

In dem nachfolgenden Beispiel wird zunaechst nur die Distanz zweier fest vorgegebenen Koordinaten berechnet. Sicherlich laesst sich hier und da noch einiges optimieren. Das ist mal so auf die Schnelle entstanden. Hauptsache es funktioniert erstmal.


Dim A1 As Double , A2 As Double
Dim A3 As Double , A4 As Double
Dim B1 As Double , B2 As Double
Dim B3 As Double , B4 As Double
Dim B5 As Double , B6 As Double
Dim B7 As Double , B8 As Double
Dim B9 As Double , B10 As Double
Dim Distanz As Double , B11 As Double
Dim C1 As Double , C2 As Double
Dim C3 As Double , C4 As Double
Dim C5 As Double , Pi As Double
Dim Z As String * 20 , Y As Single
Dim X As String * 10
Pi = 3.141592654

Initlcd
Cursor Off
Cls

'Koordinate 1
A1 = 50,16666667
A2 = 7,2

'Koordinate 2
A3 = 50,16666667
A4 = 7,226016667

'Grundformel zur Distanzberechung zwischen zwei Koordinaten:
'6371,229*ARCCOS(SIN(A1*PI/180)*SIN(A3*PI/180)+COS(A1*PI/180)*COS(A3*PI/180)’*COS((A2-A7)*PI/180))

'Zerlegung der Formel
'SIN(A1*PI/180)

B1 = A1 * Pi
B1 = B1 / 180
C1 = Sin(b1)

'SIN(A3*PI/180)

B2 = A3 * Pi
B2 = B2 / 180
C2 = Sin(b2)

'COS(A1*PI/180)

B3 = A1 * Pi
B3 = B3 / 180
C3 = Cos(b3)

'COS(A3*PI/180)

B4 = A3 * Pi
B4 = B4 / 180
C4 = Cos(b4)

'COS((A2-A4)*PI/180)

B5 = A2 - A4
B5 = B5 * Pi
B5 = B5 / 180
C5 = Cos(b5)

'B9= (C1 * C2) + (C3 * C4 * C5)

B6 = C1 * C2
B7 = C3 * C4
B8 = B7 * C5
B9 = B6 + B8

'6371,229*ARCCOS(B9)

B10 = Acos(b9)
Distanz = 6371.229 * B10

Z = Str(distanz)
Y = Val(z)
X = Fusing(y , "#.####")

Locate 1 , 1
Lcd "Distanz: " ; X ; " Km"