hi, ich habe eine Frage und zwar möchte ich eine gemessene Spannung auf
dem LCD ausgeben.
Habe folgenden Code geschrieben:
///////////////////////////////////////////////////////////////////////
ADC_Value = ADCL; //Die beiden 8Bit Variablen werden in
die 16 Bit Variable geschrieben
ADC_Value +=(ADCH<<8); //ADC_Value geschrieben
Spannung=Steigung*(float)ADC_Value;
//auch ohne casten funktionierts nicht
sprintf(str,"%f",Spannung);
//sprintf(str+4, "%c", " V");
lcd_clear();
lcd_setcursor(0,1);
lcd_string(str);
for(i=0;i<5;i++)
_delay_ms(50);
///////////////////////////////////////////////////////////////////////
da bei 0V auch ungefähr 0 in ADV_Value stehen, kann ich das mit einer
simplen Geradengleichung aufbauen.
das Probelm ist dann nur die Kommazahl Spannung auf dem LCD auszugeben.
habs im MS Visual Studio probiert, da klappts hervorragend, aber hier
steht an 1. Stelle in str ein "?" und danach nur kaudawelsch.
weis einer wieso??
viele dank
man siehe in die dokumentation der stdio.h: http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html#gaa3b98c0d17b35642c0f3e4649092b9f1
danke für deine Antwort, aber hilft mir jetz ehrlich gesagt auch nix weiter.
dann lies den Abshnitt nochmal besonders den Absatz über Limitations, bzw Limitations selbst.
Gast
#2077781
AVR und GCC ??? dabei müsstest du noch die libraries für float richtg nutzen, sprich die richtigen für sprintf, admit ein float wert raus kommt und nicht ein ? gruss soundso
Gast
#2077784
das zauberwort heist: libprintf_flt.a
Gast
#2077847
Warum berechnest du denn nicht das Ganze in Zentel-/Hundertstel-Volt? Da spart man sich die Float-Berechnung. Man braucht dann nur den Komma-Punkt an die richtige Stelle setzen und hat das Ergebnis in Volt. Wenn man mehr Stellen benötigt, kann man auch in Millivolt rechnen. Man muss nur aufpassen, dass es keinen Überlauf gibt.
Besser als Gleitkomma ist oft Festkommaarithmetik
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.