Ich möchte mein funktionierendes BASCOM Programm für den ATMEGA328A und der YwRobot_Lcd_i2c.lib mit einem 20x4-LCD an ein 1602-LCD anpassen. Leider unterstützt diese Lib nur 20x4-LCDs. Frage: wer kann die Lib an ein 16x2-LCD anpassen? Bin für jeden Hinweis dankbar.
Bist du sicher das du das musst.? https://bascomforum.de/index.php?thread/661-i2c-ansteuerung-mit-pcf8574-ohne-bibliothek/ BASCOM-Quellcode: Attiny 85 Config Lcd = 16x2 ' die Zeile meine ich Config Scl = Portb.2 Config Sda = Portb.0 $lib "YwRobot_Lcd_i2c.lib" So wie ich das sehe reicht es, wenn man den das einfach sagt, Hier einige Details zu der Lib. http://www.forum.g-heinrichs.de/viewtopic.php?t=73
das war natürlich das erste, was ich geändert hatte. Leider ohne Erfolg. Der Text erscheint an beliebiger Stelle vom LCD nur nicht an der angegebenen Position. Vermutlich ist die Lib fest auf 20x4 LCDs programmiert. Folgende Zeile in der Lib lässt mich das vermuten: ldi r16,&hC0 ; this is to make the initialization on both halfs of a 4-line LCD Bin leider kein Assembler-Spezi, sonst könnte ich die Lib selbst anpassen.
:
Bearbeitet durch User
Wieso willst du die überhaupt. Lt. Anleitung von Bascom (hab mal drüber nachgedacht die zu benutzen) aber zu teuer, hat es einen eigenen Treiber für LCD dieses Types.
Rolf L. schrieb: > Frage: wer kann die Lib an ein 16x2-LCD anpassen? Wozu? Nimm doch die lib die bei Bascom dabei ist. Der Fehler liegt wohl daran. In diesem Fall lautet der Name der Library “lcd-i2c.lib”. Wenn man diese Library in sein BAS-Programm einbindet, sollen die üblichen LCD-Befehle von BASCOM benutzbar sein. Leider funktioniert das bei dem YwRobot-Display überhaupt nicht; nach dem Start eines einfachen “Hello-World”-Programms wird kein Text angezeigt, lediglich die Hintergrundbeleuchtung flackert sehr heftig. Einige Recherchen ergaben zwei Gründe für dieses Fehlverhalten. Kent Andersson geht bei seiner Library von folgender Verbindung zwischen PCF-Baustein und Display aus: P0 -> D4 P1 -> D5 P2 -> D6 P3 -> D7 P4 -> RS P5 -> RW (not used, set to 0 to ground for write) P6 -> E2 (on 1 or 2 line display nc) P7 -> E1(=E) Die Zusatzplatine von YwRobot benutzt aber folgende Zuordnung: P0 -> RS P1 -> RW P2 -> E P3 -> BT (Backlight) P4 -> D4 P5 -> D5 P6 -> D6 P7 -> D7 Im Wesentlichen sind also die beiden Halbbytes (Nibbles) vertauscht. Entweder die Belegung ändern, oder die BasCom Lib verwenden.
Rolf L. schrieb: > Der Text erscheint an beliebiger Stelle vom LCD nur > nicht an der angegebenen Position. Printest DU mit LCD, wenn ja mußt die die Zeilen-Länge auch anpassen oder die Ausgabe z.B. Dim D As String * 20 Locate 1 , 1 : Lcd D oder Dim D As String * 15 Locate 1 , 1 : Lcd "Name "; D Bei 16 Display natürlich 16 statt 20
Am Waldrand schrieb: > In diesem Fall lautet der Name der Library “lcd-i2c.lib”. sorry, aber diese lib kann ich bzw. der Compiler leider nicht finden.
Holger R. schrieb: > Printest DU mit LCD, wenn ja mußt die die Zeilen-Länge auch anpassen das ist wohl das mindeste, was man wissen sollte :-)
Schlaumaier schrieb: > https://www.mcselec.com/index.php?option=com_content&task=view&id=82&Itemid=57 > > 4 Zeile beachten Danke für den Link. Habs gleich runtergeladen und werde mich dann mal drüber her machen.
Das ist übrigens die offizielle Seite soweit ich weiß von Bascom. Die haben auch ein ziemlich aktives Forum mit DE-Abteilung.
Ich schreibe lieben in B4r, ist auch Basic und die wichtigsten Libs sind schon dabei. ;) lcd.Initialize(0x27, 16, 2) 'based on the example from the project. ' Adresse // spaltem // Zeilen = hier 16 x 2 lcd.Backlight = True pad.Initialize("123A456B789C*0#D", Array As Byte( 12, 11, 10, 9), Array As Byte(8, 7, 6, 5), "pad_KeyPressed") lcd.SetCursor(0,1) lcd.Write("Pad ini") Fertig. Ink. einen 16er Keypad ;)
Schlaumaier schrieb: > Ich schreibe lieben in B4r, ist auch Basic und die wichtigsten Libs sind > schon dabei. ;) interessant, trotz meiner 77 Lenze noch nie davon gehört :-) Haste einen Link dazu?
www.b4x.com Zitat: B4X suite supports more platforms than any other tool ANDROID | IOS | WINDOWS | MAC | LINUX | ARDUINO | RASPBERRY PI | ESP8266/ESP32 | Außer MAC (da brauchst du ne Runtime von Apple soweit ich weiß) ist ALLES Kostenlos. ALLES grenzt an Visual-Basic. Was bedeutet : Ähnliche Syntax. Gleiches Sprache, halt nur die besonderen Eigenschaften des jeweiligen Gerät berücksichtigen. Ich als VB Profi habe es in weniger als 3 Std. drauf gehabt. ;) Ist kein angeben. Liegt an der sehr hohen Ähnlichkeit.
Nachtrag. : Du brauchst für Arduino ESP Raspberry die B4R Variante. Und eine funktionieren Arduino-IDE. Die B4R <- R IDE erzeugt den Arduino-Code, ompiliert ihn da, und schiebt ihn dann auf das Gerät. Geht alles automatisch wenn es KEIN Programmer braucht. Ansonsten die erzeugte INO-Datei in die Arduino-IDE laden, und dann "Hochladen mit Programmer" anklicken. Ich schreibe meine Android-Software auch mit den Zeug. Nur nutze ich dann die b4A <- A für Android.
Nsachtrag 2: Und ich spare die ca. 100 Euro die Bascom kostet. Und mit einen WARPER kann ich fast jede Arduino-Libs von Github nutzen. Das gibt mir viel mehr Möglichkeiten. Habe ich aber bisher nur 1 x gebraucht. Grund : https://docs.google.com/spreadsheets/d/1qFvc3Q70RriJS3m_ywBoJvZ47gSTVAuN_X04SI0_XBw/edit#gid=0 Da findst du in Spalte B4R alle Libs die man ohne Warper stressfrei einbinden kann. Ins LIBS Verzeichnis kopieren, Anklicken, Include Befehl und meist INI-Befehl (s.o.) Fertig. Etwas Englisch-Kenntnisse sind aber von Vorteil. Google Translator reicht (testet).
Schlaumaier schrieb: > Ich als VB Profi habe es in weniger als 3 Std. drauf gehabt. vielen Dank für die Infos. Werde mir umgehend das Tool anschauen. Bin leider kein Profi-Softwerker, aber VB kenne ich etwas. English spoken ist für mich kein Thema :-)
Rolf L. schrieb: > Schlaumaier schrieb: > >> Ich als VB Profi habe es in weniger als 3 Std. drauf gehabt. > > vielen Dank für die Infos. > Werde mir umgehend das Tool anschauen. > Bin leider kein Profi-Softwerker, aber VB kenne ich etwas. > English spoken ist für mich kein Thema :-) Johannes S. schrieb: > Schlaumaier schrieb: >> Etwas Englisch-Kenntnisse sind aber von Vorteil. > > Vor allem für die Warper :) es heißt natürlich wrapper . Da war wohl der Hunger der Vater meiner Gedanken. ;)
sorry, aber irgendwie stehe ich "auf dem Schlauch". Ich habe die ...demo.bas aus der AN#118 an die Pinbelegung von meinem I2C-Controller (hoffentlich richtig) angepasst, aber ausser einer bei Reset kurz aufblinkenden Anzeige und ein paar ab u. zu unregelmässig auftauchenden Textteile kann ich damit nichts erreichen. Ich vermute, dass meine Anpassungen der Pinbelegung in der lcd_i2c.lib nicht übernommen werden, sondern dass man die Zuordnung in der lib anpassen muss. Ich kann nicht erkennen, wie die 8 PCF_xx-Werte dorthin gelangen sollen. Die 8 Werte müssten -denke ich- identisch sein mit P0...P7 im Datenblatt. Anbei das Testprog und die zugehörige lib (version von Ludwig) sowie ein Datenblatt vom I2C-Controller.
:
Bearbeitet durch User
Mal 2 Fragen. 1.) Hat das Display jemals was angezeigt. ?? Wenn Nein Ist der Controller neu ? Wen JA, kann es auch sein das, wie bei den Controller üblich, das Poti (blauer Würfel) total verstellt ist. Also anmachen, und solange drehen bis ein Muster erscheint, dann noch ein kleines bisschen weiter bis das Muster nur schwach zu sehen ist. Dann Text-Befehl anzeigen lassen, und die Buchstaben suchen. Ist der Standard-Fehler Nr. 1 bei Anfänger's. Sorry und vergiss alles was ich getippt habe, wenn du Frage 1, mit JA beantworten kannst.
Display + Controller funktionieren mit der YwRobot_Lcd_i2c.lib mit der Macke, dass der Text meist ein paar Stellen nach rechts verschoben erscheint. Diese lib funktioniert mit einem 20x4 Display + controller einwandfrei, aber nicht mit dem 1602-Display. Das ist mein eigentliches Problem :-) Habe inzwischen Kent, der Verfasser dieser Libs mit meinem Problem konfrontiert. Mal sehen, ob er seine Lib anpassen kann.
:
Bearbeitet durch User
Ist jemand bekannt, unter welcher email-Adresse Kent Andersson, der Autor diverser i2c_lcd.lib aktuell zu erreichen ist? Die in der Lib genannte aus dem Jahr 2002 scheint nicht mehr zu existieren. Inzwischen habe ich festgestellt, dass der Text im 16x2 Display immer um 8 Stellen nach rechts versetzt angezeigt wird. Ich denke, dass dies in der Lib korrigiert werden könnte.
:
Bearbeitet durch User
Rolf L. schrieb: > Ich denke, dass dies in > der Lib korrigiert werden könnte. Dann mach das. Wenn das nicht möglich ist, ist jetzt der Zeitpunkt gekommen, mal über die Wahl deiner Tools nachzudenken. Oliver
:
Bearbeitet durch User
Rolf L. schrieb: > Inzwischen habe ich festgestellt, dass der Text im 16x2 Display immer um > 8 Stellen nach rechts versetzt angezeigt wird. Notfalls musst du tricksen. Schonmal versucht die angabe der Stelle ins minus zu setzen. z.b. Locate -8 , 1 'set cursor position Wobei ich hoffe das ich Zeile und Spalte nicht verwechselt habe. ;)
Der lib ist völlig egal welches Display dran hängt. Die Adressberechnug (Locate , Lowerline) macht Bascom intern. Daher das Config Lcd. Das Display sollte ein Initlcd bekommen, sonst ist es eher Zufall wie es reagiert. Die ich kenne haben standartmäßig 8 bit Bus und 14 Punkt Zeichensatz nach dem Einschalten. Dann kommt nur Murks wenn sie mit 4 bit und 8Punkt besprochen werden. PS Manche brauchen eine "Wachwerd-Zeit" ca 60ms nach dem init
Schlaumaier schrieb: > Schonmal versucht die angabe der Stelle ins minus zu setzen. > z.b. Locate -8 , 1 'set cursor position > > Wobei ich hoffe das ich Zeile und Spalte nicht verwechselt habe. ;) richtig ist: zuerst Zeile, dann Spalte, Minuszeichen hat nix bewirkt. Ich habe rausgefunden, dass die 1602-Display-Anzeige dann korrekt ist, wenn man an den 16 stelligen Text noch weitere 4 Leerzeichen als letzte anfügt, so dass der Text dann 20stellig wird. Offensichtlich wirkt sich Config=16*2 nicht auf die Textformatierung aus, sondern ist vermutlich fix auf 20*4 festgelegt. Die 4 Leerzeichen landen anscheinend im Nirvana.
Hallo probiere das mal hier. Getestet auch mit einem UNO-Board
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.