GPS Koordinate am LCD

Gast #2717910
Lesenswert?

Hallo zusammen,
ich benutze folgende Funktionen:
1
uint16_t GET_X_POS(double y_aktuell, double y_ziels, int zoom) 
2
{
3
       uint16_t ret_wert=190;
4
       uint32_t zoomen=10000;
5
       double differenz=0.0;
6
     if (zoom == 0)
7
     {
8
       zoomen = 10000;
9
     }
10
     else if (zoom == 1)
11
     {
12
       zoomen = 100000;
13
     }
14
     else if (zoom == 2)
15
     {
16
       zoomen = 1000000;
17
     }
18
     else
19
     {
20
       zoomen = 10000;
21
     }
22
       
23
       differenz=(y_aktuell-y_ziels)*zoomen; 
24
       if(differenz>183) differenz=183.0;
25
       if(differenz<-183) differenz=-183.0;
26
 
27
       ret_wert=190+(uint16_t)(differenz);
28
 
29
       return(ret_wert);
30
}
31
uint16_t GET_Y_POS(double x_aktuell, double x_ziels, int zoom) 
32
{
33
       uint16_t ret_werty=136;
34
       uint32_t zoomen=10000;
35
       double differenzy=0.0;
36
     if (zoom == 0)
37
     {
38
       zoomen = 10000;
39
     }
40
     else if (zoom == 1)
41
     {
42
       zoomen = 100000;
43
     }
44
     else if (zoom == 2)
45
     {
46
       zoomen = 1000000;
47
     }
48
     else
49
     {
50
       zoomen = 10000;
51
     }   
52
       differenzy=(x_aktuell-x_ziels)*zoomen; 
53
       if(differenzy>133) differenzy=133.0;
54
       if(differenzy<-114) differenzy=-114.0;
55
 
56
       ret_werty=136+(uint16_t)(differenzy);
57
 
58
       return(ret_werty);
59
}

wenn sich der wert y_aktuell oder x_aktuell um ein punkt ändert springt 
die anzeige von ganz oben nach ganz unten oder von ganz links nach ganz 
rechts und umgekehrt. kommischer weisse nicht immer.

Kann mir jemand sagen warum das so ist?
Oder was benutzt Ihr für funktionen?

Gruss
Milan
Gast #2728105
Lesenswert?

Hallo zusammen,
also mein LCD ist 380 * 272 pixel gross!

Mein RC Auto ist mit GPS ausgerüsstet. Und wird als ein Dreieck in der 
mitte des LCD-s angezeigt. Der ist immer in der mitte.

Ich speichere 2 koordinaten und will die am LCD anzeigen.

Die zoom funktion mahl vergessen.

1 pixel ist dabei 1.1 m gross.
1
uint16_t GET_X_POS(double y_aktuell, double y_ziels, int zoom) 
2
{
3
       uint16_t ret_wert=190; //mitte display
4
       uint32_t zoomen=10000; // für 1.1 m pro pixel
5
       double differenz=0.0;
6
    
7
       
8
       differenz=(y_aktuell-y_ziels)*zoomen; // berechnung
9
       if(differenz>183) differenz=183.0;  //max für rechts
10
       if(differenz<-183) differenz=-183.0;  // max für links
11
 
12
       ret_wert=190+(uint16_t)(differenz); // berechnung von mitte lcd
13
 
14
       return(ret_wert);
15
}

Wichtig: es wird nich navigiert, sonder nur anzeige!!!!!!!

Wie würdet Ihr das anzeigen???


Danke im Voraus
Milan
Gast #2728117
Lesenswert?

Seltsamerweise heisst die Prozedur GET_X_POS, gerechnet wird aber mit Y.

Zum Problem... was spricht gegen eine Simulation auf dem PC?Da kann man 
wenigstens Singlesteppen und alles ueberpruefen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren