Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Johdanto: OLED I2C -näytön esittely 128*64 / 128*32.
Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Hei! Amatöörielektroniikan ystävänä olen varma, että kaikki mitä teemme - elektroniset lelut - kotitekoiset tuotteet tai suuret projektit - on kaikki uteliaisuudesta ja laiskuudesta. Uteliaisuus pyrkii ymmärtämään ja ymmärtämään valtavaa, tuntematonta, ottamaan selvää, miten se siellä toimii, mitä se tekee, miten se liikkuu. Ja laiskuus keksii jotain, jottei nouse ylös, ei lähesty, ei nosta, ei likaannu tai mitään muuta tärkeää.

Koska tietojen näkeminen on parempi kuin selvittää, mitä laitteellamme tapahtuu, mitä on jo tapahtunut tai tapahtuu, haluamme ehdottomasti saada tämän hyödyllisimmän tiedon mikrokontrollereiltamme, antureiltamme tai muilta laitteiltamme. Ja joka tapauksessa haluan vastaanottaa viestejä, kuten kysymyksiä, varoituksia, muistutuksia, hymiöitä, tähtiä, sydämiä ja vastaavia.

Niille, joilla on myös samanlainen toive, tässä on lyhyt opas pienten ja edullisien OLED-näyttöjen liittämiseen ja testaamiseen.
Seuraavaksi puhumme yhdestä radioamatööreille yleisesti saatavilla olevista OLED-näyttömalleista, jota ohjaa SSD1306-siru, jonka näytön koko on 0,96 tuumaa ja resoluutio 128 * 64 tai 128 * 32 pikseliä. Nämä näytöt ovat ihanteellisia pieniin radioamatöörimalleihin ja kotitekoisiin projekteihin.
Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Vaihe 1: Peruskäsitteet


Yhdistämme sen Arduino UNO / NANOon ja ohjelmoimme sen myös Arduinon kautta.
  • OLED on orgaaninen valoa emittoiva diodi eli orgaanisista yhdisteistä valmistettu puolijohdelaite, joka alkaa säteillä valoa, kun sähkövirta kulkee sen läpi.
  • ARDUINO on alusta automaatio- ja robotiikkajärjestelmien koulutukseen ja rakentamiseen.
  • ArduinoIDE - kehitysympäristö. Tämä on ilmainen Arduino-ohjelmointiohjelma.
  • I2C – Inter-Integrated Circuits, sirujen välinen viestintälinja.
  • Sketch, eli koodi, eli ohjelma - Arduino-terminologia.

Seuraa ohjeita ymmärtääksesi, kuinka OLED-näyttö liitetään oikein ja konfiguroidaan Arduinoon ja kuinka mukautettu viesti näytetään sen näytössä.
Teemme kaiken askel askeleelta.

Vaihe 2: Lisävarusteet


Tarvitsemme vain neljä asiaa:
  • 1. Itse OLED-näyttö on 0,96 tuumaa (voit ostaa sen Aliexpressistä tai Ebaysta, se on pitkä, mutta halpa!).
  • 2. Arduino UNO / Nano (sama paikka kuin näyttö).
  • 3. Kytkentäjohdot (ibid.).
  • 4. Tietokone tai kannettava ArduinoIDE asennettuna.

Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Yleensä osien ostaminen eri projekteihin Aliexpressistä ja Ebaysta on erittäin siistiä, kun työskentelet yhden projektin parissa, toisen osia on jo tulossa. Tärkeintä ei ole unohtaa tilauksen tekemistä.

Vaihe 3: Näytön liittäminen


Näyttöä ohjaa SSD1306-siru, joka tukee viittä tiedonsiirtoprotokollaa, joista yksi on I2C. Tätä protokollaa käyttävä data välitetään vain kahdella johdolla, ja mitä vähemmän johtoja kotelossa on, sitä parempi, joten se sopii meille varsin hyvin.Mutta! On moduuleja SPI-protokollalla ja jopa protokollan vaihtamisella, joten ole varovainen ostaessasi tätä moduulia.
Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Käytetyt pinssit:
OLED-näyttö - SCL/SCK (kello) ja SDA (data), plus-teho (VCC) ja miinusteho (GND).
Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Käytetyt pinssit:
Arduino UNO - SCL/SCK A5:llä ja SSD A4:llä, "Plus" teho (+5V) ja "miinus" teho (GND).
Näytön liittäminen Arduinoon:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Vaihe 4: I2C-skanneri


Jokaisella I2C-väylän laitteella on heksadesimaaliosoite, sitä ei voi muuttaa, se on kiinteästi kytketty, jokaisen vastuullisen valmistajan on ilmoitettava se jossain kotelossa tai ohjeissa. On olemassa moduuleja, joissa on kytkimet ja jumpperit, joilla voi vaihtaa osoitetta, mutta... jos laitteet ovat naurettavan halpoja, niin valmistaja ei välttämättä vaivaudu käsittelemään sellaista yksityiskohtaa, joten sinun on määritettävä se itse.

Yhteensä väylässä voidaan käyttää jopa 127 osoitetta - 119 laitteille ja 8 palveluosoitetta. Yhteydenpito tapahtuu näissä osoitteissa. On pää, eli isäntä, ja on orja, alias Slave - Mestarit kysyvät, orjat vastaavat, kaikki on yksinkertaista.
Koska OLED-näyttömme käyttää I2C-tiedonsiirtoprotokollaa ja osoitetta ei välttämättä ole määritetty, yritämme selvittää tämän osoitteen itse.

Voit tehdä tämän lataamalla lyhyen luonnoksen Arduino-levyllesi, kun OLED on kytketty. MUTTA!
Älä kiirehdi lataamaan luonnosta Arduinoon heti! Ladataan ensin "ajurit", ts. Yhdistämme kirjastot ja siirrymme välittömästi vaiheeseen 5 ja palaamme sitten jatkamaan.

Vaihe 4: Jatkuu:


Lataa CODE Finder_I2C_Hex_Address.ino, lataa Arduinoon.
Avaa "Port Monitor", aseta nopeus 9600:aan ja jos kaikki on kytketty oikein, ohjelma näyttää laitteen osoitteen, minun tapauksessani OLED osoitteella 0x3F.
Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Vaihe 5: Lataa ja yhdistä kirjastot


Jotta kaikki toimisi oikein ja sinun ei tarvitse keksiä pyörää uudelleen, sinun on yhdistettävä muutama kirjasto ArduinoIDE-ympäristöön, nimittäin: ADAFRUIT GFX ja ADAFRUIT SSD1306, ne ovat välttämättömiä, jotta Arduino voi kommunikoida itsenäisesti OLED-näytön kanssa.
Voit sisällyttää nämä kirjastot noudattamalla näitä ohjeita.
  • 1. Siirry ArduinoIDEssa Sketch-valikkoon.
  • 2. Valitse "Sisällytä kirjastot".
  • 3. Valitse "Hallinnoi kirjastoja".
  • 4. Etsi ADAFRUIT GFX ja asenna ne.
  • 5. Etsi ADAFRUIT SSD1306 ja asenna ne.

Kirjastojen uusimmissa versioissa näyttöni toimi vinosti, tämä voi tietysti johtua käsieni kaarevuudesta, mutta kun asensin ensimmäiset versiot näistä kirjastoista, kaikki alkoi näyttää sileältä ja kauniilta. Jostain syystä tulee mieleen Pushkinin lauseet:
...ja kokemus, vaikeiden virheiden poika,
ja nero, paradoksien ystävä.

Toinen tapa asentaa kirjastoja on etsiä, ladata ja asentaa nämä kirjastot itse.
Githubin esimerkki:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Nämä ovat samoja Adafruit-kirjastoja, mutta samankaltaisia ​​kirjastoja voidaan helposti etsiä hakukoneilla OLED I2C:n pyynnöstä. Monet harrastajat kirjoittavat kirjastoja "itsekseen" ja julkaisevat ne sitten verkkoon. Valitset itse, mitä kirjastoa haluat käyttää.
Jotta näyttö näyttäisi venäläisiä kirjaimia, tarvitaan myös erikoiskirjastoja, mutta tämä on erillinen aihe erilliselle artikkelille.
Kun kirjastot on asennettu, voit palata vaiheeseen 4 ja selvittää lopuksi näytön heksadesimaaliosoitteen.

Vaihe 6: Näytön testaus


Tarkista, toimiiko kaikki odotetulla tavalla, suorittamalla testiesimerkki ArduinoIDEsta.
Tätä varten:
Siirry kohtaan TIEDOSTO > ESIMERKIT > SSD 1306 > Valitse 128x64 i2c
Jos saat "Error"-ilmoituksen, kokeile valita SSD 1306 > 128x32 i2c.
Jos "Error" toistuu, yritä muuttaa I2C-osoitetta esittelykoodin rivillä 61 ja korvaa se näytön osoitteella, jonka määritit vaiheessa 4.
Jos virhe toistuu, voit yrittää muokata Adafruit_SSD1306.h-tiedostoa, joka sijaitsee Arduino-kirjastot-kansiossa.
Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Avaa Adafruit_SSD1306.h-tiedosto tekstieditorissa ja etsi rivit:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Poista rivin kommentti:
#define SSD1306_128_64. 

Sen pitäisi näyttää tältä:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Jos virhe toistuu, sinun on tarkistettava oikeat liitännät.
Kun lataus on valmis, näytöllä näkyy testianimaatio, mikä tarkoittaa, että olet onnistuneesti määrittänyt OLED-näytön.

Kun olet täysin nauttinut tästä animaatiosta, voit siirtyä seuraavaan vaiheeseen.

Vaihe 7: Kirjoita oma viestisi


Jos haluat kirjoittaa oman viestin, luo ensin uusi luonnos ArduinoIDE-ohjelmointiympäristössä.
Otsikossa on 4 kirjastoa:
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Sitten kirjoitamme nollausprotokollan:
#define OLED_RESET 4

Adafruit_SSD1306-näyttö (OLED_RESET);

VOID SETUP -kohdassa ilmoitamme näyttömme heksadesimaaliosoitteen 0x3C, jonka opimme "Vaiheessa nro 4".
Sitten alustamme näytön ja tyhjennämme sen:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearNäyttö();

Seuraavaksi VOID LOOPiin kirjoitamme pääkoodin, eli viestimme, jonka haluamme näyttää näytöllä.
Tätä varten kuvaamme tekstin koon, tekstin värin, kohdistimen sijainnin ja lopuksi näytämme viestin println-komennolla:
display.setTextSize(2);

display.setTextColor(VALKOINEN);

display.setCursor(0,0);

display.println("Hyvin tehty!");

näyttö.näyttö();

Lopuksi älä unohda kirjoittaa näyttö.näyttöniin, että kuva näkyy näytöllä, muuten saat tyhjiön.
Jos teit kaiken oikein, näyttöön tulee viesti.
Kuinka yhdistää OLED I2C -näyttö ARDUINOON

Tässä on ohjelmamme Starting_with_Arduino_OLED.ino KOODI:
code.zip [946 b] (lataukset: 4908)
Kommentti
  • rusettihymynauraenpunastuahymiörento rentovirnistää
    sydän_silmätsuuteleva sydänsuudella suljettuja silmiäpunastuneenahelpottunuttyytyväinenvirne
    silmäniskujumissa_kielen_silmäysjumissa_kielen_suljetut_silmätvirnisteleesuudellajumissa_kielinukkumassa
    huolestunutrypistää kulmiaanahdistunutavaa suuirvistäähämmentynythiljaa
    ilmeetönhuvittumatonhiki_hymyhikipettynyt_ helpottunutväsynytpassiivinen
    pettynythämmentynytpelottavakylmä hikisinnikkäästiitkeänyyhkyttää
    ilohämmästynythuutaaväsynyt_naamavihainenraivoavoitto
    uneliasnamnaamioaurinkolasitdizzy_faceimphymyilevä_imp
    neutraali_kasvotno_mouthviaton
4 miinus yksi =
Kommentit (10)
  1. Tatoshka
    #1 Tatoshka Vieraita 14. marraskuuta 2018 klo 21.18
    9
    Kiitos ystävä! Tämä on ensimmäinen lataamani luonnos ja johdatus Arduinoon. Lukuun ottamatta vilkkumista Blink))
  2. Alisher
    #2 Alisher Vieraita 28. heinäkuuta 2019 klo 19.35
    8
    Mistä voin ladata tämän Finder_I2C_Hex_Address.ino-koodin?
    1. Al
      #3 Al Vieraita 14. elokuuta 2019 klo 12:51
      11
      kuvan alla on linkki "Tässä on ohjelmamme Starting_with_Arduino_OLED.ino KOODI:"
  3. Alex
    #4 Alex Vieraita 13.11.2019 klo 20.01
    9
    Ei VOID SETUP tai VOID LOOP, vaan void setup(); ja void loop(); C-kieli on isot ja pienet kirjaimet erotteleva kieli.
  4. Vieraana Alex
    #5 Vieraana Alex Vieraita 14. tammikuuta 2020 klo 03.00
    6
    >Vaihe 4: ... minun tapauksessani OLED osoitteella 0x3F.
    ja sitten
    >VOID SETUPissa... näyttömme osoite 0x3C, jonka opimme "Vaiheessa #4".
    Miten on, että?
  5. Vieraana Alex
    #6 Vieraana Alex Vieraita 14. tammikuuta 2020 klo 3.10
    9
    Kiitos! Tein kaiken Atmega328 Pro Minin ohjeiden mukaan ja tarkistin ostetun 0.96". Molemmat osoittautuivat toimiviksi. Arduino IDE 1.8.10
  6. Lukija
    #7 Lukija Vieraita 3. maaliskuuta 2020 klo 21.50
    4
    Kiitos, opettavaista, kaikki toimii!
  7. Ildar Xafizov
    #8 Ildar Xafizov Vieraita 19.4.2020 klo 19.15
    5
    Minulla on kysymys. Valokuvassasi on 2 OLED-näyttöä, jotka ovat identtisiä (toinen kuva). En ymmärrä, millä jumpperilla osoitteen vaihtamiseen pitäisi käyttää?
  8. Vieraana Maxim
    #9 Vieraana Maxim Vieraita 31.10.2020 klo 18.53
    11
    Kiitos artikkelista.Mutta minulla on ongelma: kirjainten pikselit hehkuvat joka toinen ja fontti on suurempi kuin sen pitäisi olla. Ilmeisesti Arduino ei tunnista näytön resoluutiota. Jos jollain on sama ongelma, voit ratkaista sen seuraavasti:
    #define SCREEN_WIDTH 128 // OLED-näytön leveys pikseleinä
    #define SCREEN_HEIGHT 64 // OLED-näytön korkeus pikseleinä
    Adafruit_SSD1306-näyttö (KUVARUUTU_LEVEYS, NÄYTÖN_KORKEUS, &lanka, OLED_RESET);
  9. Dmitri
    #10 Dmitri Vieraita 9. toukokuuta 2021 klo 19.35
    7
    Kiitos! Kaikki ei sujunut heti. Todellakin, näytön osoite oli 128*64, ei 0x3D, vaan 0x3C. Ja järjestin kirjastot uudelleen versioiden "keskeltä". Ei uusin, koska... siellä oli viesti muistin kriittisestä arvosta (minulla on Arduino Uno).