Hallo!
Ich möchte aus einer Distanz und der Zeitdifferenz, die benötigt wird um
die Distanz zurückzulegen die Geschwindigkeit in km/h berechen. Ich
schaffs nicht ohne float-Variablen einen Richtigen Wert zu bekommen.
Der Angezeigte Wert entspricht eher dem in m/s statt km/h, allerdings
auch nicht exakt.
1 | uint8_t vmax_sec=0; // Anfang der Distanz Vm_Dist
|
2 | uint16_t vmax_ms=0;
|
3 | uint8_t GesZ_sec=0; // Ende der Distanz Vm_Dist
|
4 | uint16_t GesZ_ms=0;
|
5 |
|
6 | uint8_t Vm_Dist=5; // Distanz in Meter
|
7 | uint16_t vmax=100;
|
8 | char c_vmax[6];
|
9 |
|
10 | // ... Zeitmessung...
|
11 |
|
12 | // Geschwindigkeitsberechnung:
|
13 | vmax= (Vm_Dist*18000) / ((GesZ_sec*1000 + GesZ_ms - vmax_sec*1000 - vmax_ms)*5);
|
14 |
|
15 | itoa(vmax,c_vmax,10);
|
16 | lcd_gotoxy(0,3);
|
17 | lcd_puts("Vmax: "); lcd_puts(c_vmax); lcd_puts(" km/h");
|
m/s = mm/ms
m/s *3,8 = m/s *18/5 = km/h, oder?
Ich habe einen Überlauf beim Rechnen befürchtet und für vmax auch schon
uint32_t probiert.
Wie gehts richtig?