Kā savienot OLED I2C displeju ar ARDUINO

Ievads: Ievads OLED I2C displejā 128*64 / 128*32.
Kā savienot OLED I2C displeju ar ARDUINO

Sveiki! Būdams amatieris elektronikas entuziasts, esmu pārliecināts, ka viss, ko darām – elektroniskās rotaļlietas – paštaisītas preces vai lieli projekti – viss ir aiz ziņkārības un slinkuma. Zinātkāre cenšas izprast un aptvert plašo, nezināmo, izdomāt, kā tā tur darbojas, ko dara, kā kustas. Un slinkums izdomā ko izdomāt, lai neceltos, netuvotos, nepaceltu, nesasmērētos vai ko citu svarīgu.

Tā kā informāciju redzēt ir labāk nekā izdomāt, kas mūsu ierīcē notiks, kas jau ir noticis, vai notiek, mēs noteikti vēlēsimies saņemt šo visnoderīgāko informāciju no mūsu mikrokontrolleriem, sensoriem vai citām ierīcēm. Un jebkurā gadījumā es vēlos saņemt jebkādas ziņas, piemēram, jautājumus, brīdinājumus, atgādinājumus, emocijzīmes, zvaigznes, sirsniņas un tamlīdzīgus.

Tiem, kam arī ir līdzīga vēlme, šeit ir īss ceļvedis mazu un lētu OLED displeju pievienošanai un testēšanai.
Tālāk mēs runāsim par vienu no radioamatieriem plaši pieejamajiem OLED displeju modeļiem, ko kontrolē SSD1306 mikroshēma un kura ekrāna izmērs ir 0,96 collas un izšķirtspēja 128 * 64 vai 128 * 32 pikseļi. Šie displeji ir ideāli piemēroti maziem radioamatieru dizainiem un pašdarinātiem projektiem.
Kā savienot OLED I2C displeju ar ARDUINO

1. darbība: pamatjēdzieni


Mēs to savienosim ar Arduino UNO / NANO, kā arī programmēsim caur Arduino.
  • OLED ir Organic Light-Emitting Diode, t.i., pusvadītāju ierīce, kas izgatavota no organiskiem savienojumiem, kas sāk izstarot gaismu, kad caur to iet elektriskā strāva.
  • ARDUINO ir platforma apmācībai un ēku automatizācijas un robotikas sistēmām.
  • ArduinoIDE - izstrādes vide. Šī ir bezmaksas Arduino programmēšanas programma.
  • I2C – Inter-Integrated Circuits, starpčipu sakaru līnija.
  • Skice, aka kods, aka programma - Arduino terminoloģija.

Izpildiet norādījumus, lai saprastu, kā pareizi savienot un konfigurēt OLED displeju ar Arduino un kā tā displejā parādīt pielāgotu ziņojumu.
Mēs visu darām soli pa solim.

2. darbība: piederumi


Mums ir vajadzīgas tikai četras lietas:
  • 1. Pats OLED displejs ir 0,96 collas (to var iegādāties Aliexpress vai Ebay, tas ir garš, bet lēts!).
  • 2. Arduino UNO / Nano (tajā pašā vietā, kur displejs).
  • 3. Savienojošie vadi (turpat).
  • 4. Dators vai klēpjdators ar instalētu ArduinoIDE.

Kā savienot OLED I2C displeju ar ARDUINO

Vispār pirkt detaļas dažādiem projektiem Aliexpress un Ebay ir ļoti forša lieta, kamēr tu strādā pie viena projekta, daļas citam jau ir ceļā. Galvenais ir neaizmirst veikt pasūtījumu.

3. darbība. Displeja pievienošana


Displeju kontrolē SSD1306 mikroshēma, kas atbalsta piecus sakaru protokolus, no kuriem viens ir I2C. Dati, izmantojot šo protokolu, tiek pārsūtīti tikai pa diviem vadiem, un jo mazāk vadu korpusā, jo labāk, tāpēc tas mums ir diezgan piemērots.Bet! Ir moduļi ar SPI protokolu un pat ar protokola maiņu, tāpēc esiet piesardzīgs, iegādājoties šo moduli.
Kā savienot OLED I2C displeju ar ARDUINO

Izmantotās tapas:
OLED displejs - SCL/SCK (pulkstenis) un SDA (dati), “Plus” jauda (VCC) un “Mīnus” jauda (GND).
Kā savienot OLED I2C displeju ar ARDUINO

Izmantotās tapas:
Arduino UNO - SCL/SCK uz A5 un SSD uz A4, “plus” jauda (+5 V) un “Mīnus” jauda (GND).
Displeja pievienošana Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Kā savienot OLED I2C displeju ar ARDUINO

4. darbība: I2C skeneris


Katrai ierīcei I2C kopnē ir heksadecimālā adrese, to nevar mainīt, tā ir pieslēgta, katram atbildīgajam ražotājam tā ir jānorāda kaut kur uz korpusa vai instrukcijā. Ir moduļi ar slēdžiem un džemperiem, ar kuriem var mainīt adresi, bet... ja ierīces ir līdz apkaunojumam lētas, tad ražotājs var neapnikt tikt galā ar tik sīku detaļu, tāpēc nāksies noteikt to pats.

Kopā autobusā var izmantot līdz 127 adresēm - 119 ierīcēm un 8 apkalpošanas adresēm. Saziņa notiek šajās adresēs. Ir galvenais, aka Meistars, un ir vergs, aka Slave - kungi jautā, vergi atbild, viss ir vienkārši.
Tā kā mūsu OLED displejā tiek izmantots I2C sakaru protokols un adrese var nebūt norādīta, mēs centīsimies paši noskaidrot šo adresi.

To var izdarīt, augšupielādējot īsu skici savā Arduino platē ar pievienotu OLED. BET!
Nesteidzieties uzreiz augšupielādēt skici Arduino! Vispirms lejupielādēsim “draiveri”, t.i. savienosim bibliotēkas, un, lai to izdarītu, nekavējoties pāriesim uz 5. darbību, pēc tam atgriezīsimies un turpināsim.

4. darbība: turpinājums:


Lejupielādējiet CODE Finder_I2C_Hex_Address.ino, augšupielādējiet vietnē Arduino.
Atveriet “Port Monitor”, iestatiet ātrumu uz 9600 un, ja viss ir pareizi savienots, programma parādīs ierīces adresi, manā gadījumā OLED ar adresi 0x3F.
Kā savienot OLED I2C displeju ar ARDUINO

5. darbība. Lejupielādējiet un pievienojiet bibliotēkas


Lai viss darbotos pareizi un nebūtu jāizgudro ritenis no jauna, ArduinoIDE videi ir jāpievieno pāris bibliotēkas, proti: ADAFRUIT GFX un ADAFRUIT SSD1306, tās ir nepieciešamas, lai Arduino varētu patstāvīgi sazināties. ar OLED displeju.
Varat iekļaut šīs bibliotēkas, veicot šīs darbības.
  • 1. Programmā ArduinoIDE atveriet izvēlni Sketch.
  • 2. Atlasiet “Iekļaut bibliotēkas”.
  • 3. Atlasiet “Pārvaldīt bibliotēkas”.
  • 4. Atrodiet ADAFRUIT GFX un instalējiet tos.
  • 5. Atrodiet ADAFRUIT SSD1306 un instalējiet tos.

Ar jaunākajām bibliotēku versijām mans displejs darbojās greizi, protams, tas var būt saistīts ar manu roku izliekumu, taču pēc šo bibliotēku pirmo versiju instalēšanas viss sāka izskatīties gludi un skaisti. Kādu iemeslu dēļ prātā nāk Puškina rindas:
...un pieredze, grūtu kļūdu dēls,
un ģēnijs, paradoksu draugs.

Vēl viens veids, kā instalēt bibliotēkas, ir pašam atrast, lejupielādēt un instalēt šīs bibliotēkas.
Github piemēram:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Tās ir tās pašas Adafruit bibliotēkas, taču pēc OLED I2C pieprasījuma līdzīgas bibliotēkas var viegli meklēt meklētājprogrammās. Daudzi entuziasti raksta bibliotēkas “sev” un pēc tam ievieto tās tīmeklī. Kuru bibliotēku izmantot, ir atkarīgs no jums.
Lai displejā būtu redzami krievu burti, nepieciešamas arī speciālas bibliotēkas, taču tā ir atsevišķa tēma atsevišķam rakstam.
Kad bibliotēkas ir instalētas, varat atgriezties pie 4. darbības un beidzot uzzināt displeja heksadecimālo adresi.

6. darbība. Displeja pārbaude


Lai pārbaudītu, vai viss darbojas, kā paredzēts, palaidiet testa piemēru no ArduinoIDE.
Priekš šī:
Dodieties uz FAILS > PIEMĒRI > SSD 1306 > atlasiet 128 x 64 i2c.
Ja tiek parādīts ziņojums “Kļūda”, mēģiniet atlasīt SSD 1306 > 128x32 i2c.
Ja "Kļūda" atkārtojas, mēģiniet nomainīt I2C adresi demonstrācijas koda 61. rindā un aizstāt to ar displeja adresi, ko noteicāt 4. darbībā.
Ja kļūda atkārtojas, varat mēģināt rediģēt failu Adafruit_SSD1306.h, tas atrodas mapē Arduino bibliotēkas.
Kā savienot OLED I2C displeju ar ARDUINO

Atveriet failu Adafruit_SSD1306.h teksta redaktorā un atrodiet rindiņas:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Atceliet rindas komentāru:
#define SSD1306_128_64. 

Tam vajadzētu izskatīties šādi:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Ja kļūda atkārtojas, jums jāpārbauda pareizi savienojumi.
Kad lejupielāde būs pabeigta, ekrānā redzēsit testa animāciju, kas nozīmē, ka esat veiksmīgi iestatījis OLED displeju.

Kad esat pilnībā izbaudījis šo animāciju, varat pāriet uz nākamo soli.

7. darbība. Uzrakstiet savu ziņojumu


Lai uzrakstītu savu ziņojumu, vispirms izveidojiet jaunu skici ArduinoIDE programmēšanas vidē.
Galvenē ir iekļautas 4 bibliotēkas:
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Pēc tam mēs rakstām atiestatīšanas protokolu:
#define OLED_RESET 4

Adafruit_SSD1306 displejs (OLED_RESET);

Sadaļā VOID SETUP mēs norādām mūsu displeja heksadecimālo adresi 0x3C, ko uzzinājām “4. darbībā”.
Pēc tam mēs inicializējam displeju un notīrām to:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplejs();

Tālāk VOID LOOP mēs ierakstām galveno kodu, tas ir, mūsu ziņojumu, kuru vēlamies parādīt displejā.
Lai to izdarītu, mēs aprakstām teksta lielumu, teksta krāsu, kursora pozīciju un, visbeidzot, parādām ziņojumu, izmantojot komandu println:
display.setTextSize(2);

displejs.setTextColor(BALTS);

display.setCursor(0,0);

display.println("Labi darīts!");

displejs.displejs();

Beigās neaizmirstiet uzrakstīt displejs.displejslai attēls tiktu parādīts ekrānā, pretējā gadījumā jūs iegūsit tukšumu.
Ja visu izdarījāt pareizi, displejos parādīsies ziņojums.
Kā savienot OLED I2C displeju ar ARDUINO

Šeit ir mūsu programmas Starting_with_Arduino_OLED.ino KODS:
kods.zip [946 b] (lejupielādes: 4908)
Atgriezies
komentēt
  • tauriņšsmaidītsmejotiessarktsmaidiņšatslābināts atslābinātssmieties
    sirds_aciskissing_heartskūpstās_aizvērtas_acispietvīkusiatvieglotsapmierinātspasmīn
    ar aciiestrēdzis_ārpus mēles_aciiestrēdzis_ārpus mēles_aizvērtas_acissmīnotskūpstotiesiestrēdzis_mēleguļot
    uztrauciessaraucot pierinomocītsatvērta_mutegrimasēapjucisapklususi
    neizteiksmīgsneuzjautrinātssviedri_smaidssviedrivīlies_atvieglotsnogurispasīvs
    vīlušiesapmulsisbailīgsauksti sviedrineatlaidīgiraudātšņukstēt
    priekspārsteigtskliedziensnogurusi_sejadusmīgsniknumstriumfs
    miegainsnammaskasaulesbrillesdizzy_faceimpsmiling_imp
    neitrāla_sejanav_mutesnevainīgs
4 mīnus viens =
Komentāri (10)
  1. Tatoshka
    #1 Tatoshka Viesi 2018. gada 14. novembris 21:18
    9
    Paldies draugs! Šī ir mana pirmā augšupielādētā skice un ievads Arduino. Izņemot mirgošanu Mirkšķināt))
  2. Ališers
    #2 Ališers Viesi 2019. gada 28. jūlijs, 19:35
    8
    Kur es varu lejupielādēt šo Finder_I2C_Hex_Address.ino kodu?
    1. Al
      #3 Al Viesi 2019. gada 14. augustā plkst. 12:51
      11
      zem attēla ir saite "Šeit ir mūsu programmas Starting_with_Arduino_OLED.ino KODS:"
  3. Alekss
    #4 Alekss Viesi 2019. gada 13. novembris, 20:01
    9
    Nevis VOID SETUP vai VOID LOOP, bet void setup (); un void loop(); C valoda ir reģistrjutīga valoda.
  4. Viesis Alekss
    #5 Viesis Alekss Viesi 2020. gada 14. janvāris 03:00
    6
    >4. darbība: ... manā gadījumā OLED ar adresi 0x3F.
    un tad
    >Sadaļā VOID SETUP... mūsu displeja adrese 0x3C, ko mēs uzzinājām “4. darbībā”.
    Kā tas ir?
  5. Viesis Alekss
    #6 Viesis Alekss Viesi 2020. gada 14. janvāris, 03:10
    9
    Paldies! Es visu izdarīju saskaņā ar Atmega328 Pro Mini norādījumiem un pārbaudīju iegādāto 0,96". Abi izrādījās, ka darbojas. Arduino IDE 1.8.10
  6. Lasītājs
    #7 Lasītājs Viesi 2020. gada 3. marts plkst. 21:50
    4
    Paldies, pamācoši, viss darbojas!
  7. Ildars Ksafizovs
    #8 Ildars Ksafizovs Viesi 2020. gada 19. aprīlis plkst. 19:15
    5
    Man ir jautājums. Ir 2 OLED displeji, kas ir identiski jums fotoattēlā (otrais fotoattēls). Es nevaru saprast, kurus džemperus izmantot, lai mainītu adresi?
  8. Viesis Maksims
    #9 Viesis Maksims Viesi 2020. gada 31. oktobris, 18:53
    11
    Paldies par rakstu.Bet man ir problēma: pikseļi burtos spīd katru otro un fonts ir lielāks nekā vajadzētu. Acīmredzot Arduino neatpazīst ekrāna izšķirtspēju. Ja kādam ir tāda pati problēma, rīkojieties šādi:
    #define SCREEN_WIDTH 128 // OLED displeja platums pikseļos
    #define SCREEN_HEIGHT 64 // OLED displeja augstums pikseļos
    Adafruit_SSD1306 displejs (EKRĀNA_WIDTH, EKRĀNA_AUGSTUMS, &vads, OLED_RESET);
  9. Dmitrijs
    #10 Dmitrijs Viesi 2021. gada 9. maijs plkst. 19:35
    7
    Paldies! Ne viss izdevās uzreiz. Patiešām, adrese displejā bija 128*64, nevis 0x3D, bet 0x3C. Un es pārkārtoju Bibliotēkas versiju “no vidus”. Ne jaunākais, jo... bija ziņa par atmiņas kritisko vērtību (man ir Arduino Uno).