- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 7 von 7

Thema: Variable auf LCD ausgeben

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.04.2007
    Beiträge
    114

    Variable auf LCD ausgeben

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen,
    habe ein kleines problem mit der ausgabe auf meinem LCD Display.
    Benutzte die Libary von Peter Fleury, läuft alles auch soweit ganz gut, nur weiß ich nicht wie ich mit lcd_puts int variablen von meinen Temperatur Senosr ausgeben kann...

    Hatte es mit
    Code:
    lcd_putc((int)temperatur);
    probiert ist aber anscheinent falsch.

    Würde mich freuen wenn mir einer auf die sprünge helfen könnte.

    LG Hannes

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    04.06.2005
    Beiträge
    50
    Hallo,

    mit der Funktion lcd_putc() kannst du nur ein char ausgeben. Ein integerwert besteht allerdings aus 4 Bytes, also 4 chars. Ich benutze auch die Libary von Peter Fleury und hab das so gelöst:

    void lcd_putsint(int zahl)
    {
    char puffer[5];
    itoa(zahl, puffer, 10);
    lcd_puts(puffer);
    }

    Mit dieser Funktion kannst du direkt ein interger-Wert ausgeben, in deinem Fall temperatur.

    Gruß micro5

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.04.2007
    Beiträge
    114
    Mit deiner kleinen Funktion bekomme ich leider auch keine ausgabe...

    Evtl. vertue ich mich jetzt auch ihrgendwie...
    Jedenfalls sind die Variablen als:
    Code:
    byte temperatur;
    deklariert und können via UART am Pc folgendermaßen ausgegeben werden:
    Code:
    printf("\tTemperatur: %d.%d", (int)temperatur);
    Verstehe nicht, warum es mit den LCD jetzt solche probleme gibt

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    04.06.2005
    Beiträge
    50
    Hallo,

    das Problem bei der Sache ist, dass du temperatur als byte deklariert hast. Ich dachte, dass das ein interger wäre, dann würde die Funktion von mir auch funktionieren. Eine Möglichkeit wäre, dass du den Wert von einem byte in ein interger umwandelst, und dann der Funktion übergibst. Du könntest auch gleich den Wert als interger speicher, wenn das dein vorherigen Programmcode nicht "stört". Vielleicht klappt das Umwandeln von byte in interger so:

    int zahl = (*int)&temperatur;

    Ist aber nur ein Gedankengang, weis nicht ob das so funzt.

    Gruß micro5

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.04.2007
    Beiträge
    114
    Ok Danke erstmal, werde ich gleich mal versuchen,
    aber gibt es keine möglichkeit den wert "direkt" auszugeben? Ohne ihn erst 2mal umzuformen...?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.04.2007
    Beiträge
    114
    Keiner ne idea wie ich eine als byte deklarierte Variable via lcd_puts ausgeben kann?

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Wenn's schon alt ist , ich habe dies so gelöst:

    Code:
    ...
    #include <stdlib.h>   //itoa
    ....
    
    void WRITE_Int(int zahl)
    {
    char string[8];
    
    WRITE_Txt(itoa(string,zahl, 10),6,2);
    }
    Text wird so aufs LCD geschrieben:
    Code:
    /* ========================================================================== */
    /*                                                                            */
    /*                 Text schreiben                                             */
    /*                                                                            */
    /* ========================================================================== */
    void WRITE_Txt(char *txt, unsigned char x, unsigned char y) {
        SET_Pos(x, y);
        int i;
        for (i = 0; i <= 16; i++) {
                            // Durchlauf Textstring bis Stringende: "0"
            if (txt[i] == 0)
                return;
            else
                WRITE_Dat(txt[i]);
        }                   // Char ("Zeichen") schreiben
    }
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Berechtigungen

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

Labornetzteil AliExpress