- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 35

Thema: LCD soll Werte und "Text" in einer Zeile schreiben

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    29
    Beiträge
    527

    LCD soll Werte und "Text" in einer Zeile schreiben

    Anzeige

    Praxistest und DIY Projekte
    hallo RN,

    mittlerweile funktioniert die Wetterstation auf meinem RP6, aber bisher kommen die gemessenen Daten aus dem Terminal und nicht vom Display.

    Das soll sich ändern, aber ich hab keine Idee wie ich auf dem Display (an der M32) so etwas zeigen kann:

    Zeile 1: Variable stemp, dann "°C"
    Zeile 2: Variable rlicht, dann "L", dann Variable rrF, dann "% rF"
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Schön, dass dein Sensor nun funktioniert. Wenn du gleich zu Beginn den Schaltplan gepostet hättest, wäre die fehlende Vcc-Verbindung wohl eher aufgefallen.

    Zum LCD: Wenn du ein Standart-LCD mit paralleler 4-Bit-Schnittstelle am M32 verwendest, sollte ein erster Test mit RP6Control_LCD (bei den Demos fürs M32) funktionieren. Abhängig vom Kontroller im LCD muss man allerdings eventuell das Setup in initLCD() der M32-Lib (RP6ControlLib.c) anpassen. Dazu benötigt man aber den Kontrollertyp des LCDs und dessen Datenblatt.

    Wenn das Demo funktioniert, kannst du auch selbst Daten ausgeben. Die Funktionen dazu stehen alle in RP6ControlLib.c. Sie sind ähnlich wie die USART-Funktionen aufgebaut. Dazu kommen noch Funktionen zur Cursorsteuerung (=Schreibposition), löschen und scrollen. Zusätzlich kann man bei einigen LCDs noch eigene Zeichen definieren.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    29
    Beiträge
    527
    hi Radbruch,
    zum Sensor:
    ich hatte keinen Schaltplan, nur ein Layout für meine EXP.
    Da ist die fehlende Leitugn drin untergegangen.

    Ich hab das LCD von Conrad, extra für den RP6,
    das Beispielprogramm und eigenses Ansteuern klappt auch,
    nur hab ich keine Ahnung wie ich eine Variable und einen "Text" in einer Zeile Schreiben kann, dann bekomm ich von Programmers Notepad im output immer zu viele Argumente angezeigt.
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ich besitze kein M32 und kann es deshalb nicht testen:

    Code:
    #include "RP6ControlLib.h"
    
    uint8_t c='a';
    
    int main(void)
    {
    	initRP6Control(); // M32 initialisieren
    	initLCD(); // Display initialisieren
    
    	setCursorPosLCD(0,0); // Schreibposition Zeile 0 Spalte 0
    	writeNStringLCD_P("Test:");//Zeichenkette ausgeben
    	writeIntegerLCD(c, 10); // Integer ausgeben
    	setCursorPosLCD(1,5); // Schreibposition Zeile 1 Spalte 5
    	writeCharLCD(c);
    	writeCharLCD('B');
    	writeCharLCD('1');
    
    	while(1);
    	return(0);
    }
    Keine Ahnung, ob das so funktioniert.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    shedepe
    Gast
    Pack es beides in einen String rein den du dann, je nach Bedarf aktualisierst

    Oder:
    Es gibt doch bestimmt die Funktion gotoxy Dann schreibst du z.B an der Position 0,0 deinen Text und dann je nach Text Länge z.B an der Position 6,0 deinen Wert.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Code:
    setCursorPosLCD(0,0);
    writeIntegerLCD(stemp,DEC);
    writeCharLCD('°');
    writeCharLCD('C);
    
    setCursorPosLCD(1,0);
    writeIntegerLCD(rlicht,DEC);
    writeCharLCD('L');
    
    setCursorPosLCD(1,8);
    writeIntegerLCD(rrF,DEC);
    writeCharLCD('%');
    writeCharLCD('r');
    writeCharLCD('F');
    Du könntest das dann z.B. auch mit Kommastelle machen.
    Im Selbsttest der Base ist kommen solche Ausgaben vor ... allerdings auf die serielle Schnittstelle.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von Virus
    nur hab ich keine Ahnung wie ich eine Variable und einen "Text" in einer Zeile Schreiben kann, dann bekomm ich von Programmers Notepad im output immer zu viele Argumente angezeigt.
    Ich habe so etwas in Bascom mit der STR(x) Funktion gemacht

    X= 12345
    STR (X) ; wandelt dann die Zahl 12345 in einen String um und
    den kann man dann als Text ausgeben. ie mann unter C eine
    Zahl in einem String wandelt?

    Gruß Richard

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Die Ausgabe müsste eigentlich mit writeIntegerLCD(Variable,Typ) funktionieren

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    14.12.2009
    Ort
    Steinfurt
    Beiträge
    46
    Hi,

    du könntest für jede Zeile deines LCDs ein char Array anlegen und die entweder mit sprintf füllen oder über den Index auf das Feld zugreifen.
    Da würde dann vermutlich erstmal etwas drin stehen wie:
    "T: 00°C"
    "000L 000%rF"
    Wenn sich dan den Werten etwas ändert, schreibst du die neuen Werte an die entsprechenden Positionen des Arrays.
    Dazu läuft noch ein Task, der jede Sekunde oder jede halbe Sekunde den Inhalt der Arrays aufs Display schreibt.
    Natürlich könntest du auch die Arrays einsparen und schreibst einmal deine Einheiten auf das Display raus. Die Werte schreibst du dann nur noch mit den, hier schon genannten, setCursorPosLCD() und WriteIntegerLCD() Methoden aufs Display.

    Grüße,
    Jan

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    29
    Beiträge
    527
    vielen Danke euch allen,
    besonders dir Xandi11,

    deinen Programmschnipsel habe ich noch ein wenig ergänzt,
    weil doch noch mehr Platz auf dem LCD war, und dieses "°" nicht schreiben konnte.
    Code:
            setCursorPosLCD(0,0); 
            writeIntegerLCD(stemp,DEC); 
            writeCharLCD('G');
            writeCharLCD('r');
            writeCharLCD('a');
            writeCharLCD('d');
            writeCharLCD(' ');
            writeCharLCD('C');
            writeCharLCD('e');
            writeCharLCD('l');
            writeCharLCD('s');
            writeCharLCD('i');
            writeCharLCD('u');
            writeCharLCD('s'); 
            setCursorPosLCD(1,1); 
            writeIntegerLCD(slicht,DEC); 
            writeCharLCD('L');
            writeCharLCD('i');
            writeCharLCD('c');
            writeCharLCD('h');
            writeCharLCD('t'); 
            setCursorPosLCD(1,8); 
            writeIntegerLCD(srF,DEC); 
            writeCharLCD('%'); 
            writeCharLCD('r'); 
            writeCharLCD('F');
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen