Paano ikonekta ang OLED I2C display sa ARDUINO
Panimula: Panimula sa OLED I2C display 128*64 / 128*32.
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.
Ikokonekta namin ito sa Arduino UNO / NANO, at ipo-program din namin ito sa pamamagitan 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.
Apat na bagay lang ang kailangan natin:
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.
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.
Mga pin na ginamit:
OLED display - SCL/SCK (orasan) at SDA (data), “Plus” power (VCC) at “Minus” power (GND).
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:
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.
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.
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.
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.
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.
Buksan ang Adafruit_SSD1306.h file sa isang text editor at hanapin ang mga linya:
Alisin sa komento ang linya:
Dapat itong magmukhang ganito:
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.
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:
Pagkatapos ay isusulat namin ang reset protocol:
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:
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:
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.
Narito ang Starting_with_Arduino_OLED.ino CODE ng aming programa:
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.
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.
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.
Mga pin na ginamit:
OLED display - SCL/SCK (orasan) at SDA (data), “Plus” power (VCC) at “Minus” power (GND).
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
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.
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.
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.
Narito ang Starting_with_Arduino_OLED.ino CODE ng aming programa:
code.zip
[946 b] (mga pag-download: 4908)
Mga katulad na master class
Lalo na kawili-wili
Cable antenna para sa digital TV sa loob ng 5 minuto
Isang seleksyon ng simple at epektibong mga scheme.
Three-phase na boltahe mula sa single-phase sa loob ng 5 minuto
Pagsisimula ng isang three-phase motor mula sa isang single-phase network na walang kapasitor
Walang hanggang flashlight na walang mga baterya
Paano gumawa ng mura ngunit napakalakas na LED lamp
Mga komento (10)