Paano ikonekta ang OLED I2C display sa ARDUINO

Panimula: Panimula sa OLED I2C display 128*64 / 128*32.
Paano ikonekta ang OLED I2C display sa ARDUINO

Kamusta! Bilang isang baguhang mahilig sa electronics, sigurado ako na lahat ng ginagawa natin - mga electronic na laruan - mga produktong gawang bahay, o malalaking proyekto - ay dahil sa curiosity at katamaran. Ang pagkamausisa ay nagsisikap na maunawaan at maunawaan ang malawak, hindi alam, upang malaman kung paano ito gumagana doon, kung ano ang ginagawa nito, kung paano ito gumagalaw. At ang katamaran ay nag-iimbento ng kung ano-ano, para hindi bumangon, hindi lapitan, hindi para buhatin, hindi madumihan o kung ano pang importante.

Dahil ang pagtingin sa impormasyon ay mas mahusay kaysa sa pag-alam kung ano ang malapit nang mangyari sa aming device, o nangyari na, o nangyayari, tiyak na gusto naming matanggap ang pinakakapaki-pakinabang na impormasyong ito mula sa aming mga microcontroller, sensor, o iba pang device. At sa anumang kaso, gusto kong makatanggap ng anumang mga mensahe, tulad ng mga tanong, babala, paalala, emoticon, bituin, puso, at iba pa.

Para sa mga may katulad din na pagnanais, narito ang isang maikling gabay sa pagkonekta at pagsubok sa maliliit at murang OLED display.
Susunod, pag-uusapan natin ang tungkol sa isa sa mga modelo ng display ng OLED na malawak na magagamit para sa mga radio amateurs, na kinokontrol ng SSD1306 chip, na may sukat ng screen na 0.96 pulgada at isang resolusyon na 128 * 64 o 128 * 32 pixels. Ang mga display na ito ay mainam para sa maliliit na disenyo ng amateur na radyo at mga gawang bahay na proyekto.
Paano ikonekta ang OLED I2C display sa ARDUINO

Hakbang 1: Pangunahing Konsepto


Ikokonekta namin ito sa Arduino UNO / NANO, at ipo-program din namin ito sa pamamagitan ng Arduino.
  • Ang OLED ay isang Organic Light-Emitting Diode, ibig sabihin, isang semiconductor device na ginawa mula sa mga organic compound na nagsisimulang maglabas ng liwanag kapag may dumaan na electric current dito.
  • Ang ARDUINO ay isang platform para sa pagsasanay at pagbuo ng automation at robotics system.
  • ArduinoIDE - kapaligiran ng pag-unlad. Ito ay isang libreng Arduino programming program.
  • I2C – Inter-Integrated Circuits, inter-chip na linya ng komunikasyon.
  • Sketch, aka code, aka program - terminolohiya ng Arduino.

Sundin ang mga tagubilin upang maunawaan kung paano maayos na ikonekta at i-configure ang OLED display sa Arduino at kung paano magpakita ng custom na mensahe sa display nito.
Ginagawa namin ang lahat ng hakbang-hakbang.

Hakbang 2: Mga Accessory


Apat na bagay lang ang kailangan natin:
  • 1. Ang OLED display mismo ay 0.96” (maaari mo itong bilhin sa Aliexpress o Ebay, ito ay mahaba, ngunit mura!).
  • 2. Arduino UNO / Nano (parehong lugar sa display).
  • 3. Pagkonekta ng mga wire (ibid.).
  • 4. Computer o laptop na may naka-install na ArduinoIDE.

Paano ikonekta ang OLED I2C display sa ARDUINO

Sa pangkalahatan, ang pagbili ng mga bahagi para sa iba't ibang mga proyekto sa Aliexpress at Ebay ay isang napaka-cool na bagay, habang ikaw ay nagtatrabaho sa isang proyekto, ang mga bahagi para sa isa pa ay nasa daan na. Ang pangunahing bagay ay huwag kalimutang maglagay ng isang order.

Hakbang 3: Pagkonekta sa Display


Ang display ay kinokontrol ng isang SSD1306 chip, na sumusuporta sa limang protocol ng komunikasyon, isa na rito ang I2C. Ang data na gumagamit ng protocol na ito ay ipinapadala lamang sa dalawang wire, at ang mas kaunting mga wire sa kaso, mas mabuti, kaya nababagay ito sa amin.Ngunit! May mga module na may SPI protocol at kahit na may protocol switching, kaya mag-ingat sa pagbili ng module na ito.
Paano ikonekta ang OLED I2C display sa ARDUINO

Mga pin na ginamit:
OLED display - SCL/SCK (orasan) at SDA (data), “Plus” power (VCC) at “Minus” power (GND).
Paano ikonekta ang OLED I2C display sa ARDUINO

Mga pin na ginamit:
Arduino UNO - SCL/SCK sa A5 at SSD sa A4, “Plus” power (+5V) at “Minus” power (GND).
Pagkonekta sa display sa Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Paano ikonekta ang OLED I2C display sa ARDUINO

Hakbang 4: I2C Scanner


Ang bawat aparato sa I2C bus ay may hexadecimal address, hindi ito mababago, ito ay hard-wired, dapat ipahiwatig ito ng bawat responsableng tagagawa sa isang lugar sa kaso o sa mga tagubilin. Mayroong mga module na may mga switch at jumper na maaaring magamit upang baguhin ang address, ngunit... kung ang mga aparato ay mura hanggang sa punto ng kahihiyan, kung gayon ang tagagawa ay maaaring hindi mag-abala upang harapin ang gayong maliit na detalye, kaya kailangan mong tukuyin ito sa iyong sarili.

Sa kabuuan, hanggang 127 address ang maaaring gamitin sa bus - 119 para sa mga device at 8 address ng serbisyo. Ang komunikasyon ay isinasagawa sa mga address na ito. Mayroong isang pangunahing, aka Master, at mayroong isang alipin, aka Alipin - ang mga Masters ay nagtatanong, ang mga alipin ay sumagot, ang lahat ay simple.
Dahil ang aming OLED display ay gumagamit ng I2C communication protocol, at ang address ay maaaring hindi tinukoy, susubukan naming alamin ang mismong address na ito.

Magagawa mo ito sa pamamagitan ng pag-upload ng maikling sketch sa iyong Arduino board na may nakakonektang OLED. PERO!
Huwag magmadali upang i-upload ang sketch sa Arduino kaagad! I-download muna natin ang "mga driver", i.e. ikonekta natin ang mga aklatan, at para magawa ito, pupunta agad tayo sa "Hakbang Blg. 5", at pagkatapos ay babalik at magpatuloy.

Hakbang 4: Ipinagpatuloy:


I-download ang CODE Finder_I2C_Hex_Address.ino, i-upload sa Arduino.
Buksan ang "Port Monitor", itakda ang bilis sa 9600 at kung ang lahat ay konektado nang tama, ipapakita ng programa ang address ng device, sa aking kaso OLED na may address na 0x3F.
Paano ikonekta ang OLED I2C display sa ARDUINO

Hakbang 5: I-download at ikonekta ang mga aklatan


Upang gumana nang tama ang lahat, at hindi mo na kailangang muling likhain ang gulong, kailangan mong ikonekta ang isang pares ng mga aklatan sa kapaligiran ng ArduinoIDE, katulad: ADAFRUIT GFX at ADAFRUIT SSD1306, kinakailangan ang mga ito para sa Arduino na makapag-independiyenteng makipag-usap. gamit ang OLED display.
Maaari mong isama ang mga aklatang ito sa pamamagitan ng pagsunod sa mga hakbang na ito.
  • 1. Sa ArduinoIDE, pumunta sa Sketch menu.
  • 2. Piliin ang "Isama ang Mga Aklatan".
  • 3. Piliin ang “Manage Libraries”.
  • 4. Hanapin ang ADAFRUIT GFX at i-install ang mga ito.
  • 5. Hanapin ang ADAFRUIT SSD1306 at i-install ang mga ito.

Gamit ang pinakabagong mga bersyon ng mga aklatan, ang aking display ay gumagana nang baluktot, ito ay maaaring siyempre dahil sa kurbada ng aking mga kamay, ngunit pagkatapos kong i-install ang pinakaunang mga bersyon ng mga aklatang ito, ang lahat ay nagsimulang lumitaw na makinis at maganda. Sa ilang kadahilanan, naiisip ang mga linya ni Pushkin:
...at karanasan, ang anak ng mahihirap na pagkakamali,
at henyo, kaibigan ng mga kabalintunaan.

Ang isa pang paraan upang mag-install ng mga aklatan ay ang paghahanap, pag-download at pag-install ng mga aklatang ito nang mag-isa.
Para sa halimbawa ng Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Ito ang parehong mga aklatan ng Adafruit, ngunit ang mga katulad na aklatan ay madaling mahanap sa mga search engine, sa kahilingan ng OLED I2C. Maraming mga mahilig sa pagsulat ng mga aklatan "para sa kanilang sarili" at pagkatapos ay i-post ang mga ito sa web. Aling library ang gagamitin ay nasa iyo.
Upang ang display ay magpakita ng mga letrang Ruso, kailangan din ng mga espesyal na aklatan, ngunit ito ay isang hiwalay na paksa para sa isang hiwalay na artikulo.
Pagkatapos ma-install ang mga aklatan, maaari kang bumalik sa hakbang 4 at sa wakas ay alamin ang hexadecimal address ng iyong display.

Hakbang 6: Display Testing


Upang suriin kung gumagana ang lahat tulad ng inaasahan, patakbuhin ang halimbawa ng pagsubok mula sa ArduinoIDE.
Para dito:
Pumunta sa FILE > EXAMPLES > SSD 1306 > Piliin ang 128x64 i2c
Kung nakakuha ka ng "Error", subukang piliin ang SSD 1306 > 128x32 i2c.
Kung maganap muli ang "Error," subukang baguhin ang I2C address sa linya 61 ng demo code at palitan ito ng address ng iyong display na tinukoy mo sa hakbang #4.
Kung mangyari muli ang error, maaari mong subukang i-edit ang Adafruit_SSD1306.h file, ito ay matatagpuan sa folder ng Arduino library.
Paano ikonekta ang OLED I2C display sa ARDUINO

Buksan ang Adafruit_SSD1306.h file sa isang text editor at hanapin ang mga linya:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Alisin sa komento ang linya:
#define SSD1306_128_64. 

Dapat itong magmukhang ganito:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Kung naganap muli ang error, kailangan mong suriin ang mga tamang koneksyon.
Kapag kumpleto na ang pag-download, makakakita ka ng pansubok na animation sa screen, na nangangahulugang matagumpay mong na-set up ang iyong OLED display.

Kapag lubusan mong nasiyahan ang animation na ito, maaari kang magpatuloy sa susunod na hakbang.

Hakbang 7: Sumulat ng iyong sariling mensahe


Upang magsulat ng sarili mong mensahe, lumikha muna ng bagong sketch sa kapaligiran ng programming ng ArduinoIDE.
Sa header kasama namin ang 4 na aklatan:
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Pagkatapos ay isusulat namin ang reset protocol:
#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

Sa VOID SETUP ipinapahiwatig namin ang hexadecimal address ng aming display 0x3C, na natutunan namin sa "Hakbang Blg. 4".
Pagkatapos, sinisimulan namin ang display at i-clear ito:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

Susunod, sa VOID LOOP isinusulat namin ang pangunahing code, iyon ay, ang aming mensahe na nais naming ipakita sa display.
Upang gawin ito, inilalarawan namin ang laki ng teksto, kulay ng teksto, posisyon ng cursor, at sa wakas, ipakita ang mensahe gamit ang println command:
display.setTextSize(2);

display.setTextColor(WHITE);

display.setCursor(0,0);

display.println("Magaling!");

display.display();

Sa dulo, huwag kalimutang magsulat display.displayupang ang imahe ay ipinapakita sa screen, kung hindi, makakakuha ka ng walang bisa.
Kung ginawa mo nang tama ang lahat, may lalabas na mensahe sa mga display.
Paano ikonekta ang OLED I2C display sa ARDUINO

Narito ang Starting_with_Arduino_OLED.ino CODE ng aming programa:
code.zip [946 b] (mga pag-download: 4908)
bumalik
Magkomento
  • bowtiengumititumatawanamumulasmileyrelaxed relaxedngumisi
    puso_matapaghalik_pusonaghahalikan nang nakapikitnamulagumaan ang loobnasiyahanngumisi
    kumindatstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesnakangisipaghalikstuck_out_tonguenatutulog
    nag-aalalanakasimangotnagdadalamhatibukas_bibignakangiwinalilitotumahimik
    walang ekspresyonhindi mapakalipawis_ngitipawisdisappointed_relievedpagodpassive
    nabigonalilitonakakatakotmalamig na pawismagtiyagaumiyakhikbi
    kagalakannamanghasigawpagod_mukhagalitgalitpagtatagumpay
    inaantokyummaskarasalaming pang-arawnahihilo_mukhaimpnakangiting_imp
    neutral_facewalang_bibiginosente
4 minus one =
Mga komento (10)
  1. Tatoshka
    #1 Tatoshka mga panauhin 14 Nobyembre 2018 21:18
    9
    Salamat kaibigan! Ito ang aking unang na-upload na sketch at pagpapakilala sa Arduino. Bukod sa kumikislap na Blink))
  2. Alisher
    #2 Alisher mga panauhin Hulyo 28, 2019 19:35
    8
    Saan ko mada-download itong Finder_I2C_Hex_Address.ino code?
    1. Sinabi ni Al
      #3 Sinabi ni Al mga panauhin Agosto 14, 2019 12:51
      11
      sa ilalim ng larawan mayroong isang link na "Narito ang Starting_with_Arduino_OLED.ino CODE ng aming programa:"
  3. Alex
    #4 Alex mga panauhin Nobyembre 13, 2019 20:01
    9
    Hindi VOID SETUP o VOID LOOP, ngunit void setup(); at void loop(); Ang wikang C ay isang case-sensitive na wika.
  4. Panauhin Alex
    #5 Panauhin Alex mga panauhin Enero 14, 2020 03:00
    6
    > Hakbang 4: ... sa aking kaso OLED na may address 0x3F.
    at pagkatapos
    >Sa VOID SETUP... ang address ng aming display 0x3C, na natutunan namin sa "Hakbang #4".
    Paano ba yan
  5. Panauhin Alex
    #6 Panauhin Alex mga panauhin 14 Enero 2020 03:10
    9
    Salamat! Ginawa ko ang lahat ayon sa mga tagubilin sa Atmega328 Pro Mini at sinuri ang biniling 0.96". Parehong gumagana. Arduino IDE 1.8.10
  6. Reader
    #7 Reader mga panauhin 3 Marso 2020 21:50
    4
    Salamat, nakapagtuturo, gumagana ang lahat!
  7. Ildar Xafizov
    #8 Ildar Xafizov mga panauhin Abril 19, 2020 19:15
    5
    May tanong ako. Mayroong 2 OLED na display na kapareho ng sa iyo sa larawan (pangalawang larawan). Hindi ko malaman kung aling mga jumper ang gagamitin para baguhin ang address?
  8. Panauhing Maxim
    #9 Panauhing Maxim mga panauhin 31 Oktubre 2020 18:53
    11
    Salamat sa artikulo.Ngunit mayroon akong problema: ang mga pixel sa mga titik ay kumikinang sa bawat isa at ang font ay mas malaki kaysa sa nararapat. Tila hindi nakikilala ng Arduino ang resolution ng screen. Kung sinuman ang may parehong problema, narito kung paano ito lutasin:
    #define SCREEN_WIDTH 128 // OLED display width, sa mga pixel
    #define SCREEN_HEIGHT 64 // OLED display height, sa mga pixel
    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitriy
    #10 Dmitriy mga panauhin 9 Mayo 2021 19:35
    7
    Salamat! Hindi agad natuloy ang lahat. Sa katunayan, ang address sa display ay 128*64, hindi 0x3D, ngunit 0x3C. At inayos ko muli ang Mga Aklatan "mula sa gitna" ng mga bersyon. Hindi ang pinakabago, dahil... mayroong isang mensahe tungkol sa kritikal na halaga ng memorya (mayroon akong Arduino Uno).