- LiFePO4 Speicher Test         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 33

Thema: LCD an STK500

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    Anzeige

    LiFePo4 Akku selber bauen - Video
    @Rubi
    Vielen Dank, werde es morgen früh ausprobieren.

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    Guten Morgen an alle!

    Habe jetzt die stdio.h included. Bekomme dann nur die Meldung, dass ein double format vorliegt, aber ein float verwendet wird. Das ist ja weiter nicht schlimm. Ansonsten wird der Befehl sprintf... vom Compiler erkannt.

    #include <stdlib.h>
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include "lcd.h"
    #include <stdio.h>

    float f_z=15.5;
    char buffer[20];

    void lcd_display(void)
    {lcd_init(LCD_DISP_ON);
    lcd_clrscr();
    lcd_gotoxy(0,0);
    sprintf(buffer,"=%f",f_z);
    lcd_puts(buffer);
    }
    int main...

    Ich bekomme immer noch nur "=?" angezeigt. Kann es sein, das die Funktion lcd_puts(buffer) keine Float-Werte weitergeben kann? Ich habe mal die Lib mit angefügt, wo dieser Befehl declariert wurde. Wenn ich sprintf(buffer,"=%d",f_z); verwende bekomme ich "=-13107". Bei int a=5 und sprintf(buffer,"=%d",a) bekomme ich "=5" angezeigt.

    Der Befehl ftio(f_z,buffer,10) wird gar nicht erkannt. Fehlermeldung "implicit declaration". Habe ich irgendeine Header-Datei vergessen?
    Angehängte Dateien Angehängte Dateien

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.12.2004
    Beiträge
    485
    also dann gibt es folgende möglichkeiten, du kannst vorher auf float casten,
    sollte aber nicht notwendig sein und vielleicht solltest du vorher explicit die vor und nachkommastellen angeben:
    sprintf(buffer,"%-2.2f",(float)f_z);
    Das bedeutet 2 Vorkommastellen und 2 Nachkommastellen.

    Wenn Du es Heute nicht hinbekommst, schaue ich es mir mit meinem STK an. Wäre ja gelacht wennn wir das nicht hinbekommen.

    LG
    Rubi

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    ?- bekomme ich dann immernoch angezeigt. Was meinst du mit "auf float casten"?
    Wieso zeigt er mir eigentlich ein Fragezeichen an? Müste das Prog eigentlich gar nichts anzeigen, wenn die Werte auserhalb eines Bereiches liegen?
    Man, so viele ?-Zeichen habe ich noch nie in einem Test verwendet.

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.12.2004
    Beiträge
    485
    Zitat Zitat von Rosenthal
    Guten Morgen an alle!


    Der Befehl ftio(f_z,buffer,10) wird gar nicht erkannt. Fehlermeldung "implicit declaration". Habe ich irgendeine Header-Datei vergessen?
    Sorry nicht
    ftio(f_z,buffer,10)
    sondern:
    ftoa(f_z,buffer,10);

    Binmir jetzt aber nicht sicher ob das in ANSI C unterstützt wird.
    Im Internet habe ich gerade gelesen das anstelle von ftoa gcvt verwendet wird.
    d.h.:
    gcvt(f_z,4,buffer);

    Die 4 bedeutet die Anzahl der Ziffernd die Übersetzt werden sollen.
    Ohne es selbst zu compilieren ist das ein wenig wie im trüben zu fischen.

    Das sprintf nicht bei Dir funktioniert ist seltsam.
    Das mit dem Fragezeichen auch.
    Hast Du anstelle des , schon einen . als commaseparator probiert?

    Casten bedeutet einen Typ in einen anderen zu konvertieren.
    Das wird häufig dann verwendet wenn du eine Funktion aufrufst die einen anderen Datentyp verlangt als den mit dem Du zur Zeit arbeitest.
    Meißtens geht es zwar auch ohne, aber so wird man die Warnungen los,...
    Ein sauberer Code sollte keine Warnungen produzieren.

    Nein mit der Library sollte es nichts zu tun haben.
    Für die Library wird deine Zahl ja in einen String umgewandelt.

    LG
    Rubi

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.12.2004
    Beiträge
    485
    Probier mal

    float f_z = 15,5;

    LG
    Rubi

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    Hatte im Code ftoa(f_z,buffer,10) stehen gehabt, war nur oben ein Schreibfehler.
    Er bricht aber die Compilierung mit der Meldung "implicit declaration of funktion 'ftoa'" ab. Obwohl bei itoa... keine Meldung erscheint.

    Die selbe Fehlermeldung erscheint mit gcvt(f_z,4,buffer).

    Bei 15,5 anstatt 15.5 bricht der Compiler ebenfalls ab."parse error before numeric constant"

    Falls es noch weitere Vorschläge gibt, bitte schreiben.

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.12.2004
    Beiträge
    485
    Bitte probier noch dieses:

    ftoa (f_z, buffer, 2, 2);

    LG
    Rubi

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    Wie immer "test_lcd.c c:29: warning: implicit declaration of funktion 'ftoa'
    Dann bricht der Compiler ab.

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.12.2004
    Beiträge
    485
    Hm

    Ich werde es zu hause selbst einmal probieren.

    LG
    Rubi

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus