[Project] ESPEasy Treiber für 1.8" LCD ST7735 Module

Begonnen von dieter114, 11 April 2020, 22:22:21

Vorheriges Thema - Nächstes Thema

dieter114

Hallo Leute,

ich habe das Ganze zum Project umbenannt und im 1. Post
steht ab sofort immer die neueste Version und  es sind alle Änderungen eingetragen.

Bleibt Gesund

Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

Zippo2000

Hallo Wolfdieter,
zuallererst vielen Dank für die Entwicklung des Moduls!
Ich hätte eine Frage zur Anpassung:
Ich möchte ein 1,4" TFT mit einem ESP8266 verwenden. Soweit habe ich es auch schon zum Laufen gebracht, jedoch stimmt der Randabstand nicht ganz. Ich denke, dass ich sowohl bei Spalte als auch bei Zeile 1px mehr benötige. Aktuell wird ein bisschen was abgeschnitten. Wo passe ich den Abstand an? Du schreibst in Deinem letzten Edit "...Ich habe die Pixelverschiebung komplett in den Adafruit_ST7735xx.h Treiber zurückgegeben. Wenn es gewünscht wird, bitte dort ändern." Doofe Frage von mir: Wo finde ich die Datei "Adafruit_ST7735xx.h"? Meinst Du ggf. "Adafruit_ST77xx.h" oder "Adafruit_ST7735.h"? Wenn ich Deinen Code anschaue interpretiere ich, dass die "Adafruit_ST7735.h" verwendet wird, aber wo ändere ich dort die Werte?

Noch eine Frage: Ich würde gerne die Schriftgröße erhöhen (ist sonst arg klein bei den 1,4"). Setze ich die "tft->setTextSize(1);" auf 2 überscheiden sich die Zeilen - wo kann ich den Zeilenabstand einstellen?

Danke und viele Grüße,
Tobias

Nobbynews

#32
Gemeint ist die Datei "Adafruit_ST77xx.h" aus der library "Adafruit-ST7735".
Dort gibt es einen Abschnitt:
protected:
  uint8_t _colstart = 0,   ///< Some displays need this changed to offset
      _rowstart = 0,       ///< Some displays need this changed to offset

Hier kannst Du Deinen individuellen Offset einstellen.

Mit den Fonts habe ich auch rumgespielt, aber leider keine zufriedenstellende Lösung gefunden.
Das Original bzw. der wg. des °-Zeichens angepasste Font ist für den ursprünglichen Anwendungsfall der Beste.
Wenn Du die Größe änderst, musst du ggf. die Anzahl der Zeichen pro Zeile und die Anzahl der Zeilen in der ino-Datei anpassen. Darüber wird ja u. a. der Zeilenumbruch gesteuert.

juergs

#33
Hallo Dieter114,

fand die Idee recht gut. Passt super für mein Verwendungszweck.

Hätte noch ein paar Anmerkungen zum Plugin:

Du erwähnst die Steuerleitungen DS,CS,BL etc. und gehst davon aus, dass  das SPI-Interface als Standard gegeben sei.
Ich habe allerdings hier "nur" ein ST7735 Modul mit I2C-Interface herumliegen. Dann geht leider nichts mit der Bin. :(

Des Weiteren würde ich versuchen, auch das Ansprechen des Moduls zwischen Plugins zu ermöglichen.
Die Device-Konfiguration sollte es ermöglichen, auch den Interface-Typ auszuwählen zu können bzw. sinnvollerweise aus der HW-Konfiguration zu übernehmen.
Deine Implementierung ist nur auf SPI festgelegt.

Wie ich auch "schmerzvoll" erfahren habe hat sich die Implementierung von Plugins in der aktuellen Version von ESPEasy auch etwas geändert.
Versuche das Modul dahingehend anzupassen ...

Grüße,
Jürgen

dieter114

Zitat von: Nobbynews am 23 März 2021, 06:26:53

Wenn Du die Größe änderst, musst du ggf. die Anzahl der Zeichen pro Zeile und die Anzahl der Zeilen in der ino-Datei anpassen. Darüber wird ja u. a. der Zeilenumbruch gesteuert.
Das steht allerdings im Treiber selbst: Datei _P250_ST7735.ino
Zeile 141: Drehen der Anzeige
Zeile 142: Textgröße aber Achtung:
Der verwendete Char.Set basiert auf der Größe 6*10 Dots
daraus folgen die Zeilen 220 und 222.
Hier wird die Positionierung passend zur Textgröße eingestellt.
Das mus also geändert werden.

Und noch mal was Grundsätzliches zum Treiber:
Ich habe das Ding umgeschrieben um so ein billiges 1.8" LCD Display für eine einzige Anzeige zu nutzen.
Nobbynews hat mir dabei geholfen und wir sind eigentlich zu der Erkenntniss gekommen
es müßte eingentlich einmal das gesammte Design dieser Art Treiber überarbeitet werden.
Man sollte die Eingabemöglichkeit im Modul selber komplett herausnehmen und nur noch Einträge via HTTP zulassen.
Im Modul könnten dann diverse Einstellungen zu irgendwelchen kompatiblen LCD-Anzeigen eingestellt werden.
Also 3 - 5 Display Typen, SPI oder I2C, Alle Ports einzeln zu ändern wg. div. ESPEasy Hardware usw usw...
Ideen und Mitarbeit daran nehme ich gern an, nur in Nächster Zeit wird das nichts bei mir.
Der Frost ist raus und ich muss in den Garten.....

Grüße aus Peine
Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

juergs

#35
Hallo Wolfdieter,
passt schon  ;)

Es  geht auch I2C mit SPI!
Beispiele: https://forum.fhem.de/index.php/topic,97161.msg905851.html#msg905851
https://forum.fhem.de/index.php?action=dlattach;topic=97161.0;attach=115693;image
https://github.com/Bodmer/TFT_eSPI

ZitatI2C: Connect VCC to 3.3V.   SCL=SCK.  SDA=MOSI. RES=gpio. DC=gpio.  CS=gpio.   BL is probably ok with n.c.
U8g2lib or Adafruit_ST7735 libraries should work fine.
Of course Bodmer's TFT_eSPI library is your best choice for ESP8266.

Zitat// for WEMOS D1 D2 Mini
//I2C: connect VCC to 3.3V.   SCL=SCK.  SDA=MOSI. RES=gpio. DC=gpio.  CS=gpio.   BL is probably ok with n.c.
  // For the breakout board, you can use any 2 or 3 pins.
  // These pins will also work for the 1.8" TFT shield.
  #define TFT_CS     D8
  #define TFT_RST    -1 // Or set to -1 and connect to Arduino RESET pin
  #define TFT_DC     D3
  #define TFT_MOSI   D7  // Data out
  #define TFT_SCLK   D5  // Clock out

  // OPTION 2 lets you interface the display using ANY TWO or THREE PINS,
  // tradeoff being that performance is not as fast as hardware SPI above.
 
  Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

dieter114

Hallo juergs,

danke für die Hinweise. 8)
Vielleicht sollten wir das einfach in den Treiber mit einbauen wie oben beschrieben
und dann all das "Überflüssige" rauswerfen.
Ich jedenfalls werde den Treiber wohl kaum für was Anderes
als eine kleine Anzeige von Text benutzen - er kann natürlich sehr viel mehr.

Gruß Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem