Decimale waardes op TFT
2 berichten
• Pagina 1 van 1
Decimale waardes op TFT
Nu het probleem met het Weergeven van de sensor waardes op het TFT scherm opgelost zijn kom ik een ander probleem tegen.
In de sketch zit een waarde 'kalibratie factor' van de weegschaal sensors. Deze waarde is een float decimaal getal met 2 cijfers na de komma. Om de float waarde weer te geven gebruik ik de 'ITOA' functie. Enkel hier komen enkel de cijfers voor de komma er op. Hoe doe ik nu de cijfers na de komma?
Ben
In de sketch zit een waarde 'kalibratie factor' van de weegschaal sensors. Deze waarde is een float decimaal getal met 2 cijfers na de komma. Om de float waarde weer te geven gebruik ik de 'ITOA' functie. Enkel hier komen enkel de cijfers voor de komma er op. Hoe doe ik nu de cijfers na de komma?
Ben
Advertisement
Re: Decimale waardes op TFT
Weer veel te snel geweest. Heb het ondertussen zelf gevonden denk ik.
In de originele code waarmee ik begonnen ben stond het volgende voor een batterijspanning weer te geven:
Wanneer ik dan het volgende schreef:
kreeg ik de originele waarde '219' op de tft maar dan '2,19'.
Nu heb ik ff geprobeerd of het volgende ging en getest. Heb de 'calibration_factor_LA' vrmenigvuldigd met 100 en daarna weer decimate gedaan.
vlug ff getest en dat werkte dus ik denk dat het opgelost is.
In de originele code waarmee ik begonnen ben stond het volgende voor een batterijspanning weer te geven:
- Code: Alles selecteren
void decimate(char test[],int dec) { // creates decimal function decimate(string containing integer, number of decimal places)
int i=0;
int length=strlen(test);
char msg[10]="";
strcpy(msg,test);
if (length <= dec) {
for(i=dec;i>(dec-length);i--) msg[i] = msg[i-(dec-length+1)];
for(i=0;i<(dec+1-length);i++) msg[i]='0';
length = strlen(msg);
}
for (i=length;i>(length-dec);i--) msg[i]=msg[i-1];
msg[length-dec]='.';
strcpy(test,msg);
}
Wanneer ik dan het volgende schreef:
- Code: Alles selecteren
itoa(calibration_factor_LA,LaCal, 10);
decimate(LaCal, 2);
kreeg ik de originele waarde '219' op de tft maar dan '2,19'.
Nu heb ik ff geprobeerd of het volgende ging en getest. Heb de 'calibration_factor_LA' vrmenigvuldigd met 100 en daarna weer decimate gedaan.
- Code: Alles selecteren
itoa((calibration_factor_LA*100),LaCal, 10);
decimate(LaCal, 2);
vlug ff getest en dat werkte dus ik denk dat het opgelost is.
2 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: alajowapopimi en 80 gasten