Questa lezione include i seguenti argomenti:
1: Introduzione al display OLED
Prima di muoverti prima, dobbiamo sapere cosa OLED (Display di luce emessa organica) è. I display OLED sono usati come alternativa per LCD. I LED OLED vengono utilizzati per produrre display leggeri sugli schermi OLED. Lo schermo LCD utilizza la retroilluminazione per illuminare i suoi pixel mentre i display OLED hanno i loro LED emissivi. Ci sono centinaia di LED auto-aluminanti. Per visualizzare immagini e la luminosità del testo di questi LED può essere controllata pixel da pixel.
Ora, come conosciamo alcune basi relative al display OLED. Il prossimo passo è collegare ESP32 con un modulo di visualizzazione OLED.
2: Modulo di visualizzazione OLED di cablaggio su ESP32
Il display OLED viene fornito principalmente con due diversi protocolli di comunicazione. I due protocolli sono I2C e SPI. L'interfaccia periferica seriale (SPI) è generalmente più veloce di I2C, ma abbiamo preferito il protocollo I2C rispetto al protocollo SPI in quanto richiedeva meno numero di pin.
La seguente immagine illustra il diagramma di connessione ESP32 con 128 × 64 pixel (0.96 ") display OLED.
Di seguito è riportata la tabella di connessione:
Una volta che ESP32 è interfacciato con un display OLED, il passaggio successivo nell'elenco è installare tutte le librerie richieste per la programmazione ESP32 utilizzando Arduino IDE.
3: installazione delle librerie richieste
Librarie multiple sono disponibili in Arduino IDE per programmare ESP32 con un display OLED. Qui useremo due librerie di Adafruit: SSD1306 e GFX Library.
Ora nell'Arduino IDE Open Library Manager e cerca la libreria SSD1306. Installa la libreria SSD1306 di Adafruit dalla barra di ricerca.
In alternativa, si può anche andare a: Schizzo> Includi la libreria> Gestisci le biblioteche
La prossima libreria che dobbiamo installare è il Gfx Biblioteca di Adafruit.
Dopo che entrambe le librerie sono state installate correttamente, il passo successivo è verificare l'indirizzo I2C in cui ESP32 è connesso.
4: Controlla l'indirizzo I2C display OLED
I2C sta per la comunicazione del circuito inter-integrato. Usando i2c possiamo interfacciarsi più dispositivi su 2 fili. Tuttavia, mentre li collega ogni dispositivo I2C deve utilizzare un indirizzo I2C separato. Questo indirizzo varia da 0 a 127. Ad esempio, se abbiamo due diversi dispositivi I2C che utilizzano lo stesso indirizzo I2C non possono essere collegati sulla stessa linea I2C.
Prima di interfacciare ESP32 con dispositivi I2C, ricorda di controllare prima l'indirizzo I2C. Per controllare l'indirizzo I2C del display OLED connesso collegato ESP32 con PC, caricare il codice indicato nell'articolo Controlla l'indirizzo I2C utilizzando Arduino IDE.
Dopo aver caricato il codice I2C, l'indirizzo può essere visualizzato nel monitor seriale. Qui nel nostro caso il display OLED è collegato all'indirizzo I2C (0x3C).
Useremo l'indirizzo I2C menzionato per il display OLED nel codice Arduino.
5: Visualizza immagine sullo schermo OLED con ESP32 usando Arduino IDE
Il primo passo necessario per visualizzare un'immagine su uno schermo OLED è convertire l'immagine in un codice esadecimale. Usando qualsiasi immagine online a convertitore esagonale possiamo ottenere codice esadecimale contro un'immagine.
1: convertire l'immagine in codice esadecimale
Per convertire un'immagine in codice esadecimale possiamo utilizzare qualsiasi strumento online o si può anche convertire l'immagine in codice esadecima. Ora segui i passaggi per ottenere il codice esadecimale per la tua immagine.
Passo 1: Clicca qui per visitare il convertitore Image2CPP gratuito.
Passo 2: Seleziona l'immagine che vogliamo visualizzare su OLED.
Passaggio 3: Dopo aver selezionato l'immagine fare clic su Apri.
Passaggio 4: Nell'impostazione dell'immagine imposta le dimensioni su 128 x 64. La luminosità può essere impostata in base al numero di immagine consigliato da qualche parte intorno a 150.
Ridimensionare l'immagine in base alle dimensioni e per riferimento consultare l'anteprima dell'output.
Passaggio 5: Ora imposta il formato di output del codice nel codice Arduino e nel prefisso come bitmap. Dopo questo clic su Genera codice. Il codice esagonale di output può essere copiato dalla finestra di output.
Sostituisci il codice esagonale copiato in Arduino IDE SEMPLIC CODE indicato di seguito.
2: codice
Ora apri l'IDE Arduino e incolla il codice dato. Ricorda di sostituire il codice esadecimale con quello per l'immagine che è necessario visualizzare su uno schermo OLED.
/****** Linuxhint.Com ********/
#includere
#includere
#includere
#define screen_width 128
#define screen_height 64
Display Adafruit_SSD1306 (screen_width, screen_height, & wire, -1);
static const uint8_t image_hex_array [1024] =
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfd, 0xb0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xfc, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x4f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0x8f, 0x3e, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x0f, 0x1e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x8f, 0xbe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xff, 0xe6, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x3f, 0x8e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x00, 0x0e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x80, 0x3e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xe0, 0x7e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x7f, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcf, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x3f, 0xf9, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcf, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x3f, 0xf8, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xf8, 0xff, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x0c, 0xcf, 0x8f, 0x3e, 0x47, 0x90, 0x1e, 0x3c, 0x38, 0x1f, 0x8e, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x0c, 0xce, 0x03, 0x3e, 0x47, 0x90, 0x06, 0x30, 0x18, 0x1f, 0x1e, 0x07, 0xff, 0xff, 0xFF,
0xf0, 0x3c, 0xcc, 0x03, 0x3e, 0x47, 0x90, 0x06, 0x20, 0x08, 0x3f, 0x1f, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf0, 0xfc, 0xcc, 0xf1, 0x3e, 0x60, 0x10, 0xe2, 0x23, 0x88, 0xfe, 0x3f, 0xe1, 0xff, 0xff, 0xFF,
0xf0, 0x3c, 0xcc, 0xf9, 0x3e, 0x60, 0x31, 0xe2, 0x23, 0xc8, 0xfe, 0x3f, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1c, 0xcc, 0xf9, 0x3e, 0x60, 0x11, 0xe2, 0x23, 0xc8, 0xfc, 0x7e, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x0c, 0xcc, 0xf9, 0x1c, 0x47, 0x91, 0xe2, 0x23, 0xc8, 0x7c, 0x7e, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xcc, 0xf9, 0x80, 0xc7, 0x91, 0xe2, 0x23, 0xcc, 0x18, 0xFe, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xfc, 0xcc, 0xf9, 0xc1, 0xc7, 0x91, 0xe2, 0x23, 0xc6, 0x11, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf3, 0x37, 0xcf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFF
;
void setup ()
Seriale.Inizia (115200); // TAUD TAUD per la comunicazione seriale
Se(!Schermo.inizio (ssd1306_switchcapvcc, 0x3c))
Seriale.println (f ("allocazione SSD1306 non riuscita"));
per(;;);
ritardo (2000); // ritardo 2 sec
Schermo.clearDisplay (); // Cancella buffer di display
Schermo.DrawbitMap (0, 0, Image_hex_array, 128, 64, 1);
Schermo.Schermo();
void loop ()
Codice avviato importando le librerie necessarie che abbiamo installato in precedenza. Due librerie includono la libreria di filo e adafruit. Le librerie di fili ci consentono di utilizzare i2c mentre Adafruit aiuta a visualizzare il testo scritto sullo schermo.
Il prossimo comando seguente è scritto:
Display Adafruit_SSD1306 (screen_width, screen_height, & wire, -1);
Contiene il Screen_width E Screen_height variabili. Usando queste variabili, abbiamo definito la dimensione del display OLED. Qui abbiamo usato un display OLED da 128 × 64. Dopo di che &Filo L'oggetto è definito per la visualizzazione.
L'ultimo parametro contiene (-1), Questo display che la schermata OLED che stiamo usando non ha un pulsante di ripristino esterno. Nel caso in cui abbiamo un pulsante di ripristino sul display OLED. Passeremo questo parametro a un pin GPIO. Dopo aver premuto il pulsante di ripristino, lo schermo OLED visualizzerà il testo.
Nel mezzo del codice, abbiamo incluso il codice esadecimale per l'immagine e successivamente inizializzava la comunicazione I2C all'indirizzo I2C (0x3c) è definito che abbiamo trovato in precedenza usando il codice scanner I2C.
Nelle ultime righe di codice, l'array esadecimale viene stampato su OLED usando la funzione bitmap.
3: Esempio di codice Arduino per la visualizzazione dell'immagine
Ecco un codice indicato per l'interfaccia con OLED con ESP32. Nel seguente modello di codice sostituire il codice esadecimale dell'immagine che si desidera mostrare sullo schermo OLED.
/****** Linuxhint.Com ********/
#includere
#includere
#includere
#define screen_width 128
#define screen_height 64
Display Adafruit_SSD1306 (screen_width, screen_height, & wire, -1);
static const uint8_t image_hex_array [1024] =
/*******
*******
*******
[Incolla il codice esadecimale per l'immagine qui]
*******
*******
*******/
;
void setup ()
Seriale.Inizia (115200); // TAUD TAUD per la comunicazione seriale
Se(!Schermo.inizio (ssd1306_switchcapvcc, 0x3c))
Seriale.println (f ("allocazione SSD1306 non riuscita"));
per(;;);
ritardo (2000); // ritardo 2 sec
Schermo.clearDisplay (); // Cancella buffer di display
Schermo.DrawbitMap (0, 0, Image_hex_array, 128, 64, 1);
Schermo.Schermo();
void loop ()
4: output
Qui in output, possiamo vedere l'immagine di progettazione del logo ufficiale Linuxhint che abbiamo convertito in codice esadecimale prima.
Abbiamo visualizzato con successo immagini su un display I2C OLED. Utilizzando gli stessi passaggi qualsiasi immagine con proporzione corretta può essere visualizzata su uno schermo OLED.
Conclusione
Un display OLED è un ottimo modo per mostrare output senza necessità di un monitor seriale o un PC. I display OLED sono dotati di due diversi protocolli I2C e SPI. I display I2C OLED sono preferiti a causa di un numero minore di fili. Questa lezione fornisce tutti i passaggi richiesti nella visualizzazione di un'immagine su un display I2C OLED con ESP32 usando l'IDE Arduino.