nichts und niemand hindert dich daran den Text auf mehrmals auszugeben
und dzwischen dann das Sonderzeichen einzustreuen
1
lcd_printlc(1,1,"Die 1");
2
lcd_printchar(6,1,4);// Sonderzeichen 4
3
lcd_printlc(7,1," Zeile");
wenn du dir dafür noch eine Spezialfunktion machen musst, die ein
einzelnes Byte ausgibt, dann wirst du das wohl machen müssen. Aber
eigentlich dürftest du diese Funktion schon haben, weil sich sehr
wahrscheinlich die Funktion zur Stringausgabe darauf stützt.
Du kannst dir auch im Vorfeld den String schon mit dem Sonderzeichen
zusammenbauen, wobei du allerdings mit dem Zeichen mit dem Code 0
Schwierigkeiten kriegst, weil diese 0 per Definition das Ende eines
Strings anzeigt, was wohl die Funktion zur Stringausgabe ausser Tritt
bringen wird.
Aber die anderen Zeichen gehen. Einfach mal in deinem Lehrbuch
nachsehen, wie man in einem String Zeichen durch ihre Codezahl angibt.
@ Achim Seeger (achims)
>Wie kann ich diese Zeichen im I2C Bus einbinden bzw. aufrufen?
Gar nicht, denn das interessiert den I2C nicht eine Sekunde. Aber das
LCD, das am I2C hängt, schon eher.
>lcd_printlc(1,1,"Die 1. Zeile \x1"); // Text Zeile 1, am Ende Sonderzeichen 1
\x ist eine Escapsequenz für ASCII-Zeichen mit Angabe des HEX-Codes.
\x41 ist der ASCII-Code für A.
Wenn rundherum aber die Zeichen 0-9 bzw a-F direkt folgen, muss man
etwas Tricksen.
lcd_printlc(1,1,"Der Test " "\x2" "a.")
Dabei werden die Einzelstrings zwar erstmal einzeln bewertet und die
Escapesequenz RICHTIG interpreztiert, OHNE das abschließende a.
Danke Karl Heinz
irgendwie habe ich mir das schwieriger vorgestellt. Mache zwar viel mit
dem Bus, lerne aber ständig dazu. Das kennst du ja von mir.
Werde es testen und hier berichten.
achim
lcd_data(pgm_read_byte_near(&sonder1[i]));// schreiben der Daten in den CG RAM
26
}
Wenn ich es dann starte bekomme ich so ca 50 Fehlermeldungen. Als erstes
gleich dabei, das lcd.h fehlt
Welche brauche ich den? Die lcd.h oder die I2clcd.h?
Die Ausgabe über den Bus ist wie oben.
Sorry, das versteh ich jetzt nicht mehr.
achim
>Wenn ich es dann starte bekomme ich so ca 50 Fehlermeldungen. Als erstes>gleich dabei, das lcd.h fehlt
Ja, wo ist sie denn? Vieleicht mal nen Pfad mit angeben oder
ins Projekt einfügen?
Und du willst doch nicht wirklich mit jedem Mainloop Durchlauf
die Sonderzeichen setzen? Einmal am Beginn des Programms reicht völlig.
Du hast recht Holger, einmal reicht, hab es gleich geändert.
Sorry, eine flasche angabe gemacht. Gebe ich die lcd.h, dann bekomme ich
ca. Fehlermeldungen. Ohne Angabe habe ich nur 4 Meldungen. Auch mit
diesen nur "4" Meldungen komme ich nicht klar, da ich nicht weiss, was
er von mir will.
achim
Kein Problem, kommt sofort
Warning 3 implicit declaration of function 'lcd_data'
[-Wimplicit-function-declaration] E:\AAA
Technik\Roboter\RN-Controll\RNC
Programme\ATB_B1_Display_2\ATB_B1_Display_2\ATB_B1_Display_2.c 45 8
ATB_B1_Display_2
Error 4 expected declaration or statement at end of input E:\AAA
Technik\Roboter\RN-Controll\RNC
Programme\ATB_B1_Display_2\ATB_B1_Display_2\ATB_B1_Display_2.c 78 1
ATB_B1_Display_2
Warning 2 each undeclared identifier is reported only once for each
function it appears in E:\AAA Technik\Roboter\RN-Controll\RNC
Programme\ATB_B1_Display_2\ATB_B1_Display_2\ATB_B1_Display_2.c 42 19
ATB_B1_Display_2
Error 1 'LCD_CGRAM' undeclared (first use in this function) E:\AAA
Technik\Roboter\RN-Controll\RNC
Programme\ATB_B1_Display_2\ATB_B1_Display_2\ATB_B1_Display_2.c 42 19
ATB_B1_Display_2
>Sorry, habe eben noch mal ins Programm geschaut. Rufe die Sonderzeichen>nur einmal beim start auf, while kommt erst später
Na super. Du zeigst uns nicht deinen Code sondern irgendwas.
Irgendwie sinkt meine Bereitschaft dir zu helfen gerade
ins Bodenlose.
>Warning 3 implicit declaration of function 'lcd_data'
Da fehlt ein #include "lcd.h"
Immer die erste Fehlermeldung beseitigen.
Die nachfolgenden erst mal ignorieren.
Der Rest der Fehler verschwindet dann möglicherweise von alleine.
In der Datei i2clcd.h oder c habe ich die Angabe zu dem Display vom Bus.
Mit Angabe der Pin nr. Anschluss PCF 8574, Speicher usw. In der Datei
lcd.h oder c habe ich auch die Angabe vom Display drin. Gebe ich das
frei bekomme ich 13 Meldungen uner anderem auch das
Error 9 conflicting types for 'lcd_init' E:\AAA
Technik\Roboter\RN-Controll\RNC
Programme\ATB_B1_Display_2\ATB_B1_Display_2\lcd.h 187 13
ATB_B1_Display_2
Da ich alles über den Bus betreibe, bin ich jetzt so richtig
durcheinander
Das Display wird doch jetzt über den I2C Bus angesteuert. Muss nicht die
Sonderzeichen auch über den Bus auf das Display geladen werden? Verwende
ich dabei den gleichen Befehl, als wenn das Display direkt am Prozessor
hängt?
>Habe beide Sachen auskommentiert, bleibt das gleiche
Pack das komplette Projektverzeichnis in eine ZIP Datei
und poste die hier.
Das wird sonst nichts.
>Sorry, für heute melde ich mich, um 4 klingelt der wecker
Dann kannst du ja morgen aufräumen.
Du hast ZWEI LCD Librarys gemischt.
Das kann nicht gehen.
Morgen
wenn ich die I2Clcd benutze bekomme ich die 4 Fehlermeldungen. Nutze ich
die lcd zusätzlich bekomme ich 13 Fehlermeldungen.
Ein paar Fragen dazu.
Ich nutze das Display im 4 Bit Modus mit einer Ansteuerung über den PCF
8574. Dazu schreibe ich Daten auf das Display.
Muss ich das nicht genau so machen, wenn ich den Speicher des Displays
beschreibe?
@Achim (Gast)
>Ich nutze das Display im 4 Bit Modus mit einer Ansteuerung über den PCF>8574. Dazu schreibe ich Daten auf das Display.
Achim, du lernst es nie.
Beitrag "Re: I2CLCD Library für HD44780 LCDs"
Einfacher geht es nicht. Eien Funktion zur Definitin der eigenen Zeichen
gibt es auch schon, muss man nur aufrufen. Und du macht immer wieder den
selben, chaotischen Unsinn. Tu dir selber einen Gefallen und such dir
ein anderes Hobby.
Stimmt, du hast Recht.
In meinem hohem Alter wird man schon vergesslich. Sorry. Noch nicht
senil, aber knapp da vor.
Ein ganzen Teil habe ich schon verwendet, doch diese Stelle habe ich da
wohl zu schnell gelesen. Bin ja lernfähig und nicht beratugsresident.
Da danke ich für deine Info
achim
Hallo Falk
habe mir dein ganzes Programm noch mal vorgenommen. War blöd, das ich so
lange was anderes gemacht habe. Bekomme fast alles zum laufen, fast
alles.
Du schreibst:
So, habe den Artikel von Falk gründlich gelesen und befolgt. Ein paar
Sachen sind noch unklar. Das meiste habe ich wohl verstanden.
Daraus ist ein Programm entstanden, was so ziemlich alles berücksichtigt
bzw. nutzt. Es werden auch die Datein von Falk dazu verwendet. Habe erst
später gesehen, was Falk alles verändert hat und für was es genutzt
wird.
Hänge das Prg an, damit jeder Leser oder Sucher das gleiche machen kann.
Danke an die Helfer und die Geduldigen mit mir.
Das Prg arbeite mit einem AT1284p, 16MHz, I2C-Bus, Display TC1604
achim
@ Achim Seeger (achims)
> ATB_Prg_Display_2.pdf | anzeigen
Mensch Achim, bist du schon wieder neu in diesem Forum?
Seit wann werden Quelltexte als PDF gespeichert?
Das Programm ist zwar recht rivial, aber sei's drum. Wenn du noch die
Funktion
Zeichen_def(); // Definiert Sonderzeichen
VOR der Endlosschleife aufrufen würdest, wäre es ein Schritt in die
richtige Richtung. Den die muss man nur EINMAL definieren, nicht immer
wieder.
Achim Seeger schrieb:> Hänge das Prg an, damit jeder Leser oder Sucher das gleiche machen kann.
Deine Kommentare zu Strings sind sehr hilfreich.
Nicht böse sein. ;-D
Stimmt, du hast recht. Habe wie üblich was falsch drin. Leider diese
Stelle total übersehen. Danke für deinen Tip. Bemühe mich nach Kräften.
Eine Frgae bleibt, die ich nicht beantworten konnte. Vielleicht kannst
du mir einen Tip geben.
Hatte bei einem anderen Display (kein I2C) von KH die Info bekommen, wie
man 3 verschieden Sonderzeichen zu jeweils 8 Stück machen kann. Es steht
irgendwo im Netz.
Dort hat er jeweils 8 Sonderzeichen als 1 Array deklariert und jeweils
das nötige aufgerufen.
Das klappt hier aber nicht. Bekomme es nicht als Array aufgebaut oder
gespeichert.
Die Idee dahinter ist, rufe jeweils mit void Sonder1 oder 2 oder 3 auf,
lade die Zeichensätze dazu und nehme nur dieses dazu. Sorry, weis nicht
wie ich es besser erklären kann. Suche nach dem Info von KH. Vielleicht
finde ich es.
Noch was, könnte den Code auch als c reinstellen. Sind aber so ca 2 bis
3 Seiten. Ist das nicht zu lang?
achim