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

Ներածություն ESP32 Lora OLED էկրան ՝ 8 քայլ
Ներածություն ESP32 Lora OLED էկրան ՝ 8 քայլ

Video: Ներածություն ESP32 Lora OLED էկրան ՝ 8 քայլ

Video: Ներածություն ESP32 Lora OLED էկրան ՝ 8 քայլ
Video: #2 FLProg Basics Elements & Trigger | ESP32 NodeMCU | Arduino Visual Embedded Programming 2024, Հուլիսի
Anonim
Image
Image
Ներածություն ESP32 Lora OLED էկրան
Ներածություն ESP32 Lora OLED էկրան

Սա ևս մեկ տեսանյութ է ESP32 LoRa- ի ներածության վերաբերյալ: Այս անգամ մենք հատուկ կխոսենք գրաֆիկական ցուցադրման մասին (128x64 պիքսել): Մենք կօգտագործենք SSD1306 գրադարանը `այս OLED էկրանին տեղեկատվություն ցուցադրելու և XBM պատկերների միջոցով անիմացիայի օրինակ ներկայացնելու համար:

Քայլ 1: Օգտագործված ռեսուրսներ

Օգտագործված ռեսուրսներ
Օգտագործված ռեսուրսներ

1 Heltec WiFi LoRa 32

Նախատախտակ

Քայլ 2: Theուցադրել

Theուցադրումը
Theուցադրումը
Theուցադրումը
Theուցադրումը

Boardարգացման տախտակի վրա օգտագործվող էկրանը OLED է ՝ 0,96 դյույմ:

Այն ունի 128x64 և մոնոխրոմ է:

Այն ունի I2C հաղորդակցություն և միացված է ESP32- ին 3 լարերի միջոցով.

SDA GPIO4- ում (տվյալների համար)

SCL GPIO15- ի վրա (ժամացույցի համար)

RST GPIO16- ում (վերակայման և ցուցադրման մեկնարկի համար)

Քայլ 3. SSD1306 գրադարանը

SSD1306 գրադարան
SSD1306 գրադարան

Սա կարելի է գտնել Heltec-Aaron-Lee- ի տրամադրած գրադարանների հետ միասին:

Այն ունի մի քանի գործառույթ ՝ տողեր գրելու, գծեր գծելու, ուղղանկյուններ, շրջանակներ և պատկերներ ցուցադրելու համար:

github.com/Heltec-Aaron-Lee/WiFi_Kit_series

Քայլ 4: Շարժապատկերներ և XBM ֆայլեր

Շարժապատկերներ և XBM ֆայլեր
Շարժապատկերներ և XBM ֆայլեր
Շարժապատկերներ և XBM ֆայլեր
Շարժապատկերներ և XBM ֆայլեր
Շարժապատկերներ և XBM ֆայլեր
Շարժապատկերներ և XBM ֆայլեր

Գրադարանի drawXbm գործառույթը կօգտագործենք անիմացիա ցուցադրելու համար:

XBM պատկերի ձևաչափը բաղկացած է նիշերի զանգվածից, որտեղ յուրաքանչյուր տարր տեքստային տեսքով ներկայացնում է մոնոխրոմ պիքսելների հավաքածու (յուրաքանչյուրը 1 բիթ) ՝ վեցանկյուն արժեքի միջոցով: Սրանք համարժեք են մեկ բայթին:

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

Բացի զանգվածից, պատկերի չափը որոշող երկու պարամետր ներառված է:

Անիմացիան կառուցելու համար մեզ անհրաժեշտ են պատկերներ, որոնք կձևավորեն շրջանակները:

Աշխատելու համար մենք կարող ենք օգտագործել պատկերի խմբագրման ցանկացած ծրագրակազմ: Միակ նախազգուշական միջոցները, որոնք մենք պետք է ձեռնարկենք, այն է, որ նախ չափը պահպանենք էկրանին և օգտագործենք միագույն ֆայլեր:

Ֆայլեր ստեղծելու համար մենք կարող ենք նկարել դրանք կամ ներմուծել պատկերներ: Այստեղ մենք որոշեցինք խմբագրել գունավոր պատկերը PaintBrush- ի միջոցով և գծեցինք շրջանակներից յուրաքանչյուրը

Սկզբնական պատկեր - 960x707 պիքսել --p.webp

Հաջորդ քայլը պետք է դարձնել այն մոնոխրոմ ՝ պահպանելով այն որպես մոնոխրոմ բիթմապ:

Այնուհետև մենք այն չափափոխում ենք էկրանի հետ համատեղելի չափի:

Հատուկ ուշադրություն դարձրեք չափման միավորներին: Այս դեպքում մենք պատկերը այնպես ենք հարմարեցրել, որ այն զբաղեցնի էկրանի ամբողջ բարձրությունը (ուղղահայաց = 64 պիքսել):

Պատկերը ճիշտ չափսերով մենք այն խմբագրելու ենք ՝ շրջանակներ կազմելու համար: Այստեղ մենք ջնջում ենք ազդանշանի մակարդակի յուրաքանչյուր աղեղ և պահում դրանք որպես համապատասխան շրջանակներ:

Այժմ մենք պետք է BMP ֆայլերը փոխարկենք XBM ձևաչափի:

Կան մի քանի ծրագրային տարբերակներ, որոնք կարող են կատարել այս փոխարկումը: Մենք նաև ընտրեցինք GIMP- ը որպես խմբագրի տարբերակ:

Մեր օրինակում մենք օգտագործել ենք PaintBrush ֆայլերը գեներացնելու և խմբագրելու համար: Այնուամենայնիվ, այս գործընթացներից յուրաքանչյուրը կարող էր կատարվել Gimp- ում (կամ որևէ այլ խմբագրի):

Փոխակերպելու համար մենք նախ բացում ենք ֆայլը:

Բաց պատկերով մենք կարող ենք ընտրել Ֆայլ => Արտահանել որպես…

Արտահանման պատկերի պատուհանում մենք պետք է փոխենք նպատակակետի ֆայլի ընդլայնումը XBM- ի համար: Gimp- ը պատասխանատու կլինի ցանկալի ձևաչափը բացահայտելու և ավելի շատ տարբերակներ ներկայացնելու համար…

Արտահանելիս Gimp- ը կներկայացնի այլ տարբերակներ: Մենք կարող ենք թողնել կանխադրված արժեքները:

Բոլոր ֆայլերը փոխակերպելուց հետո մենք կունենանք չորս XBM ֆայլ ՝ մեկը յուրաքանչյուր շրջանակի համար:

Այժմ եկեք պատճենենք դրանք աղբյուրի կոդի թղթապանակում և վերանվանենք դրանք ՝ փոխելով դրանց ընդլայնումները.h:

Քայլ 5: Ելք XBM ֆայլերից

Ելք XBM ֆայլերից
Ելք XBM ֆայլերից

Մենք կարող ենք բացել XBM ֆայլերը ցանկացած տեքստային խմբագրիչում, որտեղ մենք կտեսնենք պատկերի մատրիցան և պատկերի չափի տեղեկատվությունը, որոնք արդեն սահմանված էին:

Քայլ 6: Աղբյուրի կոդ

Աղբյուրի ծածկագիր

Մենք կներառենք անհրաժեշտ գրադարանները, ինչպես նաև պատկերային ֆայլերը: Մենք սահմանում ենք պատկերի դիրքերը և անցումային միջակայքը: Մենք նաև մատնանշում ենք ESP32- ին միացված OLED կապում: Վերջապես, մենք ստեղծում և կարգավորում ենք Display օբյեկտը:

// Ներառել որպես մատենագիտական անհրաժեշտություն #ներառել #ներառել «SSD1306.h» // ներառել պատկերների #ներառել «frame1.h» #include «frame2.h» #include «frame3.h» #include «frame4.h» // definições de posição da imagem e intervalo de transição #define posX 21 #define posY 0 #define intervalo 500 // Pinos do OLED estão conctados ao ESP32: I2C // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLE - GPIO16 #սահմանել SDA 4 #սահմանել SCL 15 #սահմանել RST 16 // OST RST ծրագրեր ՝ ծրագրային ապահովման SSD1306 էկրանով (0x3c, SDA, SCL, RST); // Cria e ajusta o Objeto ցուցադրում

Աղբյուրի ծածկագիր. Setup ()

Նախագծեք էկրանը և ուղղահայաց շրջեք էկրանը: Գործողությունը պարտադիր չէ:

void setup () {display.init (); // ցուցադրում display.flipScreenVertically (); // inverte verticalmente a tela (ըստ ցանկության)}

Աղբյուրի կոդ ՝ Loop ()

Օղակի մեջ առաջին բանը, որ պետք է անել, էկրանը մաքրելն է: Մենք բեռնում ենք շրջանակը 1 բուֆերի մեջ ՝ օգտագործելով posX և posY սկզբնական դիրքերը: Մենք հայտնում ենք պատկերի չափը frame1_width և frame1_height- ով, և պատկերի բիթերը պարունակող զանգվածի անունը: Մենք ցուցադրում ենք բուֆերը էկրանին և սպասում ենք միջակայքի ՝ հաջորդ շրջանակը ցուցադրելուց առաջ:

void loop () {display.clear (); // limpa tela // carrega para o buffer o frame 1 // usando as posições iniciais posX e posY // informa o tamanho da imagem com frame1_width e frame1_height // informa o nome da matriz que modern os bits da imagem, no caso frame1_bits display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // mostra o buffer no display display.display (); // aguarda um intervalo antes de mostrar o próximo շրջանակի հետաձգում (intervalo);

Մենք կրկնում ենք գործընթացը մնացած բոլոր շրջանակների համար:

// կրկնել այս ընթացակարգից դուրս գտնվող շրջանակներից display.clear (); display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); display.display (); հետաձգում (intervalo); display.clear (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); display.display (); հետաձգում (intervalo); display.clear (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); display.display (); հետաձգում (intervalo); }

Քայլ 7: Կոդի վերբեռնում կատարելը

Կոդի վերբեռնում կատարելը
Կոդի վերբեռնում կատարելը
Կոդի վերբեռնում կատարելը
Կոդի վերբեռնում կատարելը
Կոդի վերբեռնում կատարելը
Կոդի վերբեռնում կատարելը

Բաց IDE- ով, բացեք աղբյուրի կոդով ֆայլը.ino ֆայլը կրկնակի սեղմելով, կամ անցնելով Ֆայլի ընտրացանկ:

USB- ին միացված Heltec- ով ընտրեք ընտրացանկ Գործիքներ => Քարտ ՝ «Heltec_WIFI_LoRa_32»

Դեռ Գործիքների ցանկում ընտրեք COM նավահանգիստը, որտեղ միացված է Heltec- ը:

Կտտացրեք «ԲԱՌՆԵԼ» կոճակը…

… Եվ սպասեք եզրակացությանը:

Քայլ 8: Ֆայլեր

Ներբեռնեք ֆայլերը.

PDF

ԻՆՈ

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