Բովանդակություն:

OLED I2C Display Arduino/NodeMCU ձեռնարկ ՝ 15 քայլ
OLED I2C Display Arduino/NodeMCU ձեռնարկ ՝ 15 քայլ

Video: OLED I2C Display Arduino/NodeMCU ձեռնարկ ՝ 15 քայլ

Video: OLED I2C Display Arduino/NodeMCU ձեռնարկ ՝ 15 քայլ
Video: How measure DC Voltage and Current and build Energy meter with LCD Display | Lesson 104 2024, Նոյեմբեր
Anonim
Image
Image

Առաջին ծրագիրը, որը գրում եք, երբ սկսում եք սովորել ա

ծրագրավորման նոր լեզուն է ՝ «Բարև աշխարհ»:

Itselfրագիրն ինքնին ոչ այլ ինչ է անում, քան էկրանին «Բարև աշխարհ» տեքստի տպում:

Այսպիսով, ինչպե՞ս ենք մենք ստիպում մեր Arduino- ին ցուցադրել «Բարև աշխարհ»:

Այս տեսանյութում ես ձեզ ցույց կտամ, թե ինչպես սկսել փոքր 0.91 (128x32) և 0.96 (128x64) փոքր I2C OLED էկրաններով:

Համացանցում կան 100 -ական ձեռնարկներ, որոնք նույնը բացատրում են տարբեր ձևերով, բայց ես չգտա մեկը, որն ինձ ամեն ինչ կպատմի OLED էկրանին և ինչպես այն օգտագործել տարբեր սցենարներում: Ինձանից որոշ ժամանակ պահանջվեց ՝ ամեն ինչ մշակելու համար: Այսպիսով, ես մտածեցի, որ պետք է իմ սովորածի վերաբերյալ ձեռնարկ ստեղծեմ և համատեղեմ բոլոր այն հնարավորություններն ու եղանակները, որոնցով OLED էկրանները կարող են օգտագործվել մեր նախագծերում:

Քայլ 1: Այն, ինչ մենք պատրաստվում ենք սովորել այսօր

Սարքավորման պահանջ
Սարքավորման պահանջ

Այս տեսանյութում մենք կխոսենք հետևյալի մասին.

- Ի՞նչ է OLED էկրանը:

- Այնուհետև մենք ավելի սերտորեն կանդրադառնանք 0.91 (128x32) և 0.96 (128x64) I2C OLED էկրաններին:

- Հաջորդը մենք կխոսենք Adafruit գրադարանը ձեր Arduino IDE- ում տեղադրելու մասին

- Հետո մենք NodeMCU- ն և Arduino- ն կկապենք OLED էկրանին

- Հաջորդը մենք կնայենք ծածկագրին և դրա վրա կցուցադրենք որոշ գրաֆիկա և տեքստ

- Մենք նաև կխոսենք Պատվերով տառատեսակներ կիրառելու և Պատկերներ ցուցադրելու մասին

- Այնուհետև մենք բազմաթիվ OLED- ներ կմիացնենք միկրոհսկիչին `օգտագործելով I2C Multiplexer- ը

- Ի վերջո, մենք կխոսենք մի քանի սովորական սխալների մասին, որոնք մարդիկ թույլ են տալիս OLED էկրաններն օգտագործելիս

Քայլ 2: Սարքավորման պահանջ

Այս ձեռնարկի համար մեզ անհրաժեշտ է.

- A Breadboard

- A 0.91 "(128x32) և 0.96" (128x64) I2C OLED էկրաններ

- Arduino UNO/NANO (ինչ հարմար է)

- NodeMCU

- TCA9548A I2C մուլտիպլեքսեր

- Մի քանի միացնող մալուխ

- և USB մալուխ ՝ ծածկագիրը վերբեռնելու համար

Քայլ 3: Ի՞նչ է OLED էկրանը:

Ի՞նչ է OLED էկրանը
Ի՞նչ է OLED էկրանը
Ի՞նչ է OLED էկրանը
Ի՞նչ է OLED էկրանը

OLED կամ օրգանական լուսադիոդ է լույս արձակող

դիոդ (LED), որում արտանետվող էլեկտրալույսը շերտը օրգանական միացության ֆիլմ է (միլիոնավոր փոքր LED լույսեր), որը լույս է արձակում ի պատասխան էլեկտրական հոսանքի:

OLED- ն օգտագործվում է թվային ցուցադրումներ ստեղծելու համար այնպիսի սարքերում, ինչպիսիք են հեռուստատեսային էկրանները, համակարգչային մոնիտորները, շարժական համակարգերը, ինչպիսիք են բջջային հեռախոսները, ձեռքի խաղային կոնսուլները և PDA- ն: OLED էկրանն աշխատում է առանց հետևի լուսավորության, քանի որ այն արտանետում է տեսանելի լույս:

Քայլ 4:

Պատկեր
Պատկեր

Կան բազմաթիվ OLED էկրաններ

շուկան ՝ հիմնվելով դրանց վրա

- Չափերը

- գույնը

- Ապրանքանիշեր

- Արձանագրություն

- SPI (Սերիական ծայրամասային միջերես) կամ I2C

-Պասիվ մատրիցային (PMOLED) կամ ակտիվ մատրիցային (AMOLED) վերահսկման սխեմա

Այս ձեռնարկում ես խոսելու եմ միացման մասին

կապույտ գույնը 0.91 (128x32 OLED) և 0.96 (128x64 OLED) I2C OLDE էկրաններ Arduino NANO- ին և NodeMCU- ին: I2C ավտոբուսային տեխնոլոգիան օգտագործում է MCU- ի ընդամենը 2 կապում, այնպես որ մենք ունենք կույտեր այլ սենսորների համար:

Քայլ 5: Ավելի մոտ տեսք

Ավելի մոտիկ հայացք
Ավելի մոտիկ հայացք
Ավելի մոտիկ հայացք
Ավելի մոտիկ հայացք
Ավելի մոտիկ հայացք
Ավելի մոտիկ հայացք

Եկեք ավելի մոտիկ լինենք այս երկու էկրաններին:

Այս էկրանների հետևում կան SMD կոնդենսատորների և կուտակիչների կույտեր, որոնք սոսնձված են ինքնաթիռում. բայց, քանի որ դա I2C սարք է, մենք մտածում ենք միայն այս 2 կապի մասին (SCL և SDA)

Էկրանը միանում է Arduino- ին ՝ օգտագործելով ընդամենը չորս լար ՝ երկուսը հոսանքի համար (VCC և GND) և երկուսը ՝ տվյալների համար (սերիական ժամացույց SCL և

սերիական տվյալներ SDA) ՝ էլեկտրագծերը շատ պարզ դարձնելով: Տվյալների կապը I2C է (I²C, IIC կամ Inter-Integrated Circuit) և այս ինտերֆեյսը կոչվում է նաև TWI (Two Wire Interface):

- Ինքնաթիռի քորոցները կարող են լինել տարբեր կարգով, այնպես որ միշտ եռակի ստուգեք նախքան այն ձեր նախագծին միացնելը:

- Գործողության լարումը 3v- ից 5v- ի միջև է, բայց լավագույնն է օգտագործել արտադրողի տվյալների թերթի ցուցումները:

- Երբեմն մենք պետք է 2 ցուցադրում օգտագործենք մեր նախագծերում: Այսպիսով, ինչպե՞ս կարող ենք հասնել դրան:

Հնարքն այն է, որ ձեր էկրանին կարգավորելի հասցե ունենաք: Այս միավորն ունի կարգավորելի հասցե 0x78 և 0x7A միջև: Պարզապես 0 Օմ դիմադրողը մի կողմից չվաճառելով և այն մյուս կողմից խեղդելով կամ պարզապես գլոբալ զոդ տեղադրելով, մենք կարող ենք փոխել հասցեն: Մենք դրա մասին ավելի խորը կխոսենք, երբ մի քանի էկրան միացնենք Arduino- ին այս ձեռնարկի վերջին հատվածում:

Նկարում այս ցուցադրումները շատ մեծ տեսք ունեն: Բայց, գործնականում ասած, դրանք փոքր են: Դրանք պատրաստված են 128 x 32/64 անհատական OLED պիքսելներից և հետին լուսավորություն չեն պահանջում: Պարզապես նայեք սա և տեսեք, թե որքան փոքր է այն: Չնայած դրանք փոքր են, դրանք կարող են շատ օգտակար լինել ցանկացած էլեկտրոնային նախագծերում:

Քայլ 6: Գրադարան

Գրադարան
Գրադարան
Գրադարան
Գրադարան
Գրադարան
Գրադարան

Կան մի քանի գրադարաններ դրանք վերահսկելու համար

ցուցադրում. Նախկինում ես օգտագործել եմ «u8glib գրադարանը», բայց ինձ թվում է, որ AdaFruit գրադարանը շատ հեշտ է հասկանալ և օգտագործել մեր նախագծերում: Այսպիսով, ես պատրաստվում եմ օգտագործել AdaFruit գրադարանը այս ձեռնարկում:

OLED էկրանը վերահսկելու համար ձեզ հարկավոր է «adafruit_GFX.h» գրադարանը և «adafruit_SSD1306.h» գրադարանը:

Երկու եղանակ կա, որոնցով կարող եք գրադարանը ներբեռնել և տեղադրել ձեր Arduino IDE- ում:

Մեթոդ 1

Գնացեք «Գրադարանի կառավարիչ» և որոնեք «adafruit_SSD1306» և «adafruit_gfx»

Ընտրեք վերջին տարբերակը և կտտացրեք Տեղադրեք կոճակը:

Տեղադրվելուց հետո կարող եք օգտագործել այս գրադարանները ձեր ծրագրում:

Մեթոդ 2

Այս երկու գրադարանները կարելի է ներբեռնել նաև github- ից (երկուսն էլ ձեզ պետք են).

Ստորև բերված նկարագրության հղումները կտրամադրեմ:

Theուցադրման գրադարան ՝

GFX գրադարանը ՝

Ներբեռնելուց հետո պատճենեք Adafruit_SSD1306- հիմնական թղթապանակը ներբեռնված սեղմված ֆայլից Arduino գրադարանների պանակում: Այս թղթապանակը սովորաբար գտնվում է Փաստաթղթեր> Arduino> գրադարաններ Windows համակարգերում: Linux- ում այն սովորաբար գտնվում է տան թղթապանակում> Arduino> գրադարաններ: Վերջապես Arduino գրադարանի թղթապանակում Adafruit_SSD1306-master թղթապանակը վերանվանեք Adafruit_SSD1306: Նույնիսկ եթե չանվանափոխեք, դա լավ է:

Քայլ 7:

Պատկեր
Պատկեր

Այժմ, եկեք դիտենք «Adafruit_SSD1306.h»

ֆայլը

Երկու բան, որ մենք պետք է իմանանք այս գրադարանում.

1. Եթե ցանկանում եք օգտագործել փոքր էկրանը, օգտագործեք լռելյայն 128_32, հակառակ դեպքում ավելի մեծ ցուցադրման համար մեկնաբանեք 128_32 -ը և մեկնաբանեք 128_64 -ը:

2. Եթե դուք զոդել եք 0x7A հասցեն գրատախտակին (որի մասին մենք կխոսենք ավելի ուշ), ապա ավելի մեծ ցուցադրումների համար օգտագործեք 7 բիթանոց 0x3D հասցեն, հակառակ դեպքում օգտագործեք կանխադրված 0x3C հասցեն: Փոքր էկրանների համար հասցեն 0x3C է:

Քայլ 8 ՝ 128 X 64/32 OLED սարքերի միացում

128 X 64/32 OLED լարերի միացում
128 X 64/32 OLED լարերի միացում

Եկեք սկսենք ՝ NodeMCU- ն միացնելով էկրանին:

Առաջին և ամենակարևոր բանը, որ պետք է նշել, այն է, որ որոշ ցուցափեղկերում կարող են փոխվել GND և VCC հոսանքի պինները: Ստուգեք ձեր էկրանը `համոզվելու համար, որ այն նույնն է, ինչ պատկերը: Եթե կապումներն փոխված են, համոզվեք, որ փոխեք Arduino- ի կամ NodeMCU- ի միացումները:

- NodeMCU OLED լարեր

OLED VCC - NodeMCU 3.3V

OLED GND - NodeMCU GND

OLED SCL - NodeMCU D1

OLED SDA - NodeMCU D2

- Arduino Uno OLED լարեր

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino Uno A5

OLED SDA - Arduino Uno A4

- Arduino MEGA 2560 OLED լարեր

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino MEGA 2560 փին 21

OLED SDA - Arduino MEGA 2560 փին 20

Քայլ 9: Կոդ

Կոդ
Կոդ
Կոդ
Կոդ
Կոդ
Կոդ
Կոդ
Կոդ

Adafruit գրադարանը երկուսի համար իսկապես լավ օրինակներ է բերում

128x32 և 128x64 էկրաններ:

Գրադարանը գտնվում է Ֆայլ> Օրինակներ> Adafruit SSD1306> և այնուհետև ցուցադրման տեսակը Arduino IDE- ում:

Մենք պատրաստվում ենք օգտագործել 128x32 I2C օրինակը և կփոխենք այն, որպեսզի աշխատի ինչպես 128x64, այնպես էլ 128x32 էկրանների բռունցքով ՝ այն միացնելով Arduino- ին, այնուհետև NodeMCU տախտակին:

Կոդը սկսվում է ՝ ներառելով Adafruit- ի երկու գրադարանները: Այս ձեռնարկում ես շեշտելու եմ ծածկագրի միայն այն հատվածները, որոնք անհրաժեշտ են, որպեսզի մենք բեռնվենք ինչպես տախտակներում, այնպես էլ էկրաններին: Եթե ցանկանում եք ավելին իմանալ ծածկագրի մասին, գրեք մեկնաբանություն իմ բլոգում կամ ստորև բերված մեկնաբանությունների բաժնում, և ես կփորձեմ վերադառնալ ձեզ:

- Սկզբում մենք կբեռնենք կոդը 128x32 էկրանին միացված Arduino Nano- ում:

Մենք կարող ենք օգտագործել ծածկագիրը այնպես, ինչպես կա, առանց որևէ փոփոխության:

128x32- ը օգտագործում է 0x3C հասցե, ուստի այս բիթն այստեղ ամեն ինչ լավ է թվում, թույլ է տալիս կրկնակի ստուգել վերնագրերի գրադարանը, այո, այն նաև օգտագործում է 0x3C հասցեն, իսկ ցուցադրման տիպը ՝ 128x32:

- Հիմա եկեք միացնենք 128x64 էկրանը: Ինչպես գիտենք, այն լռելյայն օգտագործում է 0x3C հասցեն, այնպես որ մենք կարիք չունենք հասցեն թարմացնելու ո՛չ ծածկագրում, ո՛չ գրադարանում:

Մեզ պարզապես անհրաժեշտ է մեկնաբանել 128_32 -ը և մեկնաբանել 128_64 -ը վերնագրի գրադարանում և փոխել LCDHEIGHT- ը 64 -ի մեր ծածկագրում:

- Այժմ նույն ծածկագիրը NodeMCU- ում գործարկելու համար մենք պետք է փոխենք ևս մեկ տող մեր ծածկագրում:

«#Սահմանեք OLED_RESET 4»> «#սահմանեք OLED_RESET LED_BUILTIN» ծածկագրի մնացած մասը նույնն է, ինչ Arduino- ն

Շատ բան ցուցադրելու համար մեզ անհրաժեշտ է առաջին էկրանը մաքրելու համար

display.clearDisplay (); // Մաքրել բուֆերը

Այնուհետեւ նկարեք օբյեկտը

testdrawline (); // Գծիր գիծ

Showույց տվեք այն սարքավորման վրա

display.display (); // Դարձրեք դրանք տեսանելի ցուցադրման սարքավորման վրա:

Սպասեք որոշ ժամանակ, մինչև հաջորդ տարրը ցուցադրելը:

ուշացում (2000); // Սպասեք 2 վայրկյան

Այս օրինակում մենք ցուցադրում ենք մի քանի տարրեր, ինչպիսիք են տեքստը, տողերը, շրջանակները, ոլորման տեքստը, եռանկյունիները և այլն: Առաջ գնացեք և գործադրեք ձեր երևակայությունը և ցուցադրեք այն, ինչ ցանկանում եք այս փոքրիկ էկրաններին:

Քայլ 10: Տեքստի անհատականացում և պատկերների ավելացում

Տեքստի անհատականացում և պատկերների ավելացում
Տեքստի անհատականացում և պատկերների ավելացում
Տեքստի անհատականացում և պատկերների ավելացում
Տեքստի անհատականացում և պատկերների ավելացում
Տեքստի անհատականացում և պատկերների ավելացում
Տեքստի անհատականացում և պատկերների ավելացում

Երբեմն ձեր կոդը պետք է ցուցադրի հարմարեցված տառատեսակներ և

պատկերներ: Եթե դուք շատ լավ տիրապետում եք բիտ քարտեզագրմանը, ապա պարզապես անհրաժեշտ է ստեղծել բայթային զանգվածներ ՝ միացնելով կամ անջատելով ցուցադրման փոքրիկ LED- ները `հատուկ տառատեսակներ և պատկերներ ստեղծելու համար:

Այնուամենայնիվ, ես շատ լավ չեմ կատարում այս քարտեզագրումները և չեմ ցանկանում ժամեր ծախսել բիտ քարտեզի աղյուսակներ ստեղծելու վրա:

Այսպիսով, որո՞նք են իմ տարբերակները: Ես հիմնականում օգտագործում եմ երկու վեբ կայք ՝ սովորական տառատեսակներ և պատկերներ ստեղծելու համար: Հղումները տրված են ստորև նկարագրության մեջ:

Պատվերով տառատեսակներ

Գնացեք տառատեսակի փոխարկիչ կայք, ընտրեք տառատեսակների ընտանիքը, ոճը, չափը, Գրադարանի տարբերակը որպես «Adafruit GFX տառատեսակ», այնուհետև կտտացրեք «Ստեղծել» կոճակին: Այս էջի աջ կողմում կարող եք տեսնել, թե ինչպիսին կլինի ձեր տառատեսակը իրական էկրանին:

Ձեր ընտրության հիման վրա վեբ էջը ստեղծում է տառատեսակների վերնագրի ֆայլ: Ստեղծեք «modified_font.h» անունով ֆայլ ՝ նույն պանակում, որտեղ գտնվում է ձեր ծածկագիրը և պատճենեք և պահեք դրա մեջ ստեղծված գիծը: Այնուհետև պարզապես անհրաժեշտ է ներառել վերնագրի ֆայլը ձեր ծածկագրում `սովորական տառատեսակ օգտագործելու համար:

#ներառել «փոփոխված_ֆոնտ.հ»

Այնուհետև, պարզապես անհրաժեշտ է սահմանել տառատեսակը նախքան տեքստը ցուցադրելը `դրանով հարմարեցված տառատեսակը կիրառելու համար:

display.setFont (& Your_Fonts_Name);

Դուք կարող եք ստանալ տառատեսակի անունը վերնագրի ֆայլից, որը դուք պարզապես ավելացրել եք ձեր նախագծին: Դա այդպես է, հեշտ:

Հիշողությունը միշտ անհանգստություն է առաջացնում սովորական տառատեսակներ օգտագործելիս, այնպես որ միշտ հաշվի առեք այն բայթերը, որոնք սպառվելու են հիշողության մեջ: Պարզապես հիշեք, որ Arduino UNO- ն ունի ընդամենը 32K հիշողություն:

Պատվերով պատկերներ

Ձեր էկրանին bitmap պատկեր ցուցադրելու համար նախ պետք է ստեղծել 128 x 64/32 չափի պատկեր:

Ես օգտագործում եմ հին հին «MS Paint» - ը ՝ 128 x 64 bitmap պատկեր ստեղծելու համար, որն այնուհետև կբեռնեմ այս պատկերի փոխարկիչ կայքում: Կայքը պատկերները փոխակերպում է բայթ-տողերի, որոնք կարող են օգտագործվել Arduino և OLED էկրաններով:

Սկսեք ՝ պատկերը տեղադրելով կայքում: Այնուհետև նշեք «Invert image գույները» վանդակը և «Ելքի կոդի ձևաչափը» փոխեք «Arduino Code»-ի, այնուհետև ընտրեք կողմնորոշումը և կտտացրեք «Ստեղծել կոդ» կոճակին ՝ բայթ զանգված ստեղծելու համար: «Նախադիտում» բաժինը ցույց է տալիս, թե ինչպիսին կլինի ձեր պատկերը իրական էկրանին:

Այս ձեռնարկի հետ միասին ես ներառել եմ ծածկագիրը, որը կարող եք օգտագործել ձեր պատկերները ցուցադրելու համար: Պարզապես պետք է իմ ծածկագրի զանգվածը փոխարինել նոր ստեղծածով, այնուհետև այն բեռնել ձեր Arduino- ում:

Քայլ 11. Միացրեք 2 ցուցադրում

Միացնելով 2 էկրան
Միացնելով 2 էկրան
Միացնելով 2 էկրան
Միացնելով 2 էկրան

Երկու 128 x 64 էկրան ձեր նախագծին միացնելը հեշտ է:

Պարզապես պետք է ապավաճառել 0Ohm դիմադրիչը 0x78 հասցեից և տեղադրել այն 0x7A- ի վրա, այնուհետև ձեր ծածկագրում օգտագործել 0x3D հասցեն ՝ կանխադրված 0x3C- ի փոխարեն:

Դուք պետք է մտածեք, թե ինչու ենք մենք օգտագործում 0x3C և 0x3D հասցեները, այլ ոչ թե իրական 0x78 և 0x7A: Arduino- ն ընդունում է 7-բիթանոց հասցեն և ոչ թե 8-բիթանոց ապարատային հասցեները: Այսպիսով, մենք նախ պետք է փոխարկենք 8-բիթանոց հասցեն երկուական, այնուհետև կտրենք ամենաքիչ նշանակալի բիթը ՝ 7 բիթ ստանալու համար: Այնուհետև փոխարկեք 7 բիթը HEX- ի ՝ 0x3C կամ 0x3D հասցեները ստանալու համար, որոնք մուտքագրում եք ձեր ծածկագրում:

Նախ, նախաստորագրեք ցուցադրումը ՝ դրան տալով եզակի անուն.

Adafruit_SSD1306 ցուցադրում 1 (OLED_REST);

Adafruit_SSD1306 ցուցադրում 2 (OLED_REST);

Այնուհետև ձեր ծածկագրում օգտագործեք ցուցադրման 1 -ը և էկրանը 2 -ը ՝ սկզբնական հայտարարությունները կանչելու համար, որոնցում կան սարքի հասցեներ:

ցուցադրում 1. սկիզբ (SSD1306_SWITCHCAPVCC, 0x3C); // ցուցադրել 1 op հասցե 0x3C

display2.begin (SSD1306_SWITCHCAPVCC, 0x3D); // ցուցադրել 2 op հասցեն 0x3D

Ահա և վերջ, այժմ կարող եք առաջ գնալ և անել այն, ինչ ցանկանում եք ՝ օգտագործելով ցուցադրման 1 -ը կամ ցուցադրումը 2 -ը ձեր մնացած ծածկագրում: Ես այս ձեռնարկի օրինակ եմ բերել:

Էլեկտրամոնտաժը ճիշտ նույնն է, ինչ մենք արել ենք նախկինում, պարզապես անհրաժեշտ է մեկ այլ ցուցադրում ավելացնել Arduino- ի կամ NodeMCU- ի նույն I2C կապում: Հասցեների հիման վրա MCU- ն այնուհետև տվյալները ուղարկում է I2C տվյալների տողում:

Քայլ 12: Ավելի քան 2 ցուցադրման միացում

Ավելի քան 2 ցուցադրման միացում
Ավելի քան 2 ցուցադրման միացում
Ավելի քան 2 ցուցադրման միացում
Ավելի քան 2 ցուցադրման միացում
Ավելի քան 2 ցուցադրման միացում
Ավելի քան 2 ցուցադրման միացում

Հիմա ի՞նչ անել, եթե ցանկանում եք միացնել ավելի քան 2 էկրան:

Arduino- ն ունի սահմանափակ քանակությամբ կապում և, հետևաբար, դուք չեք կարող դրան ամրացված ունենալ ավելի քան որոշակի քանակությամբ վահան: Ավելին, այն ունի միայն մեկ զույգ I2C ավտոբուս:

Այսպիսով, ինչպե՞ս կարող ենք ավելի քան 2 I2C էկրան կցել Arduino- ին: Խաբեությունը TCA9548 Multiplexer- ի օգտագործումն է:

TCA9548- ը թույլ է տալիս մեկ միկրոհսկիչին հաղորդակցվել մինչև «64 սենսորների» հետ, որոնք ունեն նույն կամ տարբեր I2C հասցե ՝ յուրաքանչյուր սենսորային ստրոբուսին հատկացնելով յուրահատուկ ալիք:

Երբ մենք խոսում ենք երկու սարքերի վրա տվյալներ ուղարկելու մասին բազմաթիվ սարքեր, ապա մեզ անհրաժեշտ է դրանց հասցեագրման միջոց: Դա նույնն է, ինչ փոստատարը գա մեկ ճանապարհով և փոստի փաթեթները գցի տարբեր տներ, քանի որ դրանց վրա տարբեր հասցեներ են գրված:

Multiplexer- ը միանում է միկրոկառավարիչի 3V3, GND, SDA և SCL գծերին: Ստրուկի տվիչները միացված են տախտակի վրա տեղադրված SCL/SDA ստրուկի ութ պորտերից մեկին: Ալիքներն ընտրվում են ՝ TCA9548A- ին ուղարկելով իր I2C հասցեն (0x70 {կանխադրված} - 0x77), որին հաջորդում է ալիքի համարը (0b00000001 - 0b10000000): Այս մուլտիպլեքսերներից առավելագույնը 8-ը կարող եք միացված լինել 0x70-0x77 հասցեների վրա `նույն I2C հասցեագրված մասերից 64-ը վերահսկելու համար: A0, A1 և A2 հասցեների երեք բիթերը VIN- ին միացնելով կարող եք ստանալ հասցեների տարբեր համադրություն: Ես դա մանրամասն կբացատրեմ TCA9548A ճեղքման տախտակի իմ հաջորդ ձեռնարկում: Առայժմ, պարզապես միացրեք 8 OLED սարք այս տախտակին և արագ նայեք ծածկագրին:

Միացում:

VIN- ից 5V (կամ 3.3V)

GND գետնին

SCL- ից I2C ժամացույց

SDA- ից մինչև I2C տվյալներ

Այնուհետև տվիչները տվեք VIN, GND և օգտագործեք SCn / SDn մուլտիպլեքս ավտոբուսներից մեկը

Այժմ, Int կոդը թույլ է տալիս սկսել ՝ ներառելով «Մետաղալար» գրադարանը և բազմապատկիչների հասցեն սահմանելով:

#ներառել «Wire.h»

#ներառում

#սահմանեք MUX_Հասցե 0x70 // TCA9548A Կոդավորիչների հասցե

Այնուհետև մենք պետք է ընտրենք այն նավահանգիստը, որին ցանկանում ենք հաղորդակցվել և դրա վերաբերյալ տվյալները ուղարկել այս գործառույթի միջոցով.

դատարկ tcaselect (uint8_t i) {

եթե (i> 7) վերադարձ;

Wire.beginTransmission (MUX_ Հասցե);

Wire.write (1 << i);

Wire.endTransmission ();

}

Հաջորդը մենք նախաստորագրելու ենք ցուցադրման կարգաբերման բաժինը `զանգահարելով« u8g.begin (); »; MUX- ին կցված յուրաքանչյուր ցուցադրման համար "tcaselect (i);"

Նախաստորագրվելուց հետո մենք կարող ենք անել այն, ինչ ուզում ենք, պարզապես գործառույթը կանչելով «tcaselect (i);»: որտեղ «i» - ը բազմապատկված ավտոբուսի արժեքն է, այնուհետև տվյալներն ու ժամացույցը համապատասխանաբար ուղարկելը:

Քայլ 13: Առավելություններն ու թերությունները

Առավելություններն ու թերությունները
Առավելություններն ու թերությունները

OLED- ի պատկերը գեղեցիկ է: Այնուամենայնիվ, OLED- ները նույնպես ունեն

թերություններ: Քանի որ OLED էկրանները պարունակում են օրգանական նյութեր, դրանց կյանքի տևողությունը ավելի կարճ է, քան LCD էկրանները: Բացի այդ, շատ OLED էկրաններ այրվում են նույն պատկերը երկար ժամանակ ցուցադրելուց հետո: Այրվելուց հետո պատկերը մնում է էկրանին նույնիսկ մեկ այլ պատկեր ցուցադրելուց հետո: Այսպիսով, համոզվեք, որ անընդհատ թարմացնում եք էկրանը ամեն մի վայրկյանը մեկ: Waterուրը կարող է ակնթարթորեն վնասել այդ ցուցադրման օրգանական նյութերը:

Առավելությունները

Հետին լուսավորության կարիք չկա

Disուցադրումները շատ բարակ են և թեթև

Powerածր էներգիայի սպառումը

Դիտման անկյուններն ավելի լայն են, քան LCD- ները

Պայծառությունն ու հակադրությունը հիանալի են

Բարձր արագություն և ցածր արձագանքման ժամանակ

Խորը սև գույն

Թերություններ

Թանկարժեք տեխնոլոգիա

Կարճ կյանքի ցիկլ

OLEDS- ն ավելի հավանական է, որ այրվի

Waterրի վնաս

Քայլ 14: Ընդհանուր սխալներ

Ընդհանուր սխալներ
Ընդհանուր սխալներ

Ուսուցումն ավարտելու համար եկեք խոսենք մի քանի սովորական սխալների մասին

մարդիկ կատարում են այս ցուցադրումները օգտագործելիս.

- Միշտ եռակի ստուգեք քորոցները ՝ ձեր նախագծում օգտագործելուց առաջ

- Վերցրեք գրադարանի ճիշտ հասցեն վերնագրի ֆայլում և ձեր ծածկագրում

#սահմանեք SSD1306_I2C_ADDRESS 0x3C // Adafruit_SSD1306.h- ում

եւ

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // ձեր ծածկագրում

Եթե հասցեն սխալ է, OLED- ը ոչինչ չի ցուցադրի

- Theուցադրման չափը պետք է փոխվի վարորդի մեջ, նախքան այն օգտագործելը: Եթե այն չփոխվի, դուք կստանաք սխալի հաղորդագրություն, երբ փորձում եք ստուգել կոդը

#սխալ («Բարձրությունը սխալ է, խնդրում ենք շտկել Adafruit_SSD1306.h!»);

- Եթե օգտագործում եք NodeMCU- ն, համոզվեք, որ OLED_RESET- ը փոխարինում եք 4 -ից մինչև LED_BUILTIN

#սահմանեք OLED_RESET LED_BUILTIN

Ես ունեմ տեսարաններ, ովքեր ամեն տեսակ բաներ են պատրաստում ՝ օգտագործելով այս OLED էկրանը: Ոմանք նույնիսկ տեսախաղեր են պատրաստել և բոլորը: Ես իսկապես շահագրգռված չեմ տեսախաղ պատրաստել այս փոքրիկ ցուցադրման միջոցով: Այնուամենայնիվ, ես հիմա ձեզ կթողնեմ ՝ ուսումնասիրելու ձեր երևակայությունը և հանդես գալու զարմանալի գաղափարներով:

Քայլ 15: Հղումներ

- Օրագիր ՝

- Ավելացնել պատկեր ՝

- Պատվերով տեքստ ՝

- Adafruit ցուցադրման գրադարան ՝

-Adafruit GFX գրադարան ՝

- u8glib գրադարան ՝ https://code.google.com/archive/p/u8glib/ կամ

Եթե ցանկանում եք օգտագործել ավելի փոքր էկրան, օգտագործեք լռելյայն 128_32, հակառակ դեպքում ավելի մեծ ցուցադրման համար մեկնաբանեք 128_32 -ը և մեկնաբանեք 128X64 NO_ACK- ը ձեր ծածկագրում (պարզապես մեկնաբանեք ձեր օգտագործած էկրանի տեսակը) (տառատեսակները տառատեսակների գրադարանում են)

Խորհուրդ ենք տալիս: