Kaip prijungti OLED I2C ekraną prie ARDUINO

Įvadas: OLED I2C ekrano 128*64 / 128*32 įvadas.
Kaip prijungti OLED I2C ekraną prie ARDUINO

Sveiki! Būdamas mėgėjiškas elektronikos entuziastas, esu tikras, kad viskas, ką darome – elektroniniai žaislai – naminiai gaminiai ar dideli projektai – viskas iš smalsumo ir tinginystės. Smalsumas stengiasi suprasti ir suvokti didžiulį, nežinomą, išsiaiškinti, kaip jis ten veikia, ką veikia, kaip juda. O tinginystė sugalvoja ką nors sugalvoti, kad nesikeltų, nepriartėtų, nepakeltų, nesusiteptų ar dar ką nors svarbaus.

Kadangi informaciją matyti geriau nei suprasti, kas mūsų įrenginyje įvyks, jau įvyko, ar vyksta, mes tikrai norėsime gauti šią naudingiausią informaciją iš savo mikrovaldiklių, jutiklių ar kitų įrenginių. Ir bet kuriuo atveju noriu gauti bet kokius pranešimus, tokius kaip klausimai, įspėjimai, priminimai, jaustukai, žvaigždutės, širdelės ir panašiai.

Tiems, kurie taip pat nori panašaus, pateikiame trumpą mažų ir nebrangių OLED ekranų prijungimo ir išbandymo vadovą.
Toliau kalbėsime apie vieną iš radijo mėgėjams plačiai prieinamų OLED ekranų modelių, valdomų SSD1306 lustu, kurio ekrano dydis yra 0,96 colio ir 128 * 64 arba 128 * 32 pikselių skiriamoji geba. Šie ekranai idealiai tinka mažiems mėgėjų radijo projektams ir namų projektams.
Kaip prijungti OLED I2C ekraną prie ARDUINO

1 veiksmas: pagrindinės sąvokos


Sujungsime jį su Arduino UNO / NANO, taip pat programuosime per Arduino.
  • OLED yra organinis šviesos diodas, t.y. iš organinių junginių pagamintas puslaidininkinis įtaisas, kuris pradeda skleisti šviesą, kai per jį praeina elektros srovė.
  • ARDUINO yra platforma, skirta mokymams ir pastatų automatikos bei robotikos sistemoms.
  • ArduinoIDE – kūrimo aplinka. Tai nemokama Arduino programavimo programa.
  • I2C – Inter-Integrated Circuits, lustų ryšio linija.
  • Eskizas, dar žinomas kaip kodas, dar žinomas kaip programa - Arduino terminija.

Vykdykite instrukcijas, kad suprastumėte, kaip tinkamai prijungti ir sukonfigūruoti OLED ekraną prie „Arduino“ ir kaip ekrane parodyti pasirinktinį pranešimą.
Viską darome žingsnis po žingsnio.

2 veiksmas: priedai


Mums reikia tik keturių dalykų:
  • 1. Pats OLED ekranas yra 0,96 colio (galite nusipirkti Aliexpress arba Ebay, jis ilgas, bet pigus!).
  • 2. Arduino UNO / Nano (toje pačioje vietoje kaip ekranas).
  • 3. Jungiamieji laidai (ten pat).
  • 4. Kompiuteris arba nešiojamas kompiuteris su įdiegtu ArduinoIDE.

Kaip prijungti OLED I2C ekraną prie ARDUINO

Apskritai pirkti detales įvairiems projektams Aliexpress ir Ebay yra labai šaunus dalykas, kol dirbi su vienu projektu, kitos dalys jau yra pakeliui. Svarbiausia nepamiršti pateikti užsakymą.

3 veiksmas: ekrano prijungimas


Ekranas valdomas SSD1306 lustu, kuris palaiko penkis ryšio protokolus, iš kurių vienas yra I2C. Duomenys, naudojant šį protokolą, perduodami tik dviem laidais, o kuo mažiau laidų korpuse, tuo geriau, todėl mums tinka visai neblogai.Bet! Yra modulių su SPI protokolu ir netgi su protokolo perjungimu, todėl būkite atsargūs pirkdami šį modulį.
Kaip prijungti OLED I2C ekraną prie ARDUINO

Naudoti kaiščiai:
OLED ekranas - SCL/SCK (laikrodis) ir SDA (duomenys), "Plus" galia (VCC) ir "Minus" galia (GND).
Kaip prijungti OLED I2C ekraną prie ARDUINO

Naudoti kaiščiai:
Arduino UNO - SCL/SCK ant A5 ir SSD ant A4, „plius“ galia (+5 V) ir „Minus“ galia (GND).
Ekrano prijungimas prie Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Kaip prijungti OLED I2C ekraną prie ARDUINO

4 veiksmas: I2C skaitytuvas


Kiekvienas įrenginys I2C magistrale turi šešioliktainį adresą, jo keisti negalima, yra laidinis, kiekvienas atsakingas gamintojas turi jį nurodyti kur nors ant korpuso ar instrukcijose. Yra modulių su jungikliais ir trumpikliais, kuriais galima keisti adresą, bet... jei įrenginiai pigūs iki gėdos, tai gamintojas gali nepasivargti su tokia smulkmena, tad teks nustatykite patys.

Iš viso autobuse galima naudoti iki 127 adresų – 119 įrenginių ir 8 aptarnavimo adresus. Bendravimas vyksta šiais adresais. Yra pagrindinis, dar žinomas kaip Šeimininkas, ir yra vergas, dar žinomas kaip Vergas – klausia šeimininkai, atsako vergai, viskas paprasta.
Kadangi mūsų OLED ekrane naudojamas I2C ryšio protokolas, o adresas gali būti nenurodytas, pabandysime patys išsiaiškinti būtent šį adresą.

Tai galite padaryti įkeldami trumpą eskizą į savo Arduino plokštę su prijungtu OLED. BET!
Neskubėkite iš karto įkelti eskizo į Arduino! Pirmiausia parsisiunčiame „tvarkykles“, t.y. sujungkime bibliotekas ir, kad tai padarytume, iškart pereisime prie „žingsnio Nr. 5“, o tada grįšime ir tęsime.

4 veiksmas: tęsinys:


Atsisiųskite CODE Finder_I2C_Hex_Address.ino, įkelkite į Arduino.
Atidarykite "Port Monitor", nustatykite greitį iki 9600 ir jei viskas prijungta teisingai, programa parodys įrenginio adresą, mano atveju OLED su adresu 0x3F.
Kaip prijungti OLED I2C ekraną prie ARDUINO

5 veiksmas: atsisiųskite ir prijunkite bibliotekas


Kad viskas veiktų tinkamai ir nereikėtų išradinėti dviračio iš naujo, prie ArduinoIDE aplinkos reikia prijungti porą bibliotekų, būtent: ADAFRUIT GFX ir ADAFRUIT SSD1306, jos būtinos, kad Arduino galėtų savarankiškai bendrauti su OLED ekranu.
Šias bibliotekas galite įtraukti atlikdami šiuos veiksmus.
  • 1. ArduinoIDE eikite į meniu Sketch.
  • 2. Pasirinkite „Įtraukti bibliotekas“.
  • 3. Pasirinkite „Tvarkyti bibliotekas“.
  • 4. Suraskite ADAFRUIT GFX ir įdiekite juos.
  • 5. Suraskite ADAFRUIT SSD1306 ir įdiekite juos.

Naudojant naujausias bibliotekų versijas, mano ekranas veikė kreivai, žinoma, tai gali būti dėl mano rankų kreivumo, tačiau įdiegus pačias pirmąsias šių bibliotekų versijas, viskas pradėjo atrodyti sklandžiai ir gražiai. Kažkodėl į galvą ateina Puškino eilutės:
...ir patirtis, sunkių klaidų sūnus,
ir genijus, paradoksų draugas.

Kitas būdas įdiegti bibliotekas – pačiam susirasti, atsisiųsti ir įdiegti šias bibliotekas.
Github pavyzdys:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Tai yra tos pačios „Adafruit“ bibliotekos, tačiau OLED I2C prašymu panašių bibliotekų galima lengvai ieškoti paieškos sistemose. Daugelis entuziastų rašo bibliotekas „sau“ ir skelbia jas internete. Kurią biblioteką naudoti, priklauso nuo jūsų.
Kad ekrane būtų rodomos rusiškos raidės, reikalingos ir specialios bibliotekos, tačiau tai atskira tema atskiram straipsniui.
Įdiegę bibliotekas galite grįžti į 4 veiksmą ir galiausiai sužinoti šešioliktainį ekrano adresą.

6 veiksmas: ekrano tikrinimas


Norėdami patikrinti, ar viskas veikia taip, kaip tikėtasi, paleiskite bandomąjį pavyzdį iš ArduinoIDE.
Už tai:
Eikite į FILE > EXAMPLES > SSD 1306 > Pasirinkite 128x64 i2c
Jei gaunate pranešimą „Klaida“, pabandykite pasirinkti SSD 1306 > 128x32 i2c.
Jei „Klaida“ pasikartos, pabandykite pakeisti I2C adresą demonstracinio kodo 61 eilutėje ir pakeiskite jį ekrano adresu, kurį nustatėte atlikdami 4 veiksmą.
Jei klaida pasikartos, galite pabandyti redaguoti failą Adafruit_SSD1306.h, jis yra Arduino bibliotekų aplanke.
Kaip prijungti OLED I2C ekraną prie ARDUINO

Atidarykite failą Adafruit_SSD1306.h teksto rengyklėje ir raskite eilutes:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Atšaukti eilutės komentarą:
#define SSD1306_128_64. 

Tai turėtų atrodyti taip:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Jei klaida kartojasi, turite patikrinti teisingas jungtis.
Kai atsisiuntimas bus baigtas, ekrane pamatysite bandomąją animaciją, o tai reiškia, kad sėkmingai nustatėte OLED ekraną.

Kai jums visiškai patiko ši animacija, galite pereiti prie kito žingsnio.

7 veiksmas: parašykite savo pranešimą


Norėdami parašyti savo pranešimą, pirmiausia sukurkite naują eskizą ArduinoIDE programavimo aplinkoje.
Antraštėje įtraukiame 4 bibliotekas:
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Tada parašome atstatymo protokolą:
#define OLED_RESET 4

Adafruit_SSD1306 ekranas (OLED_RESET);

VOID SETUP rodome šešioliktainį savo ekrano adresą 0x3C, kurį sužinojome atlikdami 4 veiksmą.
Tada inicijuojame ekraną ir jį išvalome:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

Tada VOID LOOP įrašome pagrindinį kodą, tai yra mūsų pranešimą, kurį norime parodyti ekrane.
Norėdami tai padaryti, aprašome teksto dydį, teksto spalvą, žymeklio padėtį ir galiausiai parodome pranešimą naudodami komandą println:
display.setTextSize(2);

display.setTextColor(BALTAS);

display.setCursor(0,0);

display.println("Gerai padaryta!");

display.display();

Pabaigoje nepamirškite parašyti ekranas.parodymaskad vaizdas būtų rodomas ekrane, kitaip gausite tuštumą.
Jei viską padarėte teisingai, ekranuose pasirodys pranešimas.
Kaip prijungti OLED I2C ekraną prie ARDUINO

Štai mūsų programos Starting_with_Arduino_OLED.ino KODAS:
kodas.zip [946 b] (atsisiuntimai: 4908)
grįžk
komentuoti
  • varlytėšypsokisjuokdamasisskaistalaišypsenėlėatsipalaidavęs atsipalaidavęsišsišiepti
    širdis_akysbučiuojantis_širdisbučiuojantis_užmerktas_akisparaudusipalengvėjopatenkintasšypsnys
    mirktelėtiužstrigęs_liežuvis_mirksi_akisiškištas liežuvis užmerktos akysišsišiepęsbučiuojasiįstrigo_liežuvismiega
    neramussusiraukęsskausmingasišsižiokgrimasassutrikęsnutilo
    be išraiškosnelinksmasprakaito_šypsenaprakaitasnusivylęs_palengvėjęspavargęspasyvus
    nusivylęssutrikęsbaisušaltas prakaitasištvertiverktiraudoti
    džiaugsmasapstulbintasrėktipavargęs_veidelispiktaspyktistriumfas
    mieguistasskanukaukėakiniai nuo saulėsgalvos svaigimasimpbesišypsantis_imp
    neutralus_veidasno_mouthnekaltas
4 minus vienas =
Komentarai (10)
  1. Tatoshka
    #1 Tatoshka Svečiai 2018 m. lapkričio 14 d. 21:18 val
    9
    Aciu, drauge! Tai mano pirmasis įkeltas eskizas ir įvadas į Arduino. Be mirksėjimo Blink))
  2. Ališeris
    #2 Ališeris Svečiai 2019 m. liepos 28 d. 19:35 val
    8
    Kur galiu atsisiųsti šį Finder_I2C_Hex_Address.ino kodą?
    1. Al
      #3 Al Svečiai 2019 m. rugpjūčio 14 d. 12.51 val
      11
      po paveikslėliu yra nuoroda "Čia yra mūsų programos Starting_with_Arduino_OLED.ino KODAS:"
  3. Aleksas
    #4 Aleksas Svečiai 2019 m. lapkričio 13 d. 20:01
    9
    Ne VOID SETUP arba VOID LOOP, o void setup (); ir void loop(); C kalba yra didžiosios ir mažosios raidės.
  4. Svečias Aleksas
    #5 Svečias Aleksas Svečiai 2020 m. sausio 14 d. 03:00 val
    6
    >4 veiksmas: ... mano atveju OLED su adresu 0x3F.
    ir tada
    >Veidinėje VOID SETUP... mūsų ekrano adresas 0x3C, kurio išmokome „4 veiksme“.
    Kaip tai?
  5. Svečias Aleksas
    #6 Svečias Aleksas Svečiai 2020 m. sausio 14 d. 03:10 val
    9
    Ačiū! Viską dariau pagal instrukcijas ant Atmega328 Pro Mini ir patikrinau pirktą 0.96". Abu pasirodė veikiantys. Arduino IDE 1.8.10
  6. Skaitytojas
    #7 Skaitytojas Svečiai 2020 m. kovo 3 d. 21:50 val
    4
    Ačiū, pamokoma, viskas veikia!
  7. Ildaras Ksafizovas
    #8 Ildaras Ksafizovas Svečiai 2020 m. balandžio 19 d. 19:15 val
    5
    Aš turiu klausimą. Yra 2 OLED ekranai, identiški jūsų nuotraukoje (antra nuotrauka). Negaliu suprasti, kokius trumpiklius naudoti norint pakeisti adresą?
  8. Svečias Maksimas
    #9 Svečias Maksimas Svečiai 2020 m. spalio 31 d. 18.53 val
    11
    Ačiū už straipsnį.Bet turiu problemą: raidžių pikseliai šviečia kas antrą, o šriftas didesnis nei turėtų būti. Matyt, „Arduino“ neatpažįsta ekrano skiriamosios gebos. Jei kas nors turi tą pačią problemą, štai kaip ją išspręsti:
    #define SCREEN_WIDTH 128 // OLED ekrano plotis, pikseliais
    #define SCREEN_HEIGHT 64 // OLED ekrano aukštis, pikseliais
    „Adafruit_SSD1306“ ekranas (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitrijus
    #10 Dmitrijus Svečiai 2021 m. gegužės 9 d. 19.35 val
    7
    Ačiū! Ne viskas pavyko iš karto. Iš tiesų, adresas ekrane buvo 128*64, o ne 0x3D, o 0x3C. Ir aš pertvarkiau bibliotekas versijų „iš vidurio“. Ne naujausias, nes... buvo pranešimas apie kritinę atminties vertę (turiu Arduino Uno).