Come collegare il display OLED I2C ad ARDUINO

Introduzione: Introduzione al display OLED I2C 128*64/128*32.
Come collegare il display OLED I2C ad ARDUINO

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.
Come collegare il display OLED I2C ad ARDUINO

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.

Come collegare il display OLED I2C ad ARDUINO

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.
Come collegare il display OLED I2C ad ARDUINO

Perni utilizzati:
Display OLED - SCL/SCK (orologio) e SDA (dati), potenza “Più” (VCC) e potenza “Meno” (GND).
Come collegare il display OLED I2C ad ARDUINO

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

Come collegare il display OLED I2C ad ARDUINO

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.
Come collegare il display OLED I2C ad ARDUINO

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.
Come collegare il display OLED I2C ad 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.
Come collegare il display OLED I2C ad ARDUINO

Ecco il CODICE Starting_with_Arduino_OLED.ino del nostro programma:
codice.zip [946 b] (download: 4908)
ritorno
Commento
  • Papillonsorrisoridendoarrossirefaccinarilassato rilassatosorridi
    cuore_occhibaciare_cuorebaciare_occhi_chiusiarrossatosollevatosoddisfattolargo sorriso
    ammiccamentobloccato_fuori_lingua_occhio_ammiccantelingua_bloccata_occhi_chiusisorridendobaciarsilingua_bloccatadormire
    preoccupatoaccigliatoangosciatobocca apertafacendo una smorfiaconfusosilenzioso
    inespressivosenza divertimentosudore_sorrisosudoredeluso_sollevatostancopassivo
    delusoconfusopaurosodolce freddoperseveraregridaresinghiozzare
    gioiastupitogridostanco_facciaarrabbiatorabbiatrionfo
    assonnatognammascheraocchiali da solevertigini_facciadiavolettosorridente_imp
    faccia_neutraniente_boccainnocente
4 meno uno =
Commenti (10)
  1. Tatoshka
    #1 Tatoshka Ospiti 14 novembre 2018 21:18
    9
    Grazie amico! Questo è il mio primo schizzo caricato e la mia introduzione ad Arduino. A parte lampeggiare Blink))
  2. Alisher
    #2 Alisher Ospiti 28 luglio 2019 19:35
    8
    Dove posso scaricare questo codice Finder_I2C_Hex_Address.ino?
    1. Al
      #3 Al Ospiti 14 agosto 2019 12:51
      11
      sotto l'immagine c'è il link "Ecco il CODICE Starting_with_Arduino_OLED.ino del nostro programma:"
  3. Alex
    #4 Alex Ospiti 13 novembre 2019 20:01
    9
    Non VOID SETUP o VOID LOOP, ma void setup(); e void loop(); Il linguaggio C è un linguaggio con distinzione tra maiuscole e minuscole.
  4. Ospite Alessio
    #5 Ospite Alessio Ospiti 14 gennaio 2020 03:00
    6
    >Passaggio 4: ... nel mio caso OLED con indirizzo 0x3F.
    poi
    >In VOID SETUP... l'indirizzo del nostro display 0x3C, che abbiamo imparato nel "Passaggio n. 4".
    Com'è?
  5. Ospite Alessio
    #6 Ospite Alessio Ospiti 14 gennaio 2020 03:10
    9
    Grazie! Ho fatto tutto secondo le istruzioni sull'Atmega328 Pro Mini e ho controllato lo 0,96" acquistato. Entrambi si sono rivelati funzionanti. Arduino IDE 1.8.10
  6. Lettore
    #7 Lettore Ospiti 3 marzo 2020 21:50
    4
    Grazie, istruttivo, funziona tutto!
  7. Ildar Xafizov
    #8 Ildar Xafizov Ospiti 19 aprile 2020 19:15
    5
    Ho una domanda. Nella foto sono presenti 2 display OLED identici al vostro (seconda foto). Non riesco a capire quali jumper utilizzare per cambiare indirizzo?
  8. Ospite Massimo
    #9 Ospite Massimo Ospiti 31 ottobre 2020 18:53
    11
    Grazie per l'articoloMa ho un problema: i pixel nelle lettere si illuminano a vicenda e il carattere è più grande di quanto dovrebbe essere. Apparentemente Arduino non riconosce la risoluzione dello schermo. Se qualcuno ha lo stesso problema, ecco come risolverlo:
    #define SCREEN_WIDTH 128 // Larghezza del display OLED, in pixel
    #define SCREEN_HEIGHT 64 // Altezza del display OLED, in pixel
    Display Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitrij
    #10 Dmitrij Ospiti 9 maggio 2021 19:35
    7
    Grazie! Non tutto ha funzionato subito. Infatti l'indirizzo sul display era 128*64, non 0x3D, ma 0x3C. E ho riorganizzato le Librerie “dal centro” delle versioni. Non l'ultimo, perché... c'era un messaggio sul valore critico della memoria (ho un Arduino Uno).