Come collegare il display OLED I2C ad ARDUINO
Introduzione: Introduzione al display OLED I2C 128*64/128*32.
Ciao! Essendo un appassionato di elettronica amatoriale, sono sicuro che tutto ciò che facciamo - giocattoli elettronici, prodotti fatti in casa o grandi progetti - è tutto frutto di curiosità e pigrizia. La curiosità si sforza di comprendere e comprendere il vasto, l'ignoto, per capire come funziona lì, cosa fa, come si muove. E la pigrizia inventa qualcosa con cui inventarsi, per non alzarsi, per non avvicinarsi, per non sollevarsi, per non sporcarsi o per qualsiasi altra cosa importante.
Poiché vedere le informazioni è meglio che capire cosa sta per accadere nel nostro dispositivo, o è già accaduto, o sta accadendo, vorremo sicuramente ricevere queste informazioni più utili dai nostri microcontrollori, sensori o altri dispositivi. E in ogni caso voglio ricevere qualsiasi messaggio, come domande, avvisi, promemoria, emoticon, stelle, cuori e simili.
Per chi ha un desiderio simile, ecco una breve guida per collegare e testare display OLED piccoli ed economici.
Successivamente parleremo di uno dei modelli di display OLED ampiamente disponibili per i radioamatori, controllato dal chip SSD1306, con una dimensione dello schermo di 0,96 pollici e una risoluzione di 128 * 64 o 128 * 32 pixel. Questi display sono ideali per piccoli progetti radioamatoriali e progetti fatti in casa.
Lo collegheremo ad Arduino UNO/NANO e lo programmeremo anche tramite Arduino.
Segui le istruzioni per capire come connettere e configurare correttamente il display OLED ad Arduino e come visualizzare un messaggio personalizzato sul suo display.
Facciamo tutto passo dopo passo.
Abbiamo solo bisogno di quattro cose:
In generale, acquistare parti per vari progetti su Aliexpress ed Ebay è una cosa molto interessante, mentre lavori su un progetto, le parti per un altro sono già in arrivo. La cosa principale è non dimenticare di effettuare un ordine.
Il display è controllato da un chip SSD1306, che supporta cinque protocolli di comunicazione, uno dei quali è I2C. I dati che utilizzano questo protocollo vengono trasmessi solo su due fili e meno fili sono presenti nel case, meglio è, quindi per noi è abbastanza adatto.Ma! Esistono moduli con protocollo SPI e anche con commutazione di protocollo, quindi fai attenzione quando acquisti questo modulo.
Perni utilizzati:
Display OLED - SCL/SCK (orologio) e SDA (dati), potenza “Più” (VCC) e potenza “Meno” (GND).
Perni utilizzati:
Arduino UNO - SCL/SCK su A5 e SSD su A4, potenza “Più” (+5V) e potenza “Meno” (GND).
Collegamento del display ad Arduino:
Ogni dispositivo sul bus I2C ha un indirizzo esadecimale, non può essere modificato, è cablato, ogni produttore responsabile deve indicarlo da qualche parte sulla custodia o nelle istruzioni. Esistono moduli con interruttori e ponticelli che possono essere utilizzati per modificare l'indirizzo, ma... se i dispositivi sono ridicolmente economici, il produttore potrebbe non prendersi la briga di occuparsi di tale dettaglio, quindi dovrai determinarlo tu stesso.
In totale sul bus possono essere utilizzati fino a 127 indirizzi: 119 per dispositivi e 8 indirizzi di servizio. La comunicazione viene effettuata a questi indirizzi. Ce n'è uno principale, alias Maestro, e c'è uno schiavo, alias Schiavo: i Maestri chiedono, gli schiavi rispondono, tutto è semplice.
Poiché il nostro display OLED utilizza il protocollo di comunicazione I2C e l'indirizzo potrebbe non essere specificato, cercheremo di scoprire proprio questo indirizzo da soli.
Puoi farlo caricando un breve schizzo sulla tua scheda Arduino con l'OLED collegato. MA!
Non affrettarti a caricare subito lo schizzo su Arduino! Scarichiamo innanzitutto i “driver”, ovvero colleghiamo le librerie, e per fare questo andiamo subito allo “Step n°5”, per poi tornare indietro e proseguire.
Scarica CODE Finder_I2C_Hex_Address.ino, caricalo su Arduino.
Apri “Port Monitor”, imposta la velocità su 9600 e se tutto è collegato correttamente, il programma mostrerà l'indirizzo del dispositivo, nel mio caso OLED con indirizzo 0x3F.
Affinché tutto funzioni correttamente, e non devi reinventare la ruota, devi collegare un paio di librerie all'ambiente ArduinoIDE, vale a dire: ADAFRUIT GFX e ADAFRUIT SSD1306, sono necessarie affinché Arduino possa comunicare in modo indipendente con il display OLED.
È possibile includere queste librerie seguendo questi passaggi.
Con le ultime versioni delle librerie, il mio display funzionava in modo storto, ciò potrebbe ovviamente essere dovuto alla curvatura delle mie mani, ma dopo aver installato le primissime versioni di queste librerie, tutto ha cominciato ad apparire liscio e bello. Per qualche ragione, mi vengono in mente le battute di Pushkin:
...e l'esperienza, figlia di errori difficili,
e geniale, amico dei paradossi.
Un altro modo per installare le librerie è trovare, scaricare e installare tu stesso queste librerie.
Per l'esempio di Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
Queste sono le stesse librerie Adafruit, ma librerie simili possono essere facilmente ricercate nei motori di ricerca, su richiesta di OLED I2C. Molti appassionati scrivono librerie “per se stessi” e poi le pubblicano sul web. Quale libreria utilizzare dipende da te.
Affinché il display possa visualizzare le lettere russe, sono necessarie anche librerie speciali, ma questo è un argomento separato per un articolo separato.
Dopo aver installato le librerie, puoi tornare al passaggio 4 e scoprire finalmente l'indirizzo esadecimale del tuo display.
Per verificare se tutto funziona come previsto, esegui l'esempio di test da ArduinoIDE.
Per questo:
Vai su FILE > ESEMPI > SSD 1306 > Seleziona 128x64 i2c
Se ricevi "Errore", prova a selezionare SSD 1306 > 128x32 i2c.
Se si verifica nuovamente l'errore, prova a modificare l'indirizzo I2C alla riga 61 del codice demo e sostituiscilo con l'indirizzo del display che hai determinato nel passaggio n. 4.
Se l'errore si ripresenta, puoi provare a modificare il file Adafruit_SSD1306.h, si trova nella cartella delle librerie Arduino.
Apri il file Adafruit_SSD1306.h in un editor di testo e trova le righe:
Decommenta la riga:
Dovrebbe sembrare come questo:
Se l'errore si ripresenta, è necessario verificare le connessioni corrette.
Una volta completato il download, sullo schermo vedrai un'animazione di prova, il che significa che hai configurato correttamente il tuo display OLED.
Quando ti è piaciuta molto questa animazione, puoi passare al passaggio successivo.
Per scrivere il tuo messaggio, crea prima un nuovo schizzo nell'ambiente di programmazione ArduinoIDE.
Nell'intestazione includiamo 4 librerie:
Quindi scriviamo il protocollo di ripristino:
In VOID SETUP indichiamo l'indirizzo esadecimale del nostro display 0x3C, che abbiamo appreso nello “Step n°4”.
Quindi, inizializziamo il display e lo cancelliamo:
Successivamente, in VOID LOOP scriviamo il codice principale, cioè il nostro messaggio che vogliamo visualizzare sul display.
Per fare ciò, descriviamo la dimensione del testo, il colore del testo, la posizione del cursore e, infine, visualizziamo il messaggio utilizzando il comando println:
Alla fine non dimenticare di scrivere display.displayin modo che l'immagine venga visualizzata sullo schermo, altrimenti otterrai un vuoto.
Se hai fatto tutto correttamente, sui display apparirà un messaggio.
Ecco il CODICE Starting_with_Arduino_OLED.ino del nostro programma:
Ciao! Essendo un appassionato di elettronica amatoriale, sono sicuro che tutto ciò che facciamo - giocattoli elettronici, prodotti fatti in casa o grandi progetti - è tutto frutto di curiosità e pigrizia. La curiosità si sforza di comprendere e comprendere il vasto, l'ignoto, per capire come funziona lì, cosa fa, come si muove. E la pigrizia inventa qualcosa con cui inventarsi, per non alzarsi, per non avvicinarsi, per non sollevarsi, per non sporcarsi o per qualsiasi altra cosa importante.
Poiché vedere le informazioni è meglio che capire cosa sta per accadere nel nostro dispositivo, o è già accaduto, o sta accadendo, vorremo sicuramente ricevere queste informazioni più utili dai nostri microcontrollori, sensori o altri dispositivi. E in ogni caso voglio ricevere qualsiasi messaggio, come domande, avvisi, promemoria, emoticon, stelle, cuori e simili.
Per chi ha un desiderio simile, ecco una breve guida per collegare e testare display OLED piccoli ed economici.
Successivamente parleremo di uno dei modelli di display OLED ampiamente disponibili per i radioamatori, controllato dal chip SSD1306, con una dimensione dello schermo di 0,96 pollici e una risoluzione di 128 * 64 o 128 * 32 pixel. Questi display sono ideali per piccoli progetti radioamatoriali e progetti fatti in casa.
Passaggio 1: concetti di base
Lo collegheremo ad Arduino UNO/NANO e lo programmeremo anche tramite Arduino.
- L'OLED è un diodo organico a emissione di luce, ovvero un dispositivo semiconduttore costituito da composti organici che inizia a emettere luce quando viene attraversato da una corrente elettrica.
- ARDUINO è una piattaforma per la formazione e la building automation e i sistemi di robotica.
- ArduinoIDE - ambiente di sviluppo. Questo è un programma di programmazione Arduino gratuito.
- I2C – Circuiti Inter-Integrati, linea di comunicazione inter-chip.
- Sketch, ovvero codice, ovvero programma: terminologia Arduino.
Segui le istruzioni per capire come connettere e configurare correttamente il display OLED ad Arduino e come visualizzare un messaggio personalizzato sul suo display.
Facciamo tutto passo dopo passo.
Passaggio 2: accessori
Abbiamo solo bisogno di quattro cose:
- 1. Il display OLED stesso è 0,96” (puoi acquistarlo su Aliexpress o Ebay, è lungo, ma economico!).
- 2. Arduino UNO/Nano (stesso posto del display).
- 3. Fili di collegamento (ibid.).
- 4. Computer o laptop con ArduinoIDE installato.
In generale, acquistare parti per vari progetti su Aliexpress ed Ebay è una cosa molto interessante, mentre lavori su un progetto, le parti per un altro sono già in arrivo. La cosa principale è non dimenticare di effettuare un ordine.
Passaggio 3: collegamento dello schermo
Il display è controllato da un chip SSD1306, che supporta cinque protocolli di comunicazione, uno dei quali è I2C. I dati che utilizzano questo protocollo vengono trasmessi solo su due fili e meno fili sono presenti nel case, meglio è, quindi per noi è abbastanza adatto.Ma! Esistono moduli con protocollo SPI e anche con commutazione di protocollo, quindi fai attenzione quando acquisti questo modulo.
Perni utilizzati:
Display OLED - SCL/SCK (orologio) e SDA (dati), potenza “Più” (VCC) e potenza “Meno” (GND).
Perni utilizzati:
Arduino UNO - SCL/SCK su A5 e SSD su A4, potenza “Più” (+5V) e potenza “Meno” (GND).
Collegamento del display ad Arduino:
- Vcc-5V
- TERRA-TERRA
- SDA-A4
- SCL-A5
Passaggio 4: scanner I2C
Ogni dispositivo sul bus I2C ha un indirizzo esadecimale, non può essere modificato, è cablato, ogni produttore responsabile deve indicarlo da qualche parte sulla custodia o nelle istruzioni. Esistono moduli con interruttori e ponticelli che possono essere utilizzati per modificare l'indirizzo, ma... se i dispositivi sono ridicolmente economici, il produttore potrebbe non prendersi la briga di occuparsi di tale dettaglio, quindi dovrai determinarlo tu stesso.
In totale sul bus possono essere utilizzati fino a 127 indirizzi: 119 per dispositivi e 8 indirizzi di servizio. La comunicazione viene effettuata a questi indirizzi. Ce n'è uno principale, alias Maestro, e c'è uno schiavo, alias Schiavo: i Maestri chiedono, gli schiavi rispondono, tutto è semplice.
Poiché il nostro display OLED utilizza il protocollo di comunicazione I2C e l'indirizzo potrebbe non essere specificato, cercheremo di scoprire proprio questo indirizzo da soli.
Puoi farlo caricando un breve schizzo sulla tua scheda Arduino con l'OLED collegato. MA!
Non affrettarti a caricare subito lo schizzo su Arduino! Scarichiamo innanzitutto i “driver”, ovvero colleghiamo le librerie, e per fare questo andiamo subito allo “Step n°5”, per poi tornare indietro e proseguire.
Passaggio 4: Continua:
Scarica CODE Finder_I2C_Hex_Address.ino, caricalo su Arduino.
Apri “Port Monitor”, imposta la velocità su 9600 e se tutto è collegato correttamente, il programma mostrerà l'indirizzo del dispositivo, nel mio caso OLED con indirizzo 0x3F.
Passaggio 5: scarica e collega le librerie
Affinché tutto funzioni correttamente, e non devi reinventare la ruota, devi collegare un paio di librerie all'ambiente ArduinoIDE, vale a dire: ADAFRUIT GFX e ADAFRUIT SSD1306, sono necessarie affinché Arduino possa comunicare in modo indipendente con il display OLED.
È possibile includere queste librerie seguendo questi passaggi.
- 1. In ArduinoIDE, vai al menu Schizzo.
- 2. Seleziona "Includi librerie".
- 3.Seleziona "Gestisci librerie".
- 4. Trova ADAFRUIT GFX e installali.
- 5. Trova ADAFRUIT SSD1306 e installali.
Con le ultime versioni delle librerie, il mio display funzionava in modo storto, ciò potrebbe ovviamente essere dovuto alla curvatura delle mie mani, ma dopo aver installato le primissime versioni di queste librerie, tutto ha cominciato ad apparire liscio e bello. Per qualche ragione, mi vengono in mente le battute di Pushkin:
...e l'esperienza, figlia di errori difficili,
e geniale, amico dei paradossi.
Un altro modo per installare le librerie è trovare, scaricare e installare tu stesso queste librerie.
Per l'esempio di Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
Queste sono le stesse librerie Adafruit, ma librerie simili possono essere facilmente ricercate nei motori di ricerca, su richiesta di OLED I2C. Molti appassionati scrivono librerie “per se stessi” e poi le pubblicano sul web. Quale libreria utilizzare dipende da te.
Affinché il display possa visualizzare le lettere russe, sono necessarie anche librerie speciali, ma questo è un argomento separato per un articolo separato.
Dopo aver installato le librerie, puoi tornare al passaggio 4 e scoprire finalmente l'indirizzo esadecimale del tuo display.
Passaggio 6: test del display
Per verificare se tutto funziona come previsto, esegui l'esempio di test da ArduinoIDE.
Per questo:
Vai su FILE > ESEMPI > SSD 1306 > Seleziona 128x64 i2c
Se ricevi "Errore", prova a selezionare SSD 1306 > 128x32 i2c.
Se si verifica nuovamente l'errore, prova a modificare l'indirizzo I2C alla riga 61 del codice demo e sostituiscilo con l'indirizzo del display che hai determinato nel passaggio n. 4.
Se l'errore si ripresenta, puoi provare a modificare il file Adafruit_SSD1306.h, si trova nella cartella delle librerie Arduino.
Apri il file Adafruit_SSD1306.h in un editor di testo e trova le righe:
//#definisce SSD1306_128_64
#definire SSD1306_128_32
// #define SSD1306_96_16
Decommenta la riga:
#definire SSD1306_128_64.
Dovrebbe sembrare come questo:
#definire SSD1306_128_64
//#definisci SSD1306_128_32
// #define SSD1306_96_16
Se l'errore si ripresenta, è necessario verificare le connessioni corrette.
Una volta completato il download, sullo schermo vedrai un'animazione di prova, il che significa che hai configurato correttamente il tuo display OLED.
Quando ti è piaciuta molto questa animazione, puoi passare al passaggio successivo.
Passaggio 7: scrivi il tuo messaggio
Per scrivere il tuo messaggio, crea prima un nuovo schizzo nell'ambiente di programmazione ArduinoIDE.
Nell'intestazione includiamo 4 librerie:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Quindi scriviamo il protocollo di ripristino:
#definire OLED_RESET 4
Display Adafruit_SSD1306 (OLED_RESET);
In VOID SETUP indichiamo l'indirizzo esadecimale del nostro display 0x3C, che abbiamo appreso nello “Step n°4”.
Quindi, inizializziamo il display e lo cancelliamo:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
Successivamente, in VOID LOOP scriviamo il codice principale, cioè il nostro messaggio che vogliamo visualizzare sul display.
Per fare ciò, descriviamo la dimensione del testo, il colore del testo, la posizione del cursore e, infine, visualizziamo il messaggio utilizzando il comando println:
display.setTextSize(2);
display.setTextColor(BIANCO);
display.setCursor(0,0);
display.println("Ben fatto!");
display.display();
Alla fine non dimenticare di scrivere display.displayin modo che l'immagine venga visualizzata sullo schermo, altrimenti otterrai un vuoto.
Se hai fatto tutto correttamente, sui display apparirà un messaggio.
Ecco il CODICE Starting_with_Arduino_OLED.ino del nostro programma:
codice.zip
[946 b] (download: 4908)
Masterclass simili
Particolarmente interessante
Commenti (10)