mjo jag har koden kvar men... hm, vet inte riktigt hur jag kom fram till uträkningen("trial and error" skulle jag tro :p).
Koden ser iaf ut så här;
Kod: Markera alltfloat timeUpdate = (millis() - updatOdo);
timeUpdate = timeUpdate / 1000;
if (timeUpdate < 0.00)
{
timeUpdate = 0.55; //?????
}
avSpeed = totSpeed / nrAvSpd;
distance = (((avSpeed / 60.0) / 60.0) * timeUpdate) * 1000;
delay(1);
odoMeter = (unsigned long) odoMeter + (unsigned long)distance; //mätarställning
delay(1);
distanceNow = (unsigned long) distanceNow + (unsigned long)distance; //tripp
updatOdo = millis();
.
Den körs i samma loop som hastighetsberäkningen, och följer samma uppdateringsfrekvens som hastigheten. Den räknar hur många meter bilen (bör) ha flyttat sig sedan föregående uppdatering, baserad på snitthastigheten.
Och när jag printar distansen på displayen så dividerar jag den med 1000 för att visa km istället för meter. Trippen visar jag med 2 decimaler, mätarställningen visar jag utan decimaler.