ein 2,4" Display mit ILI9341 Chipsatz:
Die Verdrahtung erfolgt analog zu anderen SPI-Display. Es gibt nur 2 abweichende Pin-Bezeichnungen:
LED - 3,3V
SCK - GPIO18
SDA - GPIO23
A0 - GPIO2
RESET - EN
CS - GPIO15
GND - Ground
VCC - 3,3V
in der ESP32-radio.ino wird der Typ ILI9341 aktiviert (alle anderen auskommentiert):
// Define (just one) type of display. See documentation.
//#define BLUETFT // Works also for RED TFT 128x160
//#define OLED // 64x128 I2C OLED
//#define DUMMYTFT // Dummy display
//#define LCD1602I2C // LCD 1602 display with I2C backpack
//#define LCD2004I2C // LCD 2004 display with I2C backpack
#define ILI9341 // ILI9341 240*320
//#define NEXTION // Nextion display. Uses UART 2 (pin 16 and 17)
mehr wäre grundsätzlich nicht zu tun. Wir wollen aber die 8-Pixel hohe Schrift um 2 Stufen vergrößern und müssen dazu an mehreren Stellen in die Software eingreifen.
Wir können an dieser Stelle in der ESP32-radio.ino die Schriftgöße stufenweise von 1 auf 2 oder gar auf 3 einstellen:
dsp_setTextSize ( 1 ) ; // Small character font
ein Wert von 2:
und ein Wert von 3:
jetzt ist die Uhrzeit aus dem Bild gerutscht, und die Formatierung insgesamt muss angeglichen werden.
Um die Uhrzeit nach links zu verschieben ändern wir den Wert TIMEPOS:
// Position (column) of time in topline relative to end
#define TIMEPOS -160
er ist negativ, weil vom rechten Rand ausgehend die Startposition wieder abgezogen wird.
(Originalwert= -52)
Ich ziehe die Ziffern der Uhrzeit weiter auseinander in der ILI9341.h mit der Einstellung:
pos += 18 ; // Next position
(Originalwert = 6)
für 1 Sekunde passt es jetzt. Die rectangles, mit denen die Ziffern vor dem Neuschreiben gelöscht werden, müssen ebenfalls verschoben werden:
dsp_fillRect ( pos, 0, 16, 24, BLACK ) ; // Clear the space for new character
(Originalwerte: 0, 6, 8)
damit ist die Uhrzeit schon mal ansehnlich:
jetzt kommen wir zu den devidern (Balken).
Der unterste Balken ist die Lautstärkeanzeige. Den mache ich breiter in
der ILI9341.h, indem ich an 4 Stellen die 2 durch eine 8 ersetze:
dsp_fillRect ( 0, dsp_getheight() - 8,
len, 8, RED ) ; // Paint red part
dsp_fillRect ( len, dsp_getheight() - 8,
dsp_getwidth() - len, 8, GREEN ) ; // Paint green part
jetzt muss noch die Definition der Segmente, in die der Bildschirm aufgeteilt ist, angepasst werden:
// Data to display. There are TFTSECS sections
#define TFTSECS 4
scrseg_struct tftdata[TFTSECS] = // Screen divided in 3 segments + 1 overlay
{ // One text line is 8 pixels
{ false, WHITE, 0, 24, "" }, // 1 top line
{ false, CYAN, 40, 96, "" }, // 8 lines in the middle
{ false, YELLOW, 140, 96, "" }, // 4 lines at the bottom
{ false, GREEN, 140, 96, "" } // 4 lines at the bottom for rotary encoder
} ;
jetzt passt alles. Keine Überschreibungen mehr, kein Überlauf, keine Zeichenfragmente mehr die sich nicht löschen.auch die encoder-Meldungen machen keine Probleme mehr:
btw: der Text, der links ober scheinen soll, kann in der ESP32_radio.ino editiert werden:
tftset ( 0, "IVAN" ) ; // Set screen segment text top line
Hallo,
AntwortenLöschenkönntest du mir die esp32_radio.ino schicken?
Danke
lorenzia@web.de
Hallo Lorenzia, könntest Du mir bitte auch diese ino schicken falls Du sie bekommen hast, Dankeschön im voraus, bitte an michaelsenftleben@yahoo.de
LöschenHallo, hier ist der link zur Edzelf-Software:
AntwortenLöschenhttps://github.com/Edzelf/ESP32-Radio
Es gibt aber inzwischen die Version 2.