www.mikrocontroller.net

Forum: Compiler & IDEs float auf LCD ausgeben


Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine Problem und zwar nutze ich ein 4x20 LCD an einem Mega32. 
Nun wollte ich einfach mal den ADC testen also einfach nen Poti an Aref 
und ADC0 so wenn ich das einfach so Ausgebe dann funktioniert das auch. 
Mit einer umrechnung hab ich dann den Wert in mV da stehn also von 0mv 
bis 2560mV.

So nun wollt ich es aber mal ausprobieren das auf dem Dislay bei max 
ausschlag 2,56V stehn oder 0,50V. wie ist das zu realisieren ?


Denn mein befehl itoa den ich hier aus dem forum kopiert hab ist nur 
fuer Maximal short int zahlen und das geht ja nciht weil ich ein Komma 
haben möchte.

gibts da nen trick ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lui wrote:
> Ich habe eine Problem und zwar nutze ich ein 4x20 LCD an einem Mega32.
> Nun wollte ich einfach mal den ADC testen also einfach nen Poti an Aref
> und ADC0 so wenn ich das einfach so Ausgebe dann funktioniert das auch.
> Mit einer umrechnung hab ich dann den Wert in mV da stehn also von 0mv
> bis 2560mV.
>
> So nun wollt ich es aber mal ausprobieren das auf dem Dislay bei max
> ausschlag 2,56V stehn oder 0,50V. wie ist das zu realisieren ?
>


2560 / 100  = 2    das ist dein Vorkommaanteil

    danach gibst du einen '.' aus

2560 % 100 =  560  das ist dein Nachkommaanteil

Wenn du alles nacheinander ausgibst, steht am Display  2.560

Aufpassen, der Nachkommaanteil muss immer 3 Zeichen (in deinem
Beispiel) umfassen.  2080 / 100 = 2,  2080 % 100 = 80 aber
eine Ausgabe von 2.80 wäre falsch. Es muss schon 2.080 heissen!

Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke du meinst am anfang

2560 / 1000  = 2    das ist dein Vorkommaanteil


aber das mit der nachkomma zahl hab ich noch nciht verstanden wie wird 
denn da die vorkomma zahl "weg" gemacht ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lui wrote:
> Ich denke du meinst am anfang
>
> 2560 / 1000  = 2    das ist dein Vorkommaanteil

Ja. Natürlich.
Noch zuwenig Kaffee :-)

> aber das mit der nachkomma zahl hab ich noch nciht verstanden wie wird
> denn da die vorkomma zahl "weg" gemacht ?

%  ist der Modulo Operator. = Rest bei einer Division.
So wie in: Eine Mutter hat 2 Kinder und 14 Äpfel. Wenn jedes
Kind gleich viele Äpfel bekommt, wieviele Äpfel bleiben der
Mutter noch übrig.
    14 % 2 = 4

Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibts da nen Trick das der nachkomma wert immer 3 Zeichen lag sein soll 
? also das die folgenden nullen ja auch angezeigt werden soll ?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> So wie in: Eine Mutter hat 2 Kinder und 14 Äpfel. Wenn jedes
> Kind gleich viele Äpfel bekommt, wieviele Äpfel bleiben der
> Mutter noch übrig.
>     14 % 2 = 4
Hmmm, ich würde sagen, 14 % 2 = 0...

Meintest Du vielleicht ne Mutter mit 5 Kindern? Dann wäre es 14 % 5 = 4, 
dann stimmt's.

Schließlich kann der Rest nie größer sein als der Divisor.

Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhm das könnte ich dann ja so nciht verwenden weil bei meinem Poti ja 
immer mal ne 2,0xx oder noch schlimmer ne 2,00x dabei sein kann.


Ich hab auch öfter den befehl gelesen

printf("%05.2f" , 4.5 );

könnte ich den nicht auch einfach nutzen ? und bei 4,5 müsste dann meine 
zahl stehn ?

oder is der printf nicht fuer ein LCD gedacht ? gibts denn dafür einen 
ähnlichen bfehl fuer ein LCD

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes M. wrote:
> Karl heinz Buchegger wrote:
>> So wie in: Eine Mutter hat 2 Kinder und 14 Äpfel. Wenn jedes
>> Kind gleich viele Äpfel bekommt, wieviele Äpfel bleiben der
>> Mutter noch übrig.
>>     14 % 2 = 4
> Hmmm, ich würde sagen, 14 % 2 = 0...

Oh Mann.
Heute fehlt noch viel Kaffee.

> Meintest Du vielleicht ne Mutter mit 5 Kindern?

Jup.

Aber irgendwie hab ich dann die 5 Kinder mit den jeweils 2
Äpfel durcheinandergewürfelt :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lui wrote:

> Ich hab auch öfter den befehl gelesen
>
> printf("%05.2f" , 4.5 );
>
> könnte ich den nicht auch einfach nutzen ? und bei 4,5 müsste dann meine
> zahl stehn ?

Könntest du natürlich nutzen. Nur ziehst du dir dann für diese
eine Floating Point Berechnung die komplette Floating Point
Library ins Programm rein (~2KB nur für diese eine Ausgabe)

> oder is der printf nicht fuer ein LCD gedacht ? gibts denn dafür einen
> ähnlichen bfehl fuer ein LCD

printf weiß überhaupt nicht warauf es ausgibt. printf formatiert
einen String und schickt ihn dann in die Ausgabekanäle, was
auch immer am anderen Ende hängt.
Aber es gibt eine Alternative: sprintf
sprintf formatiert nur den String und was du dann mit dem String
weiter machst, ist dein Bier
   char Out[80];
   int i = 2860;

   sprintf( Out, "Spannung = %d.%03d V", i / 1000, i % 1000 );

   lcd_string( Out );  // oder wie auch immer die Stringausgabe
                       // auf deinem LCD heißt

Und demnächst wird ein Besuch in der nächsten Buchhandlung
fällig :-) Ohne Literatur wirst du auf lange Sicht Schiffbruch
erleiden.

Autor: lui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jau genial der Befehl funktioniert. Jo ich glaub auch das ich langsam so 
ein buch ma lesen sollte bis jetzt hab ich mich einfach durch tutorial 
gewuselt und mal alles ausprobiert was mich so interessiert hat. Und hab 
einfach ma an den werten rum gespielt und getestet :D

bis jetzt hats geklappt


ich sach auch ma warum ich dat mache vll interessierts euch ja :o)
Also wenn das alles mal Feritg ist soll das eine Wetterstation werden 
die über das DCF77 signal die uhrzeit Datum und wochtag anzeigt 
zusätzlich soll die Temperatur Innen und evtl auch Aussen temperatur 
angezeigt werden. das ganze in einem Gehäuse mit einem Bleigel Akku 
versorgt mit anschluss an die Steckdose um den akku zu laden.

eventuell später noch einen PC-Speaker als Wecker eingebaut :P aber das 
erst später. Ich denk als nächstes setz ich mich ans empfangen/auswerten 
des DCF Signals

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.