- Hardware richiesto:
- Conoscere i display OLED:
- Hardware e connessioni:
- Programmazione del display OLED SSD1306 per Arduino:
La maggior parte di noi avrebbe familiarità con il display LCD a matrice di punti 16 × 2 utilizzato nella maggior parte dei progetti per visualizzare alcune informazioni all'utente. Ma questi display LCD hanno molte limitazioni in ciò che possono fare. In questo tutorial impareremo a conoscere i display OLED e come usarli Arduino. Ci sono molti tipi di display OLED disponibili sul mercato e ci sono molti modi per farli funzionare. In questo tutorial discuteremo delle sue classificazioni e anche di quale sarà la più adatta al tuo progetto.
Hardware richiesto:
- Modulo display OLED a 7 pin 128 × 64 (SSD1306)
- Arduino UNO / Nano
- Breadboard
- Collegamento dei cavi
- Computer / laptop
Conoscere i display OLED:
Il termine OLED sta per " diodo organico a emissione di luce" e utilizza la stessa tecnologia che viene utilizzata nella maggior parte dei nostri televisori ma ha meno pixel rispetto ad essi. È davvero divertente avere questi moduli di visualizzazione dall'aspetto accattivante da interfacciare con Arduino poiché renderà interessanti i nostri progetti. Abbiamo coperto un articolo completo sui display OLED e sui suoi tipi qui.
Stiamo utilizzando un display OLED SSD1306 da 0,96 pollici monocromatico a 7 pin. Il motivo per cui si sceglie questo display è che può funzionare su tre diversi protocolli di comunicazione come la modalità SPI a 3 fili, la modalità SPI a quattro fili e la modalità IIC. Questo tutorial tratterà come utilizzare il modulo in modalità SPI a 4 fili poiché è la modalità di comunicazione più veloce e quella predefinita.
I pin e le sue funzioni sono spiegati nella tabella seguente.
Codice PIN |
Nome pin |
Altri nomi |
Utilizzo |
1 |
Gnd |
Terra |
Pin di massa del modulo |
2 |
Vdd |
Vcc, 5V |
Pin di alimentazione (3-5 V tollerabile) |
3 |
SCK |
D0, SCL, CLK |
Funge da perno dell'orologio. Utilizzato sia per I2C che per SPI |
4 |
SDA |
D1, MOSI |
Pin dati del modulo. Utilizzato sia per IIC che per SPI |
5 |
RES |
RST, RESET |
Resetta il modulo (utile durante SPI) |
6 |
DC |
A0 |
Pin di comando dati. Utilizzato per il protocollo SPI |
7 |
CS |
Chip Select |
Utile quando più di un modulo viene utilizzato con il protocollo SPI |
In questo tutorial useremo semplicemente il modulo in modalità SPI a 4 fili, lasceremo il resto per qualche altro tutorial.
La comunità di Arduino ci ha già fornito molte librerie che possono essere utilizzate direttamente per rendere tutto più semplice. Ho provato alcune librerie e ho scoperto che la libreria Adafruit_SSD1306 era molto facile da usare e aveva una manciata di opzioni grafiche, quindi useremo la stessa in questo tutorial. Tuttavia, se il tuo progetto ha un vincolo di memoria / velocità, prova a utilizzare la libreria U8g poiché funziona più velocemente e occupa meno memoria del programma.
Hardware e connessioni:
Lo schema circuitale per l'interfacciamento OLED SSD1306 con Arduino è davvero semplice ed è mostrato di seguito
Abbiamo semplicemente stabilito una comunicazione SPI tra il modulo OLED e Arduino. Poiché l'OLED funziona a 3V-5V e consuma pochissima energia, non necessita di un alimentatore esterno. Puoi semplicemente usare i fili per effettuare la connessione o utilizzare una breadboard come ho usato in modo che sia facile sperimentare. La connessione è anche elencata nel conto sottostante
S.No |
Nome pin sul modulo OLED |
Nome pin su Arduino |
1 |
Gnd, terra |
Terra |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, Chip Select |
12 |
Nota: non sarai in grado di visualizzare alcuna retroilluminazione / bagliore sul modulo OLED semplicemente accendendolo. Devi programmarlo correttamente per notare eventuali cambiamenti sul display OLED.
Programmazione del display OLED SSD1306 per Arduino:
Una volta che i collegamenti sono pronti, puoi iniziare a programmare Arduino. Come detto in precedenza, utilizzeremo la libreria Adafruit e la libreria GFX per lavorare con questo modulo OLED. Segui i passaggi per testare il tuo display OLED.
Passaggio 1: scarica la libreria Adafruit e la libreria GFX da Github utilizzando il collegamento sottostante
- Biblioteca Adafruit
- Libreria grafica GFX
Passaggio 2: dovresti scaricare due file Zip. Ora aggiungili al tuo Arduino seguendo
Schizzo-> Includi libreria -> Aggiungi libreria Zip come mostrato di seguito. Quindi seleziona la libreria che abbiamo appena scaricato. È possibile selezionare solo una libreria alla volta, quindi è necessario ripetere nuovamente questo passaggio.
Passaggio 3: avviare il programma di esempio selezionando File-> Esempi-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino come mostrato nell'immagine sottostante.
Passaggio 4: all'interno del programma di esempio in cima alla riga 64 aggiungere la riga "#define SSD1306_LCDHEIGHT 64" come mostrato nell'immagine sottostante.
Passaggio 5: ora carica il programma e dovresti vedere il display OLED accendersi con il codice di esempio predefinito di Adafruit come mostrato nell'immagine sottostante. Alla fine viene fornito il video completo.
Questo programma di esempio mostra tutti i possibili grafici che potrebbero essere visualizzati nello schermo OLED. Questo codice dovrebbe essere sufficiente per creare bitmap, disegnare linee / cerchi / rettangoli, giocare con i pixel, visualizzare caratteri e stringhe con caratteri e dimensioni diversi ecc…
Se vuoi capire meglio la Libreria e le sue funzioni puoi leggere oltre. Ogni giunca del codice viene suddivisa e spiegata con l'aiuto delle righe di commento. Il codice completo è fornito alla fine di questo articolo
Visualizzazione e cancellazione dello schermo:
Scrivere su uno schermo OLED è come scrivere su una lavagna nera, dobbiamo scrivere i valori e poi pulirlo prima che possa essere sovrascritto. I seguenti comandi vengono utilizzati per scrivere e cancellare il display
display.display (); // Scrivi per visualizzare display.clearDisplay (); // cancella il display
Visualizzazione di una variabile di carattere:
Per visualizzare il contenuto all'interno di una variabile è possibile utilizzare il seguente codice.
char i = 5; // la variabile da visualizzare display.setTextSize (1); // Seleziona la dimensione del testo display.setTextColor (WHITE); // per la visualizzazione monocromatica solo con è possibile display.setCursor (0,0); // 0,0 è l'angolo superiore sinistro dello schermo OLED display.write (i); // Scrive la variabile da visualizzare
Disegnare una linea, un cerchio, un rettangolo, un triangolo:
Se vuoi aggiungere dei simboli al tuo display puoi usare il seguente codice per disegnare uno dei seguenti
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WHITE); // void drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, BIANCO); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, WHITE); // void drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
Disegnare una stringa sullo schermo:
Il seguente blocco di codice può essere utilizzato per visualizzare qualsiasi messaggio sullo schermo in una posizione e dimensione particolari
display.setTextSize (2); // imposta la dimensione del testo display.setTextColor (WHITE); // impostazione del colore display.setCursor (10,0); // La stringa inizierà da 10,0 (x, y) display.clearDisplay (); // Cancella qualsiasi visualizzazione precedente sullo schermo display.println ("Circuit Digest"); // Stampa la stringa qui "Circuit Digest" display.display (); // invia il testo allo schermo
Visualizzazione di un'immagine bitmap:
Una cosa poco affidabile che può essere fatta con il modulo OLED è che può essere utilizzato per visualizzare bitmap. Il codice seguente viene utilizzato per visualizzare un'immagine bitmap
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B11000000, B00000001, B110011110, B110001 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, color);
Come puoi vedere, per visualizzare un'immagine i dati bitmap devono essere salvati nella memoria del programma sotto forma di direttiva PROMGMEM. In poche parole, dobbiamo istruire il display OLED su cosa fare con ogni pixel passandogli una sequenza o valori da un array come mostrato sopra. Questo array conterrà i dati bitmap dell'immagine.
Potrebbe sembrare complicato, ma con l'aiuto di uno strumento web è molto facile convertire un'immagine in valori di una mappa di bit e caricarli nell'array sopra.
Basta caricare l'immagine e regolare le impostazioni per ottenere l'anteprima dell'immagine preferita. Quindi fai clic su "Genera codice", copia il codice e incollalo nel tuo array. Carica il programma e hai finito. Ho provato a visualizzare un logo di Batman ed è così che è venuto fuori.
Ci sono ancora molte cose che puoi fare con queste librerie. Per conoscere tutte le possibilità visitate la pagina delle primitive grafiche di Adafruit GFX.
Spero che tu abbia funzionato e pronto per implementare un display OLED in alcuni dei tuoi progetti. Se hai avuto qualche problema condividili nella sezione commenti e farò del mio meglio per correggerli.