Float Konvertierung



  • Hallo zusammen,
    ich würde gerne mit meinem Mikrocontroller eine Schaltung aufbauen, mit der ich die Temperatur messen kann. Einlesen der Temperatur mit Temperaturfühler und eine ADC Konvertierung sind sowie die Displayausgabe absolut kein Problem.
    Bisher bekomme ich aber nur ganzzahlige Werte raus, da ich keine Kommazahlen auf dem Displ ausgeben kann...
    wollte daher eine Funktion (zunächst mal mit Visual Studio in C oder C++) schreiben um zu sehen in welche Richtung das gehen wird...

    ⚠ Achtung ich kann keine vorhandenen Funktionen aus irgendwelchen Bibliotheken einbinden, da diese nicht für Mikrocontroller vorhanden sind, oder zu viel Speicherplatz benötigen würden. Demnach geht natürlich sprintf oder ähnliches nicht !! Es MUSS also unbedingt eine selbstgebastelte Funktion her !! ⚠

    Also folgendes soll passieren:
    Eine float Variable, nennen wir sie mal Temperatur = 23,4; soll in zwei andere Variablen gespeichert werden. Und zwar in VorKomma und NachKomma.

    Habe mir das bisher so gedacht, leider (natürlich) falsch, da c/c++ schon lange her ist...

    double Temperatur;
    	char VorKomma, NachKomma;
    
    	Temperatur	=	23.4;
    	VorKomma	=	0;
    	NachKomma	=	0;
    
    	cout << "Als Float: " << Temperatur << endl;
    
    	VorKomma = Temperatur;
    
    	cout << "Als Char:	" << VorKomma << endl;
    

    Dankbar für jegliche Ratschläge der Profis 😉



  • benutze fixpoint, das reicht fuer deine ansprueche und ist um einiges einfacher fuer dich zu handlen....nur fuer den fall dass du nen tip willst 😉



  • Hi
    und danke für deine antwort rapso,
    habe mal die forensuche bemüht, aber nichts entsprechendes bzw. genaueres zu fixpoint gefunden...
    könntest du mir etwas mehr dazu verraten ? 🙂

    danke



  • hi,
    versuch mal das:

    double f = 12345.6789;
    cout << "fz: " << f \
    << " vk: " << (unsigned long) f \
    << " nk: " << (unsigned long)(10000*(fabs(f)- fabs((unsigned long)f)));

    // output: fz: 12345.6789 vk: 12345 nk: 6789

    viele Grüße
    von tesuji

    Frage: wie benutzt man code tags?



  • Studiologe schrieb:

    Hi
    und danke für deine antwort rapso,
    habe mal die forensuche bemüht, aber nichts entsprechendes bzw. genaueres zu fixpoint gefunden...
    könntest du mir etwas mehr dazu verraten ? 🙂

    danke

    http://www.google.de/search?hl=en&client=firefox-a&rls=org.mozilla:en-US:official&hs=MhN&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=fixed+point+math&spell=1

    jeder link dort ist ziemlich gut, dafuer gibt es schlicht zuviel als das ich dir hier eine sache posten wuerde, deswegen der google link

    codetags: klick einfach auf "code" unter dem fenster zum tippen dann werden sie automatisch eingefuegt.



  • Hallo,
    also wenn du eine Zahl in Vor- und Nachkommazahlen aufteilen willst, dann könntest du die modf Funktion benutzen.

    #include <math.h>
    #include <iostream>
    using namespace std;
    
    main()
    {
    
       double z = 27.123;
       double vorkomma, nachkomma;
    
       nachkomma = modf( z, &vorkomma );    
    
       cout << "Vorkomma: " << vorkomma << endl;
       cout << "Nachkomma: " << nachkomma << endl;
    
    }
    

    Liefert dein ADC nur ganze Zahlen mit Vor- und Nachkommateil ?
    Wenn ja, dann ist modf vielleicht doch nicht das richtige.
    Gruß,
    p.


Anmelden zum Antworten