विषयसूची:

BluBerriSix - एक TFT टचस्क्रीन / Arduino ट्यूटोरियल: 12 चरण (चित्रों के साथ)
BluBerriSix - एक TFT टचस्क्रीन / Arduino ट्यूटोरियल: 12 चरण (चित्रों के साथ)

वीडियो: BluBerriSix - एक TFT टचस्क्रीन / Arduino ट्यूटोरियल: 12 चरण (चित्रों के साथ)

वीडियो: BluBerriSix - एक TFT टचस्क्रीन / Arduino ट्यूटोरियल: 12 चरण (चित्रों के साथ)
वीडियो: Desk of Ladyada - Busy week, lots of revisions & some interesting new chips 2024, जुलाई
Anonim
BluBerriSix - एक TFT टचस्क्रीन / Arduino ट्यूटोरियल
BluBerriSix - एक TFT टचस्क्रीन / Arduino ट्यूटोरियल
BluBerriSix - एक TFT टचस्क्रीन / Arduino ट्यूटोरियल
BluBerriSix - एक TFT टचस्क्रीन / Arduino ट्यूटोरियल

2019 रिम ब्लैकबेरी 850 की 20वीं वर्षगांठ है! कनाडा के इस छोटे से आविष्कार ने दुनिया के संचार के तरीके को बदल दिया। यह लंबा चला गया है, लेकिन इसकी विरासत जारी है!

इस निर्देश में, आप सीखेंगे कि Uno/Mega के लिए MCUfriend.com 2.4 TFT डिस्प्ले शील्ड का उपयोग कैसे करें। आप सीखेंगे कि ग्राफिक ऑब्जेक्ट्स और टेक्स्ट कैसे प्रदर्शित करें और टच इवेंट्स पर टच कैसे प्राप्त करें और कैसे कार्य करें। यह स्क्रीन एडफ्रूट और अन्य टीएफटी शील्ड/स्क्रीन के समान है। इसलिए यदि आप यहां हैं, तो शो के लिए बने रहें।

हम अपने BluBerriSIX स्केच का एक सरलीकृत 2 ऐप संस्करण तैयार करेंगे।

आएँ शुरू करें!

चरण 1: ब्लूबेरीसिक्स - अवलोकन

Image
Image
ब्लूबेरीसिक्स - अवलोकन
ब्लूबेरीसिक्स - अवलोकन
ब्लूबेरीसिक्स - अवलोकन
ब्लूबेरीसिक्स - अवलोकन

BluBerriSIX ऐप एक छह फंक्शन वाला TFT प्रोजेक्ट है।

इसमें शामिल है:

एक प्रकाश

एक सॉसी '7' ऐप (मैजिक '8' बॉल की तरह)

कैलकुलेटर

SR-04 अल्ट्रासोनिक दूरी सेंसर का उपयोग कर एक दूरी मापन ऐप

एक तापमान और आर्द्रता ऐप जो एचसी -12 ट्रांसीवर के साथ 1.5 किमी तक रीयल-टाइम डेटा लॉगिंग भी करता है

HC-12 का उपयोग करने वाला एक टेक्स्टिंग ऐप।

इस परियोजना ने कोड की 1100 लाइनें लीं। हम काफी सरल संस्करण बनाएंगे जो अभी भी TFT डिस्प्ले और टच सेंसिंग अवधारणाओं को प्रदर्शित करता है।

चरण 2: क्या चाहिए?

क्या चाहिए?
क्या चाहिए?
क्या चाहिए?
क्या चाहिए?

- एक Arduino Uno या मेगा 2560

- एक एमसीयूफ्रेंड 2.4 टीएफटी शील्ड

निम्नलिखित पुस्तकालय:

- एडफ्रूट_जीएफएक्स लाइब्रेरी

- एडफ्रूट टचस्क्रीन लाइब्रेरी

- MCUFRIEND_kbv लाइब्रेरी

इन पुस्तकालयों को Arduino IDE के अंदर पुस्तकालय प्रबंधक के साथ स्थापित किया जा सकता है।

लाइब्रेरी लोड करने के लिए, स्केच -> लाइब्रेरी शामिल करें -> लाइब्रेरी प्रबंधित करें… मेनू विकल्प पर जाएं।

'अपनी खोज को फ़िल्टर करें…' फ़ील्ड में, लिबरी के नाम के पहले कुछ अक्षर दर्ज करें और फिर उपयुक्त पुस्तकालय का चयन करें और स्थापित करें। जब हो जाए, तो बस इस स्क्रीन से अपना रास्ता वापस ले लें।

Uno/Mega पर TFT शील्ड को माउंट करते समय, यह सुनिश्चित करने के लिए बहुत सावधान रहें कि आप पिनों को सही ढंग से लाइनिंग कर रहे हैं। मैंने अपनी पहली ढाल को गलत तरीके से रखा और उसे तला। मैंने स्क्रीन के मृत होने का एहसास करने से पहले सही पुस्तकालयों को खोजने की कोशिश में बढ़ती निराशा के दो सप्ताह बिताए। ध्यान रहे

चरण 3: हमारी परियोजना

हमारी परियोजना
हमारी परियोजना
हमारी परियोजना
हमारी परियोजना
हमारी परियोजना
हमारी परियोजना
हमारी परियोजना
हमारी परियोजना

हम BluBerriSIX स्केच का एक सरल संस्करण बनाएंगे।

यह होगा, - एक स्प्लैश स्क्रीन

- दो बटन के साथ एक मुख्य मेनू स्क्रीन

- एक सॉसी 7 ऐप

- एक सरल पाठ प्रविष्टि ऐप

आप इस विशेष डिस्प्ले के निचले बाएँ में 'होम' आइकन दबाकर मुख्य मेनू पर भी वापस जा सकेंगे। यदि आपके पास ऐसा कोई आइकन नहीं है, तो आपको बस अपनी स्क्रीन के 'होम' क्षेत्र को परिभाषित करना होगा। आप इस ट्यूटोरियल में स्क्रीन टच क्षेत्रों का निर्धारण करना सीखेंगे।

हालांकि यह एक सरलीकृत परियोजना है, फिर भी यह काफी लंबी है। मैं प्रत्येक प्रमुख चरण में Arduino स्केच के संस्करण प्रदान करूंगा ताकि आप चाहें तो उन्हें अपलोड कर सकें।

चरण 4: हैडर कोड, वैश्विक चर, स्क्रीन सेटअप

हैडर कोड, वैश्विक चर, स्क्रीन सेटअप
हैडर कोड, वैश्विक चर, स्क्रीन सेटअप
हैडर कोड, वैश्विक चर, स्क्रीन सेटअप
हैडर कोड, वैश्विक चर, स्क्रीन सेटअप

पूरी परियोजना अत्यधिक प्रलेखित है। लेकिन विवरण का पालन करें।

एक नया Arduino प्रोजेक्ट शुरू करें और इसे 'tft डेमो' या कोई अन्य नाम जो आप चाहते हैं उसे कॉल करें।

ऊपर दिया गया पहला कोड पैनल हमें वैश्विक चरों को परिभाषित करते हुए दिखाता है। हम उन पुस्तकालयों में भी जोड़ते हैं जिनकी हमें स्क्रीन के डिस्प्ले फ़ंक्शन और स्क्रीन के टच डिटेक्शन दोनों के लिए उपयोग करने की आवश्यकता होगी।

हम एनालॉग पिन को उनके स्क्रीन-विशिष्ट उद्देश्यों के संदर्भ में भी परिभाषित करते हैं।

हम tft ऑब्जेक्ट (डिस्प्ले) और ts ऑब्जेक्ट (टच) को उनके संबंधित कार्यों के संदर्भ के रूप में परिभाषित करते हैं।

हम कुछ 16 बिट रंग स्थिरांक को परिभाषित करते हैं ताकि स्क्रीन के लिए और टेक्स्ट और ग्राफिक्स ऑब्जेक्ट के लिए रंगों को प्रस्तुत करना आसान हो सके। आप देखेंगे कि एक वेबसाइट के लिए एक यूआरएल है जिसमें एक कलर पिकर और कन्वर्टर है जो दृश्यमान रंगों को उनके 16 बिट हेक्साडेसिमल मानों में परिवर्तित करता है। यह एक बहुत ही मददगार टूल है।

दूसरे कोड पैनल में, हम अपने ऐप-विशिष्ट उद्देश्यों के लिए वैश्विक चर परिभाषित करते हैं।

सीस्ट्रिंग, लेटर और लेटरएक्स और लेटरवाई स्ट्रिंग्स और एरे का उपयोग ए) टेक्स्ट एंट्री ऐप के बटन पर अक्षरों को प्रदर्शित करने के लिए किया जाता है और बी) प्रत्येक संबंधित अक्षर के एक्स और वाई निर्देशांक के साथ स्पर्श के एक्स और वाई निर्देशांक से मेल खाता है कुंजीपटल। इसके बारे में और अधिक जब हम स्केच के उस भाग पर पहुँचते हैं।

funcX, funcY और func एरे हैं जो यह निर्धारित करने के लिए काम करते हैं कि मुख्य मेनू स्क्रीन पर कौन सा ऐप बटन दबाया गया था और फिर संबंधित ऐप लॉन्च करने के लिए उस जानकारी का उपयोग करें।

lastTouch और tThresh का उपयोग स्पर्श विधियों में किया जाता है ताकि यह सुनिश्चित किया जा सके कि हमें स्क्रीन को बहुत देर तक दबाने से कई स्पर्श न हों। उस पर और बाद में।

मोड वेरिएबल नियंत्रित करेगा कि कौन सी स्क्रीन प्रदर्शित हो और tMode वेरिएबल नियंत्रित करेगा कि किसी भी समय कौन सी स्पर्श विधियों का उपयोग किया जा रहा है।

यदि हम डिबगिंग के लिए Serial.println() कमांड का उपयोग करना चाहते हैं तो सेटअप () ब्लॉक में, हम एक सीरियल चैनल खोलते हैं। यदि आप सीरियल मॉनिटर डिबगिंग नहीं करना चाहते हैं तो आपको इस लाइन की आवश्यकता नहीं है।

अगली चार पंक्तियाँ tft ऑब्जेक्ट के लिए केवल सेटअप कोड हैं।

आगे हम स्क्रीन के ओरिएंटेशन को पोर्ट्रेट मोड पर सेट करते हैं।

रैंडमसीड () कमांड सॉसी 7 ऐप द्वारा बाद में उपयोग के लिए यादृच्छिक संख्या जनरेटर शुरू करता है।

अंत में हम स्प्लैश स्क्रीन विधि कहते हैं।

चरण 5: स्पैश स्क्रीन बनाना और डिस्प्ले बनाम टच मैपिंग को समझना

स्पैश स्क्रीन का निर्माण और डिस्प्ले बनाम टच मैपिंग को समझना
स्पैश स्क्रीन का निर्माण और डिस्प्ले बनाम टच मैपिंग को समझना
स्पैश स्क्रीन का निर्माण और डिस्प्ले बनाम टच मैपिंग को समझना
स्पैश स्क्रीन का निर्माण और डिस्प्ले बनाम टच मैपिंग को समझना

अब हम स्पैश स्क्रीन बनाना शुरू करेंगे।

लेकिन पहले, कृपया स्क्रीन और टच मैपिंग के लिए चित्र देखें। ध्यान दें कि मूल विभिन्न स्थानों में हैं। प्रदर्शन के लिए, मूल (0, 0) स्क्रीन के ऊपर बाईं ओर है (जब रीसेट बटन शीर्ष पर है) और बाएं से दाएं और ऊपर से नीचे तक बढ़ता है।

टच डिटेक्शन के लिए, मूल स्क्रीन के निचले बाएँ कोने में है और बाएँ से दाएँ और नीचे से ऊपर की ओर बढ़ता है।

तो डिस्प्ले और टच मैप्स अलग-अलग परिभाषित हैं और अलग-अलग संकल्प हैं। डिस्प्ले का रिज़ॉल्यूशन 240 गुणा 320 है और टच का रिज़ॉल्यूशन बहुत अधिक है जैसा कि आप जल्द ही देखेंगे।

लूप () {} विधि के नीचे अपने स्केच के एक क्षेत्र पर जाएं और हम स्प्लैश () विधि कोड दर्ज करेंगे।

हम हेडर कोड में परिभाषित सफेद रंग से स्क्रीन को भरने के लिए एक fillScreen () कमांड करके शुरू करते हैं।

फिर हम टेक्स्ट का आकार '5' पर सेट करते हैं। यह अपेक्षाकृत बड़ा मूल पाठ आकार है। हम टेक्स्ट कर्सर के लिए x और y स्थिति सेट करते हैं और हम टेक्स्ट का रंग सेट करते हैं। अंत में प्रिंट ("टीएफटी") कमांड वास्तव में निर्दिष्ट स्थान पर नीला, आकार '5' टेक्स्ट खींचता है।

जैसे-जैसे आप टेक्स्ट का आकार बढ़ाते हैं, आप देखेंगे कि पात्र अधिक से अधिक चंकी होते जा रहे हैं। तो 5 से ऊपर जाना शायद मददगार नहीं है। इस ट्यूटोरियल के अंत में, मैं आपको दिखाऊंगा कि अपने ऐप्स में अच्छे दिखने वाले टेक्स्ट प्राप्त करने के लिए बिटमैप फोंट का उपयोग कैसे करें। ट्रेडऑफ यह है कि बिटमैप फ़ॉन्ट सेट का उपयोग करने से आपके Arduino में बहुत अधिक मेमोरी होती है जो आपके स्केच आकार को सीमित कर देगी।

हम स्प्लैश स्क्रीन पर अन्य दो टेक्स्ट आइटम के लिए समान कमांड दोहराते हैं।

अंत में हम ऐप के मुख्य मेनू स्क्रीन पर जाने से पहले उपयोगकर्ता को स्क्रीन की सामग्री को पढ़ने का मौका देने के लिए 2.5 सेकंड की देरी करते हैं।

आगे बढ़ें और इस स्केच को अपने Arduino पर अपलोड करें। इसे स्प्लैश स्क्रीन प्रदर्शित करनी चाहिए।

चरण 6: टच मैपिंग डायग्नोस्टिक टूल बनाना

टच मैपिंग डायग्नोस्टिक टूल बनाना
टच मैपिंग डायग्नोस्टिक टूल बनाना
टच मैपिंग डायग्नोस्टिक टूल बनाना
टच मैपिंग डायग्नोस्टिक टूल बनाना

स्क्रीन के विभिन्न हिस्सों के स्पर्श निर्देशांक प्राप्त करने में आपकी सहायता के लिए शो टच () विधि बहुत उपयोगी है। आपको अपने बटनों के लिए स्पर्श क्षेत्रों को परिभाषित करने के लिए ऐसा करना होगा।

आगे बढ़ें और पहले की गई अपनी स्पलैश() विधि के नीचे इस विधि को दर्ज करें।

यहां देखिए यह कैसे काम करता है।

if स्टेटमेंट यह निर्धारित करता है कि अंतिम स्पर्श के बाद से पर्याप्त समय बीत चुका है या नहीं। यह वर्तमान सिस्टम समय मिलिस () लेता है और अंतिम स्पर्श समय घटाता है। यदि यह tThresh मान (200 मिलीसेकंड) से अधिक है, तो यह स्पर्श को स्वीकार करता है। अन्यथा, यह आकस्मिक बहु-स्पर्श घटनाओं की अवहेलना करेगा।

इसके बाद, गेटपॉइंट () कमांड को स्पर्श के x, y और z निर्देशांक मिलते हैं। Z निर्देशांक स्पर्श दबाव का एक माप है।

यदि दबाव अधिकतम और न्यूनतम स्थिरांक के भीतर है जिसे हमने स्केच हेडर में परिभाषित किया है, तो विधि पहले YP और XM पिन को OUTPUT में बदल देगी, स्क्रीन को DISPLAY मोड में डाल देगी।

इसके बाद यह पहले प्रदर्शित किए गए किसी भी निर्देशांक को मिटाने के लिए एक सफेद आयत खींचेगा।

स्केच फिर फ़ॉन्ट को आकार 2, काले रंग में सेट करता है और स्क्रीन पर x (p.x) और y (p.y) निर्देशांक प्रदर्शित करता है। फिर आप अपने स्वयं के रेखाचित्रों के लिए अपने स्पर्श क्षेत्रों को प्रोग्राम करने में मदद करने के लिए इन स्थानों को नोट कर सकते हैं।

विधि के निचले भाग में if स्टेटमेंट यह देखने के लिए जांचता है कि स्क्रीन पर 'होम' बटन दबाया गया था या नहीं। '<=' ऑपरेटर होम बटन की चौड़ाई और ऊंचाई की अनुमति देते हैं। निर्दिष्ट निर्देशांक होम बटन के x-केंद्र और y-केंद्र निर्देशांक हैं। यदि इसे दबाया जाता है, तो मोड 0 पर सेट हो जाता है जिसका अर्थ अंततः 'मेन मेनू स्क्रीन पर जाएं' होगा। उस पर और बाद में।

अंत में हम बाद के टच इवेंट के लिए तैयार होने के लिए लास्ट टच को वर्तमान सिस्टम टाइम मिलिस () में अपडेट करते हैं।

कृपया अब लूप () ब्लॉक पर जाएं और लाइन जोड़ें शो टच ();

इस बिंदु पर, अपना स्केच अपलोड करें और इसे आज़माएं। यह स्प्लैश स्क्रीन खींचेगा और यदि आप स्क्रीन को छूना शुरू करते हैं, तो टच x और y निर्देशांक स्क्रीन पर प्रदर्शित होंगे।

आगे बढ़ने से पहले, आइए कोड की दो महत्वपूर्ण पंक्तियों पर फिर से गौर करें:

पिनमोड (वाईपी, आउटपुट); // टीएफटी नियंत्रण पिन को पुनर्स्थापित करें

पिनमोड (XM, OUTPUT); // एक स्पर्श का पता लगाने के बाद प्रदर्शन के लिए

जब भी आप स्क्रीन पर कुछ प्रदर्शित करना चाहते हैं, तो आपको स्क्रीन को टच मोड से डिस्प्ले मोड में बदलने के लिए इन दो आदेशों को निष्पादित करना होगा। अन्यथा, आपके प्रदर्शन आदेश काम नहीं करेंगे।

अच्छा किया अब तक! एक ब्रेक ले लो!

चरण 7: मुख्य मेनू स्क्रीन बनाएँ

मुख्य मेनू स्क्रीन बनाएं
मुख्य मेनू स्क्रीन बनाएं
मुख्य मेनू स्क्रीन बनाएं
मुख्य मेनू स्क्रीन बनाएं
मुख्य मेनू स्क्रीन बनाएं
मुख्य मेनू स्क्रीन बनाएं

अब हम अपने मेन मेन्यू स्क्रीन को दो बटनों के साथ बनाएंगे जिन्हें आप प्रत्येक ऐप को सक्रिय करने के लिए दबा सकते हैं। विधि को मेन्यूस्क्रीन () कहा जाता है।

हम स्क्रीन को DISPLAY मोड में डालकर शुरू करते हैं।

फिर हम फ़ॉन्ट आकार, रंग और स्थिति सेट करते हैं और 'मेन मेन्यू' टेक्स्ट प्रिंट करते हैं।

अब हम दो आयत बनाते हैं जो कि बटन हैं।

सभी ग्राफिक्स कमांड की संरचना समान होती है:

ग्राफिकशैप (एक्स समन्वय, वाई समन्वय, चौड़ाई, ऊंचाई, रंग)

- x निर्देशांक - आयताकार वस्तुओं के लिए ऊपरी बाएँ, मंडलियों के लिए केंद्र

- y निर्देशांक - आयताकार वस्तुओं के लिए ऊपरी बाएँ, मंडलियों के लिए केंद्र

- चौड़ाई - पिक्सेल में वस्तु की चौड़ाई

- रंग - एक रंग स्थिरांक जिसे हमने हेडर में परिभाषित किया है

अंत में हम सॉसी 7 आइकन और QWERTY टेक्स्ट एंट्री आइकन बनाने के लिए दो विधियों को कॉल करते हैं। वे अलग तरीके हैं।

draw7icon(0) विधि एक पूर्णांक पैरामीटर लेती है जो गेंद को खींचने के लिए y-offset है। हम ऐसा इसलिए करते हैं ताकि हम मेनू स्क्रीन पर और सॉसी 7 ऐप स्क्रीन पर गेंद को खींचने के लिए उसी विधि का उपयोग कर सकें। ऑफ़सेट हमें केवल गेंद के y-निर्देशांक को ऊपर या नीचे प्रोग्रामेटिक रूप से समायोजित करने की अनुमति देता है।

Draw7Ball(0) विधि को draw7Icon(0) के भीतर से बुलाया जाता है। यह एक पैरामीटर भी लेता है जो हमें गेंद की ऊर्ध्वाधर स्थिति को समायोजित करने की अनुमति देता है, इस पर निर्भर करता है कि हम इसे मेनू स्क्रीन पर या ऐप स्क्रीन पर खींचते हैं।

fillCircle() कमांड 4 तर्क लेता है।

- वृत्त के केंद्र का x निर्देशांक

- y वृत्त के केंद्र का निर्देशांक

- वृत्त की त्रिज्या (पिक्सेल में)

- रंग - एक रंग स्थिरांक जिसे हमने हेडर में परिभाषित किया है

अंत में टेक्स्ट एंट्री ऐप के लिए आइकन बनाने के लिए drawTextIcon () मेथड को कॉल किया जाता है।

आप सेटअप () में स्प्लैश () विधि पर टिप्पणी करके और मेनूस्क्रीन () जोड़कर विधि को चलाने का प्रयास कर सकते हैं।

अपने Arduino पर स्केच अपलोड करें और इसे आज़माएं!

चरण 8: सॉसी 7 ऐप और मुख्य मेनू के तरीके

सॉसी 7 ऐप और मेन मेन्यू मेथड्स
सॉसी 7 ऐप और मेन मेन्यू मेथड्स
सॉसी 7 ऐप और मेन मेन्यू मेथड्स
सॉसी 7 ऐप और मेन मेन्यू मेथड्स
सॉसी 7 ऐप और मेन मेन्यू मेथड्स
सॉसी 7 ऐप और मेन मेन्यू मेथड्स
सॉसी 7 ऐप और मेन मेन्यू मेथड्स
सॉसी 7 ऐप और मेन मेन्यू मेथड्स

सेवनस्क्रीन () विधि ऐप के लिए स्क्रीन खींचेगी, जिसमें गेंद को खींचना और फिर निर्देश प्रदर्शित करना शामिल है।

सेवनइन्स्ट्र () विधि पिछले प्रतिक्रियाओं से स्क्रीन को साफ़ करने के साथ-साथ निर्देशों को प्रदर्शित करती है। यह 'प्रतिक्रिया' बटन भी खींचता है।

शो7रेस्पॉन्स () विधि स्क्रीन से पिछली प्रतिक्रिया विधि को साफ करती है, एक एनिमेटेड 'सोच…' संदेश प्रदर्शित करती है और फिर बेतरतीब ढंग से चुने गए प्रतिक्रिया संदेश को प्रदर्शित करती है।

read7Touch() वह विधि है जो यादृच्छिक रूप से उत्पन्न संदेश उत्पन्न करने के लिए स्पर्श ईवेंट की प्रतीक्षा करती है। टच कोड पहले वर्णित शो टच () डायग्नोस्टिक पद्धति के समान है। सरलता के लिए, विधि 'प्रतिक्रिया' बटन स्पर्श के रूप में स्क्रीन पर कहीं भी स्पर्श को स्वीकार करेगी।

विधि के शीर्ष पर, हम एक प्रतिक्रिया सरणी को परिभाषित करते हैं जो संदेश हैं जो एक स्पर्श घटना से उत्पन्न हो सकते हैं।

यदि होम बटन दबाया जाता है, तो यह ऐप को समाप्त कर देगा और मुख्य मेनू स्क्रीन पर वापस आ जाएगा। अन्यथा, विधि 0 और 7 (अनन्य) के बीच एक यादृच्छिक संख्या उत्पन्न करेगी और संबंधित पाठ संदेश को प्रतिक्रिया सरणी से show7Response () विधि में पास करेगी।

अंत में, backToMenu() विधि होम बटन के स्पर्श के लिए देखती है और मुख्य मेनू स्क्रीन पर नियंत्रण लौटाती है।

जब आप मुख्य मेनू स्क्रीन पर होते हैं तो रीडमेनू टच () विधि टच इवेंट के लिए देखती है। जब एक स्पर्श का पता लगाया जाता है, तो यह x और y निर्देशांक को getFunc(x, y) विधि में भेजता है जो funcX और funcY सरणियों में दिखता है जो स्पर्श के x और y निर्देशांक से मेल खाते हैं। यह तब चुने गए ऐप के लिए func सरणी से नंबर देता है। '1' सॉसी 7 है और '2' टेक्स्ट एंट्री ऐप है। इसके बाद यह मोड को उस ऐप के मान पर सेट करता है ताकि ऐप निष्पादित हो जाए।

चरण 9: लूप () ब्लॉक

लूप () ब्लॉक
लूप () ब्लॉक

अब हम उपयुक्त स्क्रीन प्रदर्शित करने के लिए लूप () ब्लॉक कोड बनाना शुरू करेंगे और फिर वर्तमान में चुने गए विकल्प के आधार पर उपयुक्त टच विधियों को कॉल करेंगे।

लूप () विधि में दो स्विच () संरचनाएं होती हैं।

शीर्ष स्विच संरचना उपयुक्त स्क्रीन प्रदर्शित करने वाले हैंडल पर निर्भर करती है कि कौन सा विकल्प चुना गया है। यह वर्तमान चयनित विकल्प के लिए चलाने के लिए उपयुक्त स्पर्श विधि के लिए tMode मान भी सेट करता है। अंत में यह मोड मान को 9 पर सेट करता है ताकि डिस्प्ले स्क्रीन अंतहीन रूप से फिर से न खींचे।

बॉटम स्विच स्ट्रक्चर नियंत्रित करता है कि tMode के मान द्वारा दर्शाए गए उपयोगकर्ता-चयनित ऐप विकल्प के आधार पर कौन सी स्पर्श विधियों को निष्पादित किया जा रहा है।

स्केच को अपने Arduino में लोड करें और आपको Saucy 7 ऐप को चुनने और उपयोग करने में सक्षम होना चाहिए।

आपने बहुत काम किया है! एक ब्रेक ले लो:-)

चरण 10: टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं

टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं!
टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं!
टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं!
टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं!
टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं!
टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं!
टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं!
टेक्स्ट एंट्री ऐप - हम होम स्ट्रेच में हैं!

अब हम टेक्स्ट एंट्री ऐप की विधियों को शामिल करेंगे।

makeKbd () स्क्रीन पर कीबोर्ड खींचता है।

यह छह भरे हुए गोल आयतों को खींचता है और फिर cString स्ट्रिंग से अक्षर प्राप्त करके प्रत्येक 'कुंजी' पर उपयुक्त अक्षर को ओवरले करता है जिसे वह कुंजी के ऊपर स्क्रीन पर प्रिंट करता है। ध्यान दें कि fillRoundedRect() कमांड में दूसरा अंतिम पैरामीटर पिक्सेल में प्रत्येक कोने की त्रिज्या है। यह मान जितना अधिक होगा, कोने उतने ही अधिक गोल होंगे।

ReadKbdTouch () विधि अन्य स्पर्श पहचान विधियों के समान काम करती है।

यदि एक स्पर्श का पता चलता है जो होम बटन पर नहीं है, तो यह x और y निर्देशांक को curChar(x, y) विधि में भेजता है जो स्क्रीन पर उस x और y स्थान से मेल खाने वाले वर्ण को लौटाता है। संदेश जो 'टाइप' किया गया है, उसे 'डिस्प्ले संदेश (द चार)' विधि का उपयोग करके स्क्रीन पर प्रदर्शित किया जाता है।

CurChar(x, y) मेथड लैटरX और लेटरवाई सरणियों के माध्यम से खोज करता है ताकि रीडकेबीडीटच () से पारित एक्स और वाई निर्देशांक के करीब एक मैच खोजने की कोशिश की जा सके। यदि यह एक मैच पाता है, तो यह संबंधित अक्षर को readKbdTouch मेथड में लौटाता है। ध्यान दें कि हम theChar वैरिएबल को 32 से इनिशियलाइज़ करते हैं जो कि स्पेस कैरेक्टर के लिए ASCII कोड है, ''। हम ऐसा इसलिए करते हैं ताकि यदि उपयोगकर्ता कीबोर्ड से दूर किसी क्षेत्र को छूता है, तो वह अनुपलब्ध वर्ण प्रदर्शित नहीं करेगा।

DisplayMsg(theChar) विधि curChar(x, y) से लौटाए गए वर्ण को लेती है और इसे msg स्ट्रिंग में जोड़ देती है। यह तब स्क्रीन पर संदेश प्रदर्शित करता है।

अंत में, हम टेक्स्ट एंट्री ऐप चयन को स्वीकार करने के लिए लूप () ब्लॉक को अपडेट करेंगे।

अपने Arduino पर tftDemo स्केच अपलोड करें और आपको पूर्ण ऐप का उपयोग करने में सक्षम होना चाहिए।

बधाई हो! आपने एक TFT टचस्क्रीन ऐप बनाया है! बाकी दिन निकालो!

चरण 11: गेटिन 'स्लीक! - अपने स्केच में एडफ्रूट बिटमैप फ़ॉन्ट्स का उपयोग करना।

मानक tft फ़ॉन्ट सेट ठीक है। लेकिन यह अच्छा है अगर हम अपने टीएफटी स्केच में उचित बिटमैप्ड फोंट का उपयोग कर सकते हैं।

नकारात्मक पक्ष यह है कि Arduino मेमोरी में फ़ॉन्ट सेट लोड करना महत्वपूर्ण स्थान लेता है। वास्तव में, अपने स्केच को इतने सारे फोंट से भरना बहुत आसान है कि यह Arduino में लोड नहीं होगा।

फ़ॉन्ट्स Adafruit_GFX लाइब्रेरी फ़ोल्डर के अंदर उपलब्ध हैं जिसे आपने इस प्रोजेक्ट के लिए पहले ही इंस्टॉल कर लिया है। इस साइट पर फोंट का उपयोग करने पर एक उत्कृष्ट ट्यूटोरियल है।

अपने स्केच के हैडर क्षेत्र में, उस फ़ॉन्ट के लिए फ़ॉन्ट संदर्भ जोड़ें जिसका आप उपयोग करना चाहते हैं। हम इस उदाहरण के लिए FreeSerifBoldItalic18p7b फ़ॉन्ट का उपयोग करेंगे।

#शामिल

अपने स्प्लैश () विधि में, tft.setTextSize (); पर टिप्पणी करें; आदेश।

निम्न आदेश जोड़ें,

tft.setFont(&FreeSerifBoldItalic18pt7b);

अब कोई भी प्रिंट () कमांड वर्तमान में निर्दिष्ट फ़ॉन्ट का उपयोग करेगा। एक अलग फ़ॉन्ट में बदलने के लिए, आप अगले फ़ॉन्ट के साथ एक और tft.setFont() कमांड का उपयोग करेंगे जिसका आप उपयोग करना चाहते हैं।

फ़ॉन्ट को मानक tft फ़ॉन्ट पर वापस सेट करने के लिए, बस एक tft.setFont() का उपयोग करें; बिना किसी पैरामीटर के कमांड।

अपने Arduino पर स्केच अपलोड करें और आपको स्प्लैश स्क्रीन देखनी चाहिए जो अब स्क्रीन पर टेक्स्ट को रेंडर करने के लिए बिटमैप फ़ॉन्ट का उपयोग करती है। आप देखेंगे कि स्केच का आकार अब काफी बड़ा हो गया है जब आपने एक फ़ॉन्ट शामिल कर लिया है।

चरण 12: अंतिम विचार

आपके लिए कई अन्य ग्राफिक ऑब्जेक्ट कमांड उपलब्ध हैं। उनमे शामिल है:

tft.drawRect (एक्स, वाई, चौड़ाई, ऊंचाई, रंग);

tft.drawLine (x1, y1, x2, y2, रंग);

निम्न उदाहरण 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 प्रोजेक्ट्स में एक आकर्षक और उपयोगी ग्राफिकल यूजर इंटरफेस पहलू जोड़ सकते हैं।

इस ट्यूटोरियल के माध्यम से काम करने के लिए धन्यवाद।

अब बाहर जाओ और कुछ अद्भुत बनाओ!

सिफारिश की: