Umstiegsprobleme ESP8266->ESP32

Hallo zusammen,

ich hoffe, das ihr mir helfen könnt.
Zur Zeit betreibe ich drei TFTs (1,77" AZ-Delivery) an einem ESP8266 Amica V2 (Link) parallel und ohne Probleme mit folgendem Sketch (gekürzt):

#include "Ucglib.h"
#include "ESP8266WiFi.h"
#include <PubSubClient.h>
#include <SPI.h>

Ucglib_ST7735_18x128x160_HWSPI tft1(/cd=/ 2, /cs=/ 15, /reset=/ -1); /* HW SPI Adapter /
Ucglib_ST7735_18x128x160_HWSPI tft2(/cd=/ 2, /cs=/ 4, /reset=/ -1); /
HW SPI Adapter /
Ucglib_ST7735_18x128x160_HWSPI tft3(/cd=/ 2, /cs=/ 5, /reset=/ -1); /
HW SPI Adapter */

void setup() {
tft1.begin(UCG_FONT_MODE_SOLID);
tft1.setFont(ucg_font_helvB08_hf);
tft1.setRotate270();
tft1.clearScreen();
tft2.begin(UCG_FONT_MODE_SOLID);
tft2.setFont(ucg_font_helvB08_hf);
tft2.setRotate90();
tft2.clearScreen();
tft3.begin(UCG_FONT_MODE_SOLID);
tft3.setFont(ucg_font_helvB08_hf);
tft3.setRotate270();
tft3.clearScreen();
}

void loop() {
tft1.setColor(255, 200, 170);
tft1.setColor(1, 0, 100, 120);
tft1.setPrintPos(20, 20);
tft1.print("Ich bin TFT1");
tft2.setColor(255, 200, 170);
tft2.setColor(1, 0, 100, 120);
tft2.setPrintPos(20, 20);
tft2.print("Ich bin TFT2");
tft3.setColor(255, 200, 170);
tft3.setColor(1, 0, 100, 120);
tft3.setPrintPos(20, 20);
tft3.print("Ich bin TFT3");
}

Nun möchte ich auf den ESP32 umsteigen (Link).

Wenn ich Arduino IDE auf den ESP32 umstelle, und das selbe Sketch benutze, bekomme ich nur ein TFT zum laufen. Verdrahtet habe ich das so:
23 (MOSI) an alle SDA
18 (SCK) an alle SCK
17 an alle RES
16 an alle RS
5 (SS) an CS TFT1
4 an CS TFT2
0 an CS TFT3

Die UCGLIB-Befehle hatte ich auf die oben genannten GPIOs angepasst.

Ich hoffe, das ihr mir helfen könnt, dieses Problem zu lösen, auf jeden Fall schon mal vielen Dank im voraus!

und das funktionierende TFT ist das TFT1 an GPIO 5? Oder welches geht genau?

Alle TFTs sind von bei AZ-Delivery bestellt - Typ Link

Und alle drei haben vorher am ESP8266 funktioniert.

Brauche ich evt. eine andere Bibliothek oder andere Einstellungen für den ESP32 als AZ-Delivery in ihrem E-Book beschreibt?

Und ja das an GPIO5 ist das, welches funktioniert.

Christoph78:
Und ja das an GPIO5 ist das, welches funktioniert.

dann versuche mal statt 4 und 0

GPIO18
GPIO19

für die beiden Displays die nicht funktionieren.

Wenn sie an 18 und 19 auch nicht funktionieren, dann tausche mal das Displays das an GPIO18 hängt gegen das funktionierende von GPIO5, und berichte, was sich tut.

So folgendes Ergebnis:

wenn ich das erste TFT anschließe und mit

Ucglib_ST7735_18x128x160_HWSPI tft1(/cd=/ 16, /cs=/ 5, /reset=/ 17); /* HW SPI Adapter */

ansteuere funktioniert alles

Wenn ich das zweite TFT mit

//Ucglib_ST7735_18x128x160_HWSPI tft2(/cd=/ 16, /cs=/ 32, /reset=/ 17); /* HW SPI Adapter */

mit ansteure bleiben beide TFTs schwarz. Habe auch schon andere CS ausprobiert - gleiches Ergebnis.

Das erste bleibt sogar schwarz, ob ich das zweite anschließe oder nicht.

Da du es nicht explizit schreibst:
Hast du eine Kombination mit CS an GPIO5 und einem CS GPIO18 versucht? Wie war das Ergebnis?

War der erste versucht, geschrieben habe ich den letzten - sry.

Für mich sieht es so aus, das sobald ich im Sketch das zweite TFT eintrage, zeigen alle nichts mehr an. Das erste zeigt sogar nichts mehr an, wenn ich das zweite gar nicht anschließe.

Aber verstanden habe ich deine Frage nicht, da laut Pinout der GPIO18 der CLK ist und ich den auch an den TFTs so verdrahtet habe.

Datenblatt - Pinout Seite 2

ich habe schlicht dein Post zu wenig aufmerksam gelesen. Und 18/19 sind auch ein schmarren von mir, sorry.

MOSI 23
MISO 19
CLK 18
CS ...5

tut der 17?

Hallo,

die Ucglib sieht nicht so aus, als ob sie überhaupt die ESPs berücksichtigt. Beim ESP8266 scheint das noch zu klappen, der ESP32 mit seinen ziemlich frei auf die hardware mapbaren Pins scheint da dann wohl auf die Nase zu fallen.
Ich habe die Lib nie benutzt, ist also mehr nur Vermutung. Ich nehme normalerweise die TFT_eSPI-Lib, die hat aber mit dem ST7735 auch noch ein Problem, falls das nicht schon behoben wurde. Auch der Adafruit ST7735 Treiber hat da teilweise Probleme am ESP32 gemacht.

Gruß aus Berlin
Michael

Meine Vermutung geht mittlerweile auch in diese Richtung, denn ich habe vorhin mal die Ansteuerung über die „Adafruit ST7735“ Bibliothek gemacht und dann ging immer das letzte (3 konfiguriert TFT3 lief, 2 konfiguriert TFT2 lief).

Welche Bibliothek würdest du denn empfehlen? Ich wollte die UCGLIB wegen der vielfältigen Schriftarten nutzen.

@noiasca egal welche Pinkombination, sobald im Sketch 2 TFTs eingetragen sind, sind alle dunkel.

Hallo,

Christoph78:
Meine Vermutung geht mittlerweile auch in diese Richtung, denn ich habe vorhin mal die Ansteuerung über die „Adafruit ST7735“ Bibliothek gemacht und dann ging immer das letzte (3 konfiguriert TFT3 lief, 2 konfiguriert TFT2 lief).

Welche Bibliothek würdest du denn empfehlen? Ich wollte die UCGLIB wegen der vielfältigen Schriftarten nutzen.

Ich hatte nie mehr als 1 Display am Controller, also keine Ahnung...
Prinzipiell kann die Adafruit ST7735 ja mehrere Instanzen, da ja die Displays auch prinzipiell laufen, sollte auch das evtl. Timing-Problem beim ESP32 keine Rolle spielen, da bleibt das Display dann einfach weiß.
insofern kann ich also auch zur TFT_eSPI nichts sagen, vor allem nicht, wie man die für mehrere Instanzen benutzt.

Nur so aus Neugier: warum 3 Displays?

Gruß aus Berlin
Michael

Soll eine Anzeige für verschiedene Zustände und Temperaturen werden. Und da ich kurzsichtig bin muss die Schrift größer werden ;-). Und daher 3 Displays

Könntest du das mit dem Timing näher erklären? Als ich auf die Adafruit ST7735 umgestellt habe, hat das letzte was angezeigt und die anderen waren weiß. Gelaufen haben sie auf dem ESP8266 und mit der Ugclib.

Hallo,

müßte ich meinen Bekannten mal fragen, irgendwie konnten auf dem ESP32 die Flanken von DC und CS zu dicht aufeinander folgen, das mag der ST7735 nicht, weil bei dem ja prinzipiell SDA auch Ausgang zum Lesen sein kann. Habe ich aber nicht mehr genau auf dem Schirm, habe kein ST7735 am ESP32 im realen Einsatz.
Da sind meist 4" 480x320 im Einsatz und da reicht mir dann schon eins.

Gruß aus Berlin
Michael

Wie müssten denn die TFT_eSPI eingerichtet werden, damit ich drei TFTs anschließen kann? Die PINs werden ja in der User_Setup.h deklariert?

Hallo,

ich habe auf die Schnelle nur diesen Hinweis bei ihm gefunden:

Zumindest mit identischen Displaytypen sollte das gehen. Also in der User_Setup.h #define TFT_CS -1 und dann in Deinem Sketch den jeweiligen CS-Pin selber als OUTPUT setzen und bei allen Aufrufen den passenden CS selber setzen/löschen.
Keine Ahnung, ob Du das machen und testen willst...
Die Lib selbst ist eigenlich sehr praktisch und vielseitig und der Programmierer ist auch sehr rege mit der Pflege.

Gruß aus Berlin
Michael

Werde ich auf jeden Fall mal testen - vielen Dank an alle in die Runde!

Wenn es alles nicht klappt, bleib ich beim ESP8266.