Display KS0108 192x64 px con ESP32

Ciao a tutti.
Ho recentemente fatto un progetto nel quale utilizzo un display grafico da 192x64 pixel, che monta il driver KS0108.
Cercando su google, ho visto che si può utilizzare la libreria u8g2, che supporta questo tipo di display.
Ho ovviamente avuto problemi col display, a partire dalla banalissima accensione di esso (non si vedevano i pixel nonostante il contrasto, e questo perchè lo alimentavo erroneamente a 3,3 Volt e non a 5 Volt).
Sistemato ciò, ho iniziato i test ed al classico "Hello World" ottengo una schermata piena di pixel accesi o spenti in modo casuale, senza alcuna frase scritta.
Ci tengo a precisare che ho il WiFi attivo sull'ESP32 ed ho notato che, qualora la connessione WiFi dovesse andar male per mancanza di rete (volutamente fatta mancare), il display non mostra più pixel random ma non mostra neanche le scritte: semplicemente, resta pulito.

Ho quindi la netta sensazione che si tratti di un problema di coesistenza tra display e WiFi, per i pin utilizzati, e che quindi il problema risieda in questa cosa qui. Tuttavia, non mi spiego perchè, quando va male la connessione, il display non mostra nulla. Forse perchè comunque viene utilizzata qualche funzionalità dal WiFi?
Chiedo aiuto a voi per favore, grazie mille.

Di seguito, il collegamento del display all'ESP32:
(1) = GND = GND
(2) = VCC = 5V
(3) = V0 = cursore pot, alimentato con 0V e VS (-10 Volt)
(4) = RS = GPIO20
(5) = R/W = GND
(6) = EN = GPIO45
(7) = D0 = GPIO42
(8) = D1 = GPIO41
(9) = D2 = GPIO40
(10) = D3 = GPIO39
(11) = D4 = GPIO38
(12) = D5 = GPIO37
(13) = D6 = GPIO36
(14) = D7 = GPIO35
(15) = CS1 = GPIO34
(16) = RST = GPIO33
(17) = CS2 = GPIO10
(18) = CS3 = GPIO9
(19) = VS = -10V per potenziometro
(20) = LED+ = backlight LCD

Dimenticavo: utilizzo un ESP32-S2 [ ESP32-S2-WROOM-N4(4MB)], che ha più pin

Non conosco bene il ESP32-S2 ... ma, sul ESP32-S3, alcuni dei pin che tu usi NON possono essere usati così come fai tu ... io mi studierei bene il datasheet e verificherei quali pin sono liberamente utilizzabili e quali sono già in uso per altre cose ... :roll_eyes:

Non solo, io, con i display che lavorano a 5V, ho sempre messo dei level shifter anche sui segnali perché, dargli I/O a 3.3V ... a volte crea problemi ...

Guglielmo

... dimenticavo, darei inoltre un'occhiata alle Hardware Design Guidelines specifiche per gli S2 che trovi QUI ... perché, mi sembra che, come sul S3, alcuni di quei pin sono in uso per altre cose (es. PSRAM) :wink:

Guglielmo

Io un'informazione base che avevo, era quella dei pin sull'ADC2 che, con WiFi attivo, risulterebbero inutilizzabili se non come Input/Output semplici senza uso di ADC.
Questa è una delle informazioni che ho trovato prima dei tuoi documenti, che devo ancora leggere, e per quanto riguarda l'ESP usata da me pare che l'unico pin da non usare con il WiFi sia il 20, quello che uso proprio per i registri del display... Gli altri 9 pin associati all'ADC2 li ho già esclusi dal progetto
Inizialmente avevo collegato il pin RS del display al GPIO46, senza sapere che fosse l'unico pin "input only". Per provare, avevo quindi collegato il pin RS al GPIO20, senza ricordarmi che fosse un pin escluso dal WiFi....
Ora, per la terza volta xD, ho riprovato a cambiare pin usando il GPIO3... Vediamo come va a finire questo altro test...

Eureka! Pin 20 non utilizzabile, messo a pin 3 il pin RS e ci siamo! Leggiamo qualcosa!
Tuttavia, non proprio tutto... perchè la scritta "Hello World!" viene troncata, ad occhio poco dopo la metà...
Suggerimenti?
Intanto io, in background, cerco...

Risolto anche la questione frase tagliata: era il costruttore che non era per full buffer

Ora ho altri problemi: se stampo una riga del genere, funziona:

u8g2.drawStr(0,10,indirizzoIP.c_str());

Se stampo questo, funziona:

u8g2.drawStr(0,10,"Hello World!");

Se uso u8g2.print("testo"); assieme a setCursor, non funziona
Se faccio così, non funziona:

 u8g2.drawStr(0,10,indirizzoIP.c_str());
 u8g2.drawStr(0,30,"Hello World!");	

Idee?

A fine comandi, ho inserito un u8g2.sendBuffer()

NON uso la u8g2 quindi ... non ho idea ... :roll_eyes:

Guglielmo

Se hai librerie da consigliare, io non mi tiro indietro

Non mi riesce trovare quali pin vengono utilizzati dalla flash o dalla PSRAM.. boh, mi perdo io qualcosa di sicuro

Nelle Hardware Design Guidelines, se le si leggono bene tutte, parla proprio di quello e di quali pin usa ...

Guglielmo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.