Display OLED 1,3 pollici 128x64 Pixel I2C

Ciao,
mi è appena arrivato questo display OLED:

https://www.amazon.it/AZDelivery-Display-retroilluminato-Raspberry-gratuito/dp/B078J78R45/ref=pd_sbs_23_2/262-6165391-4689426?_encoding=UTF8&pd_rd_i=B078J78R45&pd_rd_r=69a853a1-47f0-4a87-9552-33d6fbd538a8&pd_rd_w=DJ6DL&pd_rd_wg=m5cp0&pf_rd_p=582ecf2c-0bd1-4c26-8c96-819ea7741f84&pf_rd_r=BVH2S7YEBVRYCXTVZJM3&psc=1&refRID=BVH2S7YEBVRYCXTVZJM3

ed ho fatto subito qualche prova seguendo i vari tutorial disponibili online.
Per gestire il display utilizzo la libreria Adafruit_SSD1306.
In allegato vedete il risultato che ottengo caricando sul mio Arduino UNO il seguente sketch:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET); //Crea l'oggetto display

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup()   {    
          
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //Imposta l'indirizzo i2c
  display.clearDisplay();  //Pulisce il buffer da inviare al display
  display.setTextSize(1);  //Imposta la grandezza del testo
  display.setTextColor(WHITE); //Imposta il colore del testo (Solo bianco)
  //Riga 1
  display.setCursor(0,0); //Imposta la posizione del cursore (Larghezza,Altezza)
  display.println("Testo 1"); //Stringa da visualizzare
  //Riga 2
  display.setCursor(0,10); //Sposta il cursore di 10 pixel piu in basso per non sovrapporre le stringhe
  display.println("Testo 2");
  display.display(); //Invia il buffer da visualizzare al display
}

void loop() {
}

Ho anche provato a caricare lo sketch di esempio di Adafruit e nella parte del display che nella foto allegata appare nera, si intravede l'animazione.

Sto sbagliando qualcosa, oppure semplicemente il display è guasto?

Grazie!

display.pdf (67.7 KB)

Butta quella libreria, scaricati e studiati QUESTA ... è quella che consiglio sempre, leggera, veloce e ... funziona! :smiley:

Guglielmo

Ciao,
innanzitutto grazie per la risposta!
Ho provato la libreria che mi hai indicato, ma il risultato che ottengo è lo stesso che avevo con Adafruit.
Ho provato a scaricare un paio di esempi installati assieme alla libreria, ma niente da fare. :sob:
Al momento, l'unica libreria che sono riuscito a far funzionare con questo display è la U8g2, che però "divora" quasi tutta la memoria delle variabili globali, anche solo per scrivere una riga di testo!!

Sicuro che non ci sia da cambiare/commentare/decommentare alcune #define per dirgli che tipo di display stai usando? Oppure, nella begin() specifichi il corretto display? Il chip è veramente un SSD1306 o è magari un'altro? Ti sei studiato tutta la documentazione a corredo? Perché quella libreria funziona perfettamente ...

Guglielmo

Quel LCD usa SH1106 e non SSD1306, quindi le librerie danno problemi.

Ne avevo preso uno che poi ha fatto una brutta fine :sweat_smile:, visto la fragilità.

Ricordo che per farlo funzionare ho dovuto modificare gli indirizzi dentro le librerie.

Per cortesia, nico1, modifica il tuo primo messaggio usando la funzione link per il collegamento ad Amazon. Dal telefonino con Android non sono riuscito ad aprire l'indirizzo, neanche a copiarlo.

Moce993:
Quel LCD usa SH1106 e non SSD1306, quindi le librerie danno problemi.

... e ci credo allora ... usa tutt'altro controller, ovvio che le librerie che abbiamo indicato non vadano bene.

E, verificando, la cosa è anche chiaramente scritta nei commenti degli acquirenti che hanno avuto non pochi problemi a falo funzionare scoprendo poi che, appunto, contrariamente alla descrizione, NON usa affatto il SSD1306, ma il SH1106.

Grazie Moce993 per la segnalazione ... che altrimenti stavamo qui giorni per cercare di capire ... ::slight_smile:

Guglielmo

>Datman: QUESTO è il link :wink: