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

BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ. 12 քայլ (նկարներով)
BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ. 12 քայլ (նկարներով)

Video: BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ. 12 քայլ (նկարներով)

Video: BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ. 12 քայլ (նկարներով)
Video: bluBerriSIX - Arduino TFT Project - Happy 20th Birthday Blackberry 850! 2024, Հուլիսի
Anonim
BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ
BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ
BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ
BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ

2019 -ը RIM Blackberry 850 -ի 20 -ամյակն է: Կանադայի այս փոքրիկ գյուտը փոխեց աշխարհի հաղորդակցության ձևը: Այն վաղուց անցել է, բայց նրա ժառանգությունը շարունակվում է:

Այս ձեռնարկում դուք կսովորեք, թե ինչպես օգտագործել MCUfriend.com 2.4 TFT ցուցադրման վահանը Uno/Mega- ի համար: Դուք կսովորեք, թե ինչպես ցուցադրել գրաֆիկական առարկաներ և տեքստ և ինչպես ձեռք բերել և գործել հպման իրադարձությունների վրա: Սա էկրանը շատ նման է Adafruit- ին և այլ TFT վահանակներին/էկրաններին: Այսպիսով, եթե դուք այստեղ եք, մնացեք ցուցադրության համար:

Մենք կկառուցենք իմ bluBerriSIX ուրվագծի պարզեցված 2 հավելվածի տարբերակը:

Եկեք սկսենք!

Քայլ 1: BluBerriSIX - ակնարկ

Image
Image
BluBerriSIX - ակնարկ
BluBerriSIX - ակնարկ
BluBerriSIX - ակնարկ
BluBerriSIX - ակնարկ

BluBerriSIX ծրագիրը վեց ֆունկցիոնալ TFT նախագիծ է:

Այն ներառում է.

Լապտեր

Հյութալի «7» ծրագիր (կախարդական «8» գնդակի նման)

Հաշվիչ

Հեռավորության չափման ծրագիր `օգտագործելով SR-04 ուլտրաձայնային հեռավորության սենսորը

Temերմաստիճան և խոնավություն

Տեքստային ծրագիր ՝ օգտագործելով HC-12:

Այս նախագիծը վերցրեց 1100 տող կոդ: Մենք կկառուցենք զգալիորեն ավելի պարզ տարբերակ, որը դեռ ցուցադրում է TFT ցուցադրման և հպման զգայարանների հասկացությունները:

Քայլ 2: Ի՞նչ է անհրաժեշտ:

Ի՞նչ է անհրաժեշտ
Ի՞նչ է անհրաժեշտ
Ի՞նչ է անհրաժեշտ
Ի՞նչ է անհրաժեշտ

- Arduino Uno կամ Mega 2560

- MCUfriend 2.4 TFT վահան

Հետևյալ գրադարանները.

- Adafruit_GFX գրադարան

- Adafruit Touchscreen գրադարան

- MCUFRIEND_kbv գրադարան

Այս գրադարանները կարող են տեղադրվել Գրադարանի մենեջերի հետ Arduino IDE- ի ներսում:

Գրադարան բեռնելու համար անցեք «Էսքիզ» -> Ներառել գրադարան -> Գրադարանների կառավարում … ընտրացանկի տարբերակ:

«Filterտեք ձեր որոնումը …» դաշտում մուտքագրեք գրականության անվան առաջին մի քանի նիշերը, ապա ընտրեք և տեղադրեք համապատասխան գրադարանը: Ավարտելուց հետո պարզապես ետ արեք ձեր ելքը այս էկրանից:

Երբ տեղադրում եք TFT վահանը Uno/Mega- ում, ՇԱՏ CԳՈՇԱԵՔ ՝ համոզվելու համար, որ կապերը ճիշտ եք շարում: Ես սխալ դասավորեցի իմ առաջին վահանը և տապակեցի այն: Ես երկու շաբաթ շարունակ մեծ հիասթափություն ապրեցի ՝ փորձելով գտնել ճիշտ գրադարաններ, նախքան հասկանալը, որ էկրանը մեռած է: ԶԳՈՒՅՇ ԵՂԻՐ

Քայլ 3: Մեր նախագիծը

Մեր նախագիծը
Մեր նախագիծը
Մեր նախագիծը
Մեր նախագիծը
Մեր նախագիծը
Մեր նախագիծը
Մեր նախագիծը
Մեր նախագիծը

Մենք կկառուցենք bluBerriSIX էսքիզի ավելի պարզ տարբերակ:

Կունենա, - շաղ տալու էկրան

- հիմնական ընտրացանկի էկրան `երկու կոճակով

- Saucy 7 ծրագիր

- տեքստի մուտքագրման պարզեցված ծրագիր

Դուք նաև կկարողանաք վերադառնալ հիմնական ընտրացանկ ՝ կտտացնելով «Տուն» պատկերակին այս հատուկ ցուցադրման ներքևի ձախ մասում: Եթե դուք չունեք նման պատկերակ, ապա պարզապես պետք է սահմանեք ձեր էկրանին «տան» տարածք: Այս ձեռնարկում դուք կսովորեք, թե ինչպես որոշել էկրանի հպման տարածքները:

Չնայած սա պարզեցված նախագիծ է, այն դեռ բավականին երկար է: Ես կտրամադրեմ Arduino էսքիզների տարբերակները յուրաքանչյուր հիմնական փուլում, որպեսզի ցանկության դեպքում դրանք վերբեռնեք:

Քայլ 4: Վերնագրի կոդ, Գլոբալ փոփոխականներ, Էկրանի կարգավորում

Վերնագրի ծածկագիր, Գլոբալ փոփոխականներ, Էկրանի կարգավորում
Վերնագրի ծածկագիր, Գլոբալ փոփոխականներ, Էկրանի կարգավորում
Վերնագրի ծածկագիր, Գլոբալ փոփոխականներ, Էկրանի կարգավորում
Վերնագրի ծածկագիր, Գլոբալ փոփոխականներ, Էկրանի կարգավորում

Ամբողջ նախագիծը խիստ փաստաթղթավորված է: Բայց մանրամասները հաջորդում են:

Սկսեք նոր Arduino նախագիծ և անվանեք այն «tft demo» կամ ցանկացած այլ անուն, որը ցանկանում եք:

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

Մենք նաև սահմանում ենք Անալոգային կապում ՝ հղում անելով դրանց էկրանին հատուկ նպատակներին:

Մենք tft օբյեկտը (ցուցադրում) և ts օբյեկտը (հպում) սահմանում ենք որպես համապատասխան գործառույթների հղումներ:

Մենք սահմանում ենք 16 բիթ գույնի հաստատուններ, որպեսզի դյուրին դարձնենք էկրանի և տեքստի և գրաֆիկական օբյեկտների գույները: Դուք կնկատեք, որ կա վեբ կայքի URL, որն ունի Գույն ընտրիչ և փոխարկիչ ՝ տեսանելի գույները 16 բիթանոց տասնվեցական արժեքներին փոխարկելու համար: Դա շատ օգտակար գործիք է:

Երկրորդ ծածկագրի վահանակում մենք սահմանում ենք գլոբալ փոփոխականները `մեր ծրագրին հատուկ նպատակների համար:

CString, letter and letterX և letterY տողերն ու զանգվածները օգտագործվում են ա) տեքստը մուտքագրելու հավելվածի կոճակների վրա տառերը ցուցադրելու և բ) հպման x և y կոորդինատներին համապատասխանելու համար յուրաքանչյուր համապատասխան տառի x և y կոորդինատներին: ստեղնաշարը: Այս մասին ավելի մանրամասն, երբ հասնենք ուրվագծի այդ հատվածին:

funcX , funcY և func այն զանգվածներն են, որոնք աշխատում են որոշելու համար, թե որ ծրագրի կոճակը սեղմված է հիմնական ընտրացանկի էկրանին, այնուհետև օգտագործեք այդ տեղեկատվությունը `համապատասխան ծրագիրը գործարկելու համար:

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

Ռեժիմի փոփոխականը կկարգավորի, թե որ էկրանն է ցուցադրվում, և tMode փոփոխականը կկարգավորի, թե որ հպման մեթոդներն են օգտագործվում տվյալ պահին:

Setup () բլոկում մենք բացում ենք Serial channel, եթե ցանկանում ենք օգտագործել Serial.println () հրամանները վրիպազերծման համար: Ձեզ հարկավոր չէ այս տողը, եթե չցանկանաք կատարել Serial Monitor կարգաբերում:

Հաջորդ չորս տողերը պարզապես tft օբյեկտի տեղադրման կոդ են:

Հաջորդը մենք դնում ենք էկրանի կողմնորոշումը Դիմանկարային ռեժիմին:

RandomSeed () հրամանը պարզապես գործարկում է պատահական թվերի գեներատոր ՝ հետագայում Saucy 7 հավելվածի օգտագործման համար:

Վերջապես մենք կոչ ենք անում շաղ տալ էկրանի մեթոդը:

Քայլ 5. Ստեղծեք հեղուկ էկրան և հասկացեք ցուցադրումը ընդդեմ հպման քարտեզագրման

Շփման էկրանի կառուցում և ցուցադրման ընկալում ընդդեմ հպման քարտեզագրման
Շփման էկրանի կառուցում և ցուցադրման ընկալում ընդդեմ հպման քարտեզագրման
Շփման էկրանի կառուցում և ցուցադրման ընկալում ընդդեմ հպման քարտեզագրման
Շփման էկրանի կառուցում և ցուցադրման ընկալում ընդդեմ հպման քարտեզագրման

Այժմ մենք կսկսենք կառուցել հեղուկ էկրան:

Բայց նախ, խնդրում ենք դիտել նկարը էկրանի և հպման քարտեզագրման համար: Ուշադրություն դարձրեք, որ ծագումը տարբեր վայրերում է: Displayուցադրման համար ծագումը (0, 0) գտնվում է էկրանի վերևի ձախ մասում (երբ վերակայման կոճակը վերևում է) և աճում է ձախից աջ և վերևից ներքև:

Հպման հայտնաբերման համար ծագումը գտնվում է էկրանի ներքևի ձախ անկյունում և աճում է ձախից աջ և ներքևից վերև:

Այսպիսով, ISՈPLԱԴՐԵԼՈ TO ԵՎ Շոշափման քարտեզները սահմանվում են առանձին և ունեն տարբեր լուծումներ: Theուցադրման թույլատրելիությունը 240 -ը 320 -ն է, իսկ հպումն ունի շատ ավելի բարձր լուծաչափ, ինչպես շուտով կտեսնեք:

Գնացեք ձեր ուրվագծի տարածք loop () {} մեթոդի տակ, և մենք մուտքագրելու ենք splash () մեթոդի կոդը:

Մենք սկսում ենք fillScreen () հրահանգը կատարել `էկրանը լրացնելու ՎԻerԱԿԱԳՐՈ code ծածկագրում մեր սահմանած Սպիտակ գույնով:

Այնուհետև տեքստի չափը սահմանում ենք «5»: Սա համեմատաբար մեծ հիմնական տեքստի չափ է: Մենք տեքստի կուրսորի համար սահմանում ենք x և y դիրքերը և տեքստի գույնը: Վերջապես print («TFT») հրամանը իրականում գծում է կապույտ, «5» չափի տեքստը նշված դիրքում:

Տեքստի չափը մեծացնելուն պես կտեսնեք, որ կերպարներն ավելի ու ավելի են կուտակվում: Այսպիսով, 5 -ից բարձր լինելը, հավանաբար, օգտակար չէ: Այս ձեռնարկի վերջում ես ձեզ ցույց կտամ, թե ինչպես օգտագործել bitmap տառատեսակներ ՝ ձեր ծրագրերում ավելի գեղեցիկ տեսք ստանալու համար: Փոխանակումն այն է, որ bitmap տառատեսակների հավաքածուները ձեր Arduino- ում շատ հիշողություն են խլում, ինչը կսահմանափակի ձեր էսքիզների չափերը:

Մենք կրկնում ենք նմանատիպ հրամաններ շաղ տալու էկրանին մնացած երկու տեքստային տարրերի համար:

Ի վերջո, մենք հետաձգում ենք 2,5 վայրկյան ՝ օգտվողին հնարավորություն ընձեռելու կարդալ էկրանի բովանդակությունը, մինչև ծրագիրը տեղափոխվի հիմնական ընտրացանկի էկրան:

Շարունակեք և վերբեռնեք այս ուրվագիծը ձեր Arduino- ում: Այն պետք է ցուցադրի շաղ տալ էկրանը:

Քայլ 6. Հպման քարտեզագրման ախտորոշիչ գործիքի պատրաստում

Հպման քարտեզագրման ախտորոշիչ գործիք պատրաստելը
Հպման քարտեզագրման ախտորոշիչ գործիք պատրաստելը
Հպման քարտեզագրման ախտորոշիչ գործիք պատրաստելը
Հպման քարտեզագրման ախտորոշիչ գործիք պատրաստելը

ShowTouch () մեթոդը շատ օգտակար է, որը կօգնի ձեզ ստանալ էկրանի տարբեր մասերի հպման կոորդինատները: Դուք պետք է դա անեք ՝ ձեր կոճակների հպման տարածքները որոշելու համար:

Շարունակեք և մուտքագրեք այս մեթոդը ձեր նախկինում կատարված splash () մեթոդից ներքև:

Ահա թե ինչպես է այն աշխատում:

Եթե հայտարարությունը որոշում է, թե արդյոք բավական ժամանակ է անցել վերջին հպումից հետո: Այն տևում է ընթացիկ համակարգի ժամանակը millis () և հանում է վերջին հպման ժամանակը: Եթե դա ավելի մեծ է, քան tThresh արժեքը (200 միլիվայրկյան), այն ընդունում է հպումը: Հակառակ դեպքում այն անտեսելու է պատահական բազմակողմանի իրադարձությունները:

Հաջորդը, getpoint () հրամանը ստանում է հպման x, y և z կոորդինատները: Z կոորդինատը հպման ճնշման չափիչ է:

Եթե ճնշումը գտնվում է էսքիզների վերնագրում մեր սահմանած առավելագույն և նվազ հաստատունների սահմաններում, ապա մեթոդը նախ կփոխի YP և XM կապերը դեպի OUTPUT ՝ էկրանը դնելով ISԱՆԿԱԱ ռեժիմ:

Հաջորդը այն գծելու է սպիտակ ուղղանկյուն `ջնջելու նախկինում ցուցադրված կոորդինատները:

Էսքիզն այնուհետև տառատեսակը դնում է 2 չափի, սև գույնի և էկրանին ցուցադրում է x (p.x) և y (p.y) կոորդինատները: Այնուհետև կարող եք նշել այս վայրերը, որոնք կօգնեն ծրագրավորել ձեր հպման գոտիները ձեր ուրվագծերի համար:

Մեթոդի ներքևում գտնվող if հայտարարությունը ստուգեք ՝ արդյոք էկրանին սեղմված է «Գլխավոր» կոճակը: '<=' օպերատորները թույլ են տալիս Գլխավոր կոճակի լայնությունը և բարձրությունը: Նշված կոորդինատները Տուն կոճակի x կենտրոնի և y կենտրոնի կոորդինատներն են: Եթե այն սեղմված է, ռեժիմը սահմանվում է 0, որն ի վերջո կնշանակի «Գնալ հիմնական ընտրացանկի էկրան»: Այդ մասին ավելի ուշ:

Վերջապես, մենք lastTouch- ը թարմացնում ենք ընթացիկ համակարգի ժամանակային millis () - ով ՝ պատրաստվելով ավելի ուշ հպման իրադարձությանը:

Խնդրում ենք այժմ անցնել loop () բլոկը և ավելացնել տող showTouch ();

Այս պահին վերբեռնեք ձեր ուրվագիծը և փորձեք այն: Այն կքաշի շաղ տալու էկրանին, և եթե սկսեք դիպչել էկրանին, էկրանին կցուցադրվեն TOUCH x և y կոորդինատները:

Նախքան առաջ շարժվելը, եկեք նորից անդրադառնանք ծածկագրի երկու կարևոր տողերին.

pinMode (YP, OUTPUT); // վերականգնել TFT կառավարման կապում

pinMode (XM, OUTPUT); // հպում հայտնաբերելուց հետո ցուցադրվելու համար

Timeանկացած պահի, երբ ցանկանում եք ինչ -որ բան ցուցադրել էկրանին, ՊԵՏՔ է կատարել այս երկու հրամանները `էկրանը ՀՈUՎԱ mode ռեժիմից DԱՆԿԱԱ ռեժիմի փոխելու համար: Հակառակ դեպքում, ձեր ցուցադրման հրամանները չեն աշխատի:

Լավ արված մինչ այժմ: Դադար տուր!

Քայլ 7: Կառուցեք հիմնական ընտրացանկի էկրանը

Կառուցեք հիմնական ընտրացանկի էկրանը
Կառուցեք հիմնական ընտրացանկի էկրանը
Կառուցեք հիմնական ընտրացանկի էկրանը
Կառուցեք հիմնական ընտրացանկի էկրանը
Կառուցեք հիմնական ընտրացանկի էկրանը
Կառուցեք հիմնական ընտրացանկի էկրանը

Այժմ մենք կկառուցենք մեր հիմնական ընտրացանկի էկրանը երկու կոճակով, որոնք կարող եք սեղմել ՝ յուրաքանչյուր ծրագիր ակտիվացնելու համար: Մեթոդը կոչվում է menuScreen ():

Մենք սկսում ենք էկրանը ցուցադրել ISուցադրման ռեժիմում:

Այնուհետև մենք սահմանում ենք տառատեսակի չափը, գույնը և դիրքը և տպում ենք «Հիմնական ընտրացանկի» տեքստը:

Այժմ մենք նկարում ենք երկու ուղղանկյուն, որոնք կոճակներն են:

Բոլոր գրաֆիկական հրամաններն ունեն նման կառուցվածք.

գրաֆիկական ձև (x կոորդինատ, y կոորդինատ, լայնություն, բարձրություն, ԳՈLՅՆ)

- x կոորդինատ - վերև ձախ ՝ ուղղանկյուն օբյեկտների համար, կենտրոն ՝ շրջանակների համար

- y կոորդինատ - վերև ձախ ՝ ուղղանկյուն օբյեկտների համար, կենտրոն ՝ շրջանակների համար

- լայնություն - օբյեկտի լայնությունը պիքսելներով

- ԳՈLՅՆ - գույնի հաստատուն, որը մենք սահմանել ենք վերնագրում

Ի վերջո, մենք կոչ ենք անում երկու մեթոդ ՝ նկարելու Saucy 7 պատկերակը և QWERTY Text Entry պատկերակը: Սրանք առանձին մեթոդներ են:

The draw7icon (0) մեթոդը վերցնում է մի ամբողջ պարամետր, որը y- օֆսեթն է գնդակը նկարելու համար: Մենք դա անում ենք, որպեսզի կարողանանք օգտագործել նույն մեթոդը ՝ գնդակը գծելու ընտրացանկի ԵՎ Saucy 7 հավելվածի էկրանին: Օֆսեթը մեզ թույլ է տալիս ծրագրված կերպով կարգավորել գնդակի y- կոորդինատը վեր կամ վար:

Draw7Ball (0) մեթոդը կոչվում է draw7Icon (0) ներսից: Այն նաև վերցնում է մի պարամետր, որը թույլ է տալիս մեզ հարմարեցնել գնդակի ուղղահայաց դիրքը ՝ կախված այն բանից, թե արդյոք այն նկարում ենք ընտրացանկի էկրանին կամ հավելվածի էկրանին:

FillCircle () հրամանը վերցնում է 4 արգումենտ:

- շրջանագծի կենտրոնի x կոորդինատը

- շրջանագծի կենտրոնի y կոորդինատը

- շրջանագծի շառավիղ (պիքսելներով)

- ԳՈLՅՆ - գույնի հաստատուն, որը մենք սահմանել ենք վերնագրում

Վերջապես drawTextIcon () մեթոդը կոչվում է նկարել տեքստ մուտքագրման ծրագրի պատկերակը:

Դուք կարող եք փորձել գործարկել մեթոդը `մեկնաբանելով splash () մեթոդը setup- ում () և ավելացնել menuScreen ():

Վերբեռնեք ուրվագիծը ձեր Arduino- ում և փորձեք այն:

Քայլ 8. Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները

Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները
Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները
Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները
Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները
Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները
Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները
Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները
Saucy 7 հավելվածը և հիմնական ընտրացանկի մեթոդները

ՅոթՍքրին () մեթոդը գծելու է հավելվածի էկրանը, ներառյալ գնդակը նկարելը և այնուհետև ցուցադրելու հրահանգները:

ՅոթInstr () մեթոդը ցուցադրում է հրահանգները, ինչպես նաև մաքրում է էկրանը նախորդ պատասխաններից: Այն նաև նկարում է «Պատասխան» կոճակը:

Show7Response () մեթոդը կարգավորում է պատասխանի նախորդ մեթոդը էկրանից մաքրելը, ցուցադրելով «մտածող…» անիմացիոն հաղորդագրությունը և այնուհետև ցուցադրելով պատահականորեն ընտրված պատասխան հաղորդագրությունը:

read7Touch () այն մեթոդն է, որը սպասում է հպման իրադարձության ՝ պատահականորեն առաջացած հաղորդագրությունը արտադրելու համար: Հպման կոդը շատ նման է ավելի վաղ նկարագրված showTouch () ախտորոշիչ մեթոդին: Պարզության համար մեթոդը կընդունի էկրանի ցանկացած կետի հպումը որպես «Պատասխանել» կոճակի հպում:

Մեթոդի վերևում մենք սահմանում ենք տողերի պատասխան զանգված, որոնք այն հաղորդագրություններն են, որոնք կարող են առաջանալ հպման իրադարձությունից:

Եթե Home կոճակը սեղմված լինի, այն կավարտի ծրագիրը և կվերադառնա հիմնական ընտրացանկի էկրանին: Հակառակ դեպքում մեթոդը կստեղծի պատահական թիվ 0 -ից 7 -ի սահմաններում (բացառիկ) և համապատասխան տեքստային հաղորդագրությունը պատասխան զանգվածից կփոխանցի show7Response () մեթոդին:

Վերջապես, backToMenu () մեթոդը հետևում է Home կոճակի հպմանը և վերահսկումը վերադարձնում հիմնական ընտրացանկի էկրանին:

ReadMenuTouch () մեթոդը դիտում է դիպչող իրադարձությունը, երբ դուք գտնվում եք հիմնական ընտրացանկի էկրանին: Երբ հպում է հայտնաբերվում, այն փոխանցում է x և y կոորդինատները getFunc (x, y) մեթոդին, որը նայում է funcX և funcY զանգվածներին `համընկնելով հպման x և y կոորդինատներին: Այնուհետև այն վերադարձնում է ընտրված ծրագրի գործառույթի զանգվածից: «1» -ը Saucy 7 -ն է, իսկ «2» -ը ՝ տեքստի մուտքագրման ծրագիրը: Այնուհետև ռեժիմը սահմանում է այդ ծրագրի արժեքի վրա, որպեսզի ծրագիրը կատարվի:

Քայլ 9: The Loop () արգելափակում

The Loop () արգելափակում
The Loop () արգելափակում

Այժմ մենք կսկսենք կառուցել loop () բլոկի ծածկագիրը `համապատասխան էկրանը ցուցադրելու և այնուհետև համապատասխան հպման մեթոդներ կանչելու համար` հիմնված ներկայումս ընտրված տարբերակի վրա:

Օղակի () մեթոդը բաղկացած է երկու անջատիչ () կառույցներից:

Անջատիչի վերին կառուցվածքը կարգավորում է համապատասխան էկրանը ՝ կախված նրանից, թե որ տարբերակն է ընտրված: Այն նաև սահմանում է tMode արժեքը համապատասխան հպման մեթոդի համար `ընթացիկ ընտրված տարբերակի համար: Վերջապես, ռեժիմի արժեքը սահմանում է 9, որպեսզի ցուցադրման էկրանն անվերջ չվերագծվի:

Ստորին անջատիչի կառուցվածքը վերահսկում է, թե որ հպման մեթոդներն են կատարվում `հիմնված օգտագործողի կողմից ընտրված ծրագրի տարբերակի վրա, որը ներկայացված է tMode- ի արժեքով:

Տեղադրեք ուրվագիծը ձեր Arduino- ում և պետք է կարողանաք ընտրել և օգտագործել Saucy 7 ծրագիրը:

Դուք շատ աշխատանք եք կատարել: Դադար տուր:-)

Քայլ 10: Տեքստի մուտքագրման հավելված - Մենք տան ձգման մեջ ենք:

Տեքստի մուտքագրման հավելված - Մենք տան ձգվող վիճակում ենք
Տեքստի մուտքագրման հավելված - Մենք տան ձգվող վիճակում ենք
Տեքստի մուտքագրման հավելված - Մենք տան ձգվող վիճակում ենք
Տեքստի մուտքագրման հավելված - Մենք տան ձգվող վիճակում ենք
Տեքստի մուտքագրման հավելված - Մենք տան ձգվող վիճակում ենք
Տեքստի մուտքագրման հավելված - Մենք տան ձգվող վիճակում ենք
Տեքստի մուտքագրման հավելված - Մենք տան ձգվող վիճակում ենք
Տեքստի մուտքագրման հավելված - Մենք տան ձգվող վիճակում ենք

Այժմ մենք կներառենք տեքստի մուտքագրման ծրագրի մեթոդները:

makeKbd () նկարում է ստեղնաշարը էկրանին:

Այն գծում է վեց կլորացված ուղղանկյուն, այնուհետև յուրաքանչյուր «բանալին» ծածկում է համապատասխան տառը `ստանալով cString տողից տառը, որը տպում է էկրանի վրա բանալին: Ուշադրություն դարձրեք, որ fillRoundedRect () հրամանի երկրորդ վերջին պարամետրը յուրաքանչյուր անկյունի շառավիղն է պիքսելներով: Որքան բարձր է այս արժեքը, այնքան ավելի կլորացված են անկյունները:

ReadKbdTouch () մեթոդը նման է հպման հայտնաբերման մյուս մեթոդներին:

Եթե հպում է հայտնաբերվում, որը ՉԻ Գլխավոր կոճակին, այն x և y կոորդինատները փոխանցում է curChar (x, y) մեթոդին, որը վերադարձնում է էկրանի այդ x և y դիրքին համապատասխանող նիշը: Այնուհետև «մուտքագրված» հաղորդագրությունը էկրանին ցուցադրվում է «displayMsg (theChar) մեթոդով:

CurChar (x, y) մեթոդը փնտրում է letterX և letterY զանգվածները `գտնելու համապատասխանություն, որը մոտ է readKbdTouch () - ից փոխանցված x և y կոորդինատներին: Եթե այն գտնում է համընկնում, այն վերադարձնում է համապատասխան տառը readKbdTouch մեթոդին: Ուշադրություն դարձրեք, որ մենք նախաստորագրում ենք theChar փոփոխականը 32 -ով, որը տիեզերական բնույթի ASCII կոդն է »: Մենք դա անում ենք այնպես, որ եթե օգտվողը դիպչի ստեղնաշարից մի տարածք, այն չի ցուցադրի ոչ հասանելի նիշերը:

DisplayMsg (theChar) մեթոդը վերցնում է curChar- ից վերադարձված բնույթը (x, y) և կցում այն msg տողին: Այնուհետև այն ցուցադրում է հաղորդագրությունը էկրանին:

Վերջապես, մենք կթարմացնենք loop () բլոկը ՝ տեքստ մուտքագրելու ծրագրի ընտրությունը ընդունելու համար:

Վերբեռնեք tftDemo ուրվագիծը ձեր Arduino- ում և դուք պետք է կարողանաք օգտագործել ավարտված ծրագիրը:

Շնորհավորում եմ: դուք ստեղծել եք TFT սենսորային ծրագիր: Հանգստացեք մնացած օրը:

Քայլ 11: Եղեք հարթ - Adafruit Bitmap տառատեսակների օգտագործումը ձեր ուրվագծում:

Ստանդարտ tft տառատեսակների հավաքածուն նորմալ է: Բայց ավելի լավ է, եթե մենք կարողանանք օգտագործել համապատասխան bitmapped տառատեսակներ մեր TFT ուրվագծերում:

Բացասականն այն է, որ Arduino հիշողության մեջ տառատեսակների հավաքածուների բեռնումը զգալի տեղ է զբաղեցնում: Իրականում, շատ հեշտ է ձեր ուրվագիծը լցնել այնքան տառատեսակներով, որ այն չբեռնվի Arduino- ում:

Տառատեսակները հասանելի են Adafruit_GFX գրադարանի թղթապանակի ներսում, որը դուք արդեն տեղադրել եք այս նախագծի համար: Տառատեսակների օգտագործման հիանալի ձեռնարկ է այս կայքում:

Ձեր ուրվագծի Վերնագրի տարածքում ավելացրեք տառատեսակի հղումը այն տառատեսակի համար, որը ցանկանում եք օգտագործել: Այս օրինակի համար մենք կօգտագործենք FreeSerifBoldItalic18p7b տառատեսակը:

#ներառում

Ձեր splash () մեթոդով մեկնաբանեք tft.setTextSize (); հրաման.

Ավելացնել հետևյալ հրամանը,

tft.setFont (& FreeSerifBoldItalic18pt7b);

Այժմ տպման () ցանկացած հրաման կօգտագործի ներկայումս նշված տառատեսակը: Այլ տառատեսակի անցնելու համար դուք կօգտագործեք մեկ այլ tft.setFont () հրաման ՝ հաջորդ տառատեսակով, որը կցանկանայիք օգտագործել:

Տառատեսակը ստանդարտ tft տառատեսակին վերադարձնելու համար պարզապես օգտագործեք tft.setFont (); հրաման առանց պարամետրի:

Վերբեռնեք ուրվագիծը ձեր Arduino- ում և կտեսնեք, որ շաղ տալու էկրանն այժմ օգտագործում է bitmap տառատեսակը `տեքստը էկրանին մատուցելու համար: Դուք կնկատեք, որ ուրվագծի չափը զգալիորեն ավելի մեծ է այժմ, երբ ներառել եք տառատեսակ:

Քայլ 12: Վերջնական մտքեր

Ձեզ հասանելի շատ այլ գրաֆիկական օբյեկտների հրամաններ կան: Դրանք ներառում են.

tft.drawRect (x, y, լայնություն, բարձրություն, ԳՈLՅՆ);

tft.drawLine (x1, y1, x2, y2, COLOR);

Հետևյալ օրինակները օգտագործում են tft.color565 մեթոդը `թույլ տալով գույնը նշել կարմիր, կանաչ և կապույտ արժեքների հիման վրա: Սա այլընտրանքային եղանակ է `օգտագործելու մեր ուրվագծում մշտապես սահմանված HEX գույնի արժեքները:

tft.drawRoundRect (x, y, լայնություն, բարձրություն, շառավիղ, tft.color565 (255, 0, 0)); // սա կարմիր կլինի

tft.drawCircle (x, y, շառավիղ, tft.color565 (0, 255, 0)); // սա կանաչ կլիներ

tft.drawTriangle (vertex1x, vertex1y, vertex2x, vertex2y, vertex3x, vertex3y, tft.color565 (0, 0, 255)); // Կապույտ

tft.fillTriangle (vertex1x, vertex1y, vertex2x, vertex2y, vertex3x, vertex3y, tft.color565 (255, 0, 0);

Խաղացեք այս հրամանների հետ և ուսումնասիրեք, թե ինչպես դրանք կարող են ավելացնել ձեր TFT նախագծերին:

TFT էկրան օգտագործել սովորելը դժվար է, և պետք է հպարտանաս ինքդ քեզնով, որ ժամանակ ես հատկացրել ՝ սովորելու այս առաջին քայլերը:

TFT էկրանները կարող են գրավիչ և օգտակար գրաֆիկական ինտերֆեյսի տեսք հաղորդել ձեր Arduino նախագծերին:

Շնորհակալություն այս ձեռնարկի միջոցով աշխատելու համար:

ՀԻՄԱ դուրս եկեք և ինչ -որ բան հիանալի կատարեք:

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