i2c स्क्रीन को arduino नैनो से कनेक्ट करना। टेक्स्ट स्क्रीन को Arduino से कनेक्ट करना

आज हम टेक्स्ट डिस्प्ले के आउटपुट पर ध्यान देने की कोशिश करेंगे। सबसे लोकप्रिय HD44780 चिप (या इसके साथ संगत KS0066) है। हम उनके पेशेवरों और विपक्षों को सूचीबद्ध करते हैं:

पेशेवरों:

  1. कम कीमत।
  2. प्रोग्राम करने में आसान, कोड किसी भी मॉडल के लिए समान होगा।
  3. मॉडल की विविधता - सबसे आम: 8x1, 16x2, 20x4। आप बल्कि विदेशी 40x4 मॉडल भी पा सकते हैं, अर्थात। प्रत्येक 40 वर्णों की चार पंक्तियाँ।
  4. एकाधिक डिस्प्ले को एक Arduino से कनेक्ट करने की क्षमता।
  5. अपने स्वयं के प्रतीकों को सेट करने की संभावना।

माइनस:

  1. सभी डिस्प्ले रूसी वर्णों का समर्थन नहीं करते हैं। अधिक विवरण के लिए, विशिष्ट प्रदर्शन के लिए विवरण देखें।
  2. I2C बस का उपयोग किए बिना कनेक्शन के लिए 10-16 तारों के उपयोग की आवश्यकता होती है, जो बहुत खराब है। I2C के साथ - 4 तार।

पूर्वगामी के आधार पर, मैं केवल I2C के माध्यम से डिस्प्ले को जोड़ने पर विचार करूंगा।

आओ कोशिश करते हैं।

हमें क्या चाहिये।

  1. Arduino (मैंने नैनो मॉडल लिया)
  2. I2C मॉड्यूल के साथ या उसके बिना HD44780 चिप पर प्रदर्शित करें (तब आपको एक अलग LC1602 IIC बोर्ड की आवश्यकता है) - हमारे मामले में I2C मॉड्यूल के बिना 16x2
  3. 10K रोकनेवाला (यदि आपको मैनुअल बैकलाइट नियंत्रण की आवश्यकता है)।
  4. पोटेंशियोमीटर (यदि आपको मैनुअल बैकलाइट नियंत्रण की आवश्यकता है)।
  5. ब्रेडबोर्ड ब्रेडबोर्ड।
  6. लाइब्रेरी लिक्विड क्रिस्टल_I2C.

छोटा विषयांतर # 1: I2C मॉड्यूल के साथ डिस्प्ले में अंतर कैसे करें?

वास्तव में, सब कुछ काफी सरल है। यदि, डिस्प्ले को पलटते हुए, हमें कनेक्टर्स का एक लंबा ब्लॉक (आमतौर पर 16 टुकड़े) दिखाई देता है, तो डिस्प्ले पर कोई I2C मॉड्यूल नहीं है:

और यह पहले से स्थापित I2C मॉड्यूल के साथ डिस्प्ले जैसा दिखता है:


SCL, SDA, VCC, GND पिन का उपयोग किसके लिए किया जाता है Arduino कनेक्शन. बाईं ओर दो संपर्क - चित्र में वे एक जम्पर के साथ बंद हैं - बैकलाइट के काम करने के लिए आवश्यक हैं।

यदि मॉड्यूल कनेक्ट नहीं है, तो आपको इसे स्वयं करना होगा। ध्यान देने वाली मुख्य बात संपर्कों को सही क्रम में जोड़ना है। एक नियम के रूप में, पहले और 16 पिनों को लेबल किया जाता है। कभी-कभी ऐसा होता है कि संपर्क 15-16, जिसके माध्यम से बैकलाइट को नियंत्रित किया जाता है, पहले वाले से पहले स्थित हो सकता है (इस मामले में उन्हें क्रमांकित किया जाएगा)। मॉड्यूल पर ही, पहले पिन को किसी संख्या से नहीं, बल्कि पिन के चारों ओर एक वर्ग द्वारा इंगित किया जा सकता है।

योजना:

आइए निम्नलिखित आरेख को एक साथ रखें:


मैं आपका ध्यान निम्नलिखित बिंदुओं की ओर आकर्षित करूंगा:

  1. यदि आप पहले से सोल्डर किए गए I2C मॉड्यूल के साथ एक डिस्प्ले पर आते हैं, तो ग्रे में चिह्नित तारों की आवश्यकता नहीं होगी। बाकी के लिए, कुछ भी नहीं बदलता है।
  2. यदि हम प्रदर्शन की चमक को बदलना नहीं चाहते हैं, तो योजना को सरल बनाया जाएगा:


जैसा कि आपने देखा, एलईडी लेबल वाले I2C मॉड्यूल पर दो पिन डिस्प्ले की बैकलाइट के लिए जिम्मेदार हैं। अगर हम चमक नियंत्रण का उपयोग नहीं करना चाहते हैं, तो हम उन्हें बंद कर सकते हैं।

अब कोड को तोड़ते हैं।


यहां, लगभग सब कुछ हमारे लिए परिचित होना चाहिए। लाइन 5 में हम डिवाइस के पते को इंगित करते हैं। पंक्ति 16 और 17 में प्रति पंक्ति वर्णों की संख्या और पंक्तियों की संख्या होती है। 20-22 की पंक्तियों में - हम डिस्प्ले के साथ काम करने के लिए एक ऑब्जेक्ट बनाते हैं और इसके साथ काम करने के लिए पैरामीटर का वर्णन करते हैं।

छोटा विषयांतर # 2: I2C डिवाइस का पता कैसे पता करें?

अधिकांश भाग के लिए, पता उस चिप के डेटाशीट में पाया जा सकता है जिस पर I2C डिवाइस बनाया गया है। यदि यह संभव नहीं है, तो यहां एक स्केच और आरेख के साथ एक संग्रह का लिंक दिया गया है - जो I2C बस के माध्यम से जुड़े सभी उपकरणों के पते निर्धारित करता है। आपको बस डिवाइस को Arduino से कनेक्ट करना है, स्केच अपलोड करना है, कंसोल खोलना है और पता देखना है।


यहां हम एक फ़ंक्शन देखते हैं, जो वास्तव में, डिस्प्ले के आउटपुट से निपटेगा। आउटपुट सिद्धांत कुछ इस तरह है:

- हम setCursor () फ़ंक्शन का उपयोग करके आउटपुट की शुरुआत की स्थिति निर्धारित करते हैं

- स्ट्रिंग को प्रिंट () फ़ंक्शन के साथ प्रिंट करें

उसके बाद, अगला प्रिंट () फ़ंक्शन अगली स्थिति से आउटपुट शुरू करेगा जिसके बाद पिछला इनपुट समाप्त हो जाएगा। यह भी ध्यान दें कि, कंसोल के आउटपुट के विपरीत, आउटपुट और लाइन फीड को पूरा करने के लिए यहां प्रिंट्लन () फ़ंक्शन का उपयोग नहीं किया जाता है।

इस प्रकार, पहली पंक्ति में स्क्रीन पर शिलालेख "टेस्ट LCD1602" दिखाई देगा, और डिस्प्ले रिज़ॉल्यूशन और एक काउंटर दिखा रहा है कि हमारे स्केच ने कितने चक्र काम किए हैं, दूसरी पंक्ति में इंगित किया जाएगा।

लेकिन, अगर हमें स्क्रीन पर कई चर मान प्रदर्शित करने की आवश्यकता है, तो यह विधि बहुत सुविधाजनक नहीं है। तथ्य यह है कि डिस्प्ले को प्रदर्शित करने की प्रक्रिया बहुत ऊर्जा-गहन और धीमी है, और हम इस फ़ंक्शन में आउटपुट को 7 गुना तक करते हैं। स्ट्रिंग को पहले से तैयार करना और फिर इसे पूरी तरह से आउटपुट करना बहुत आसान होगा। स्वरूपित इनपुट फ़ंक्शन sprintf() इसमें हमारी सहायता करेगा।

साइड नोट #3: sprintf() स्वरूपित इनपुट फ़ंक्शन।

सी भाषा में स्ट्रिंग्स को प्रिंट करने के लिए कई बहुत ही उपयोगी कार्य हैं - उन्हें स्वरूपित आउटपुट फ़ंक्शन कहा जाता है - प्रिंटफ (शब्द प्रिंट और प्रारूप से)। हमारे में विशिष्ट मामलाहम स्प्रिंटफ फ़ंक्शन में रुचि रखते हैं, जो स्क्रीन पर कुछ भी प्रदर्शित नहीं करता है, लेकिन बाद के आउटपुट के लिए एक स्ट्रिंग बनाता है। यह कुछ इस तरह दिखता है:

स्प्रिंटफ (str, "स्ट्रिंग% d से आउटपुट", i);

फ़ंक्शन एक टेम्पलेट (पीले) का उपयोग करके एक स्ट्रिंग (नीले रंग में चिह्नित) उत्पन्न करता है, जिसमें चर (हरा) के मूल्यों को प्रतिस्थापित किया जाता है। परिणाम एक स्ट्रिंग चर (लाल रंग में) में लिखा जाएगा।

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

टेम्प्लेट क्या हैं? कोई भी पैटर्न "%" वर्ण से शुरू होता है और दस में से एक (Arduino - सात के मामले में) प्रकार के वर्णों के साथ समाप्त होता है। उनके बीच, मूल्य प्रदर्शित करने के तरीके के बारे में बहुत सारी जानकारी हो सकती है, या कुछ भी नहीं हो सकता है।

आइए देखें कि टेम्पलेट में क्या हो सकता है। सामान्य तौर पर, टेम्पलेट इस तरह दिखता है:

%[ध्वज] [चौड़ाई] [.सटीक] प्रकार

वर्गाकार कोष्ठक इंगित करते हैं कि उनमें संलग्न तत्व को छोड़ा जा सकता है। ऊर्ध्वाधर बार इंगित करता है कि निर्दिष्ट मानों में से एक को इस क्षेत्र में चुना जाना चाहिए (हमारे मामले में, एच, आई, या एल अक्षरों में से एक)।

आइए पहले टेम्प्लेट के आवश्यक तत्व से निपटें - प्रकार। यह निर्दिष्ट करता है कि किस प्रकार का चर आउटपुट होगा और निम्न में से कोई एक मान ले सकता है:

चिन्ह, प्रतीक अर्थ
सीएक चरित्र
एसवर्ण स्ट्रिंग
डी, आईहस्ताक्षरित दशमलव पूर्णांक
हेपूर्णांक अष्टक
तुमपूर्णांक अहस्ताक्षरित दशमलव
एक्स, एक्सपूर्णांक हेक्साडेसिमल
पीसूचक (हेक्साडेसिमल)
एफनिश्चित प्रारूप में भिन्नात्मक संख्या
ई, ईवैज्ञानिक प्रारूप में भिन्नात्मक संख्या
जी, जीवैज्ञानिक या निश्चित प्रारूप में भिन्नात्मक संख्या

ग्रे ने उन प्रकारों को चिह्नित किया जो Arduino के साथ काम करते समय लागू नहीं होते हैं। इस प्रकार, एक स्ट्रिंग को आउटपुट करने के लिए, आपको "%s" निर्दिष्ट करने की आवश्यकता है, और एक पूर्णांक आउटपुट करने के लिए - "%d"।

अगला, चौड़ाई फ़ील्ड पर विचार करें। इसमें संख्या उस क्षेत्र की न्यूनतम चौड़ाई को इंगित करती है जिसमें टेम्पलेट प्रदर्शित किया जाएगा। यदि वेरिएबल में मान का आकार कम है, तो फ़ील्ड रिक्तियों के साथ पूर्ण हो जाएगी; यदि यह अधिक है, तो रिकॉर्ड फ़ील्ड से आगे जाएगा। तो 385 संख्या के लिए पैटर्न "%6d" 385 प्रिंट करेगा (संख्या से पहले तीन रिक्त स्थान नोट करें)।

सटीक विनिर्देशक हमेशा एक बिंदु से शुरू होता है और इसके बाद की संख्या मूल्य के प्रकार के आधार पर विभिन्न क्रियाओं को इंगित करती है। "डी, ओ, यू, एक्स" प्रकारों के लिए यह इंगित करेगा न्यूनतम राशिवर्ण जो प्रसंस्करण के दौरान दिखाई देने चाहिए। "एफ" प्रकार के लिए, दशमलव स्थानों की संख्या। टाइप "एस" के लिए, मुद्रित किए जाने वाले स्ट्रिंग वर्णों की अधिकतम संख्या। उदाहरण के लिए, संख्या 34.2345 के लिए "%6.1f" "34.1" प्रदर्शित करेगा (ध्यान दें कि अवधि को एक संकेत भी माना जाता है और संख्या से पहले दो स्थान होंगे)। या टेम्पलेट "%.3s" स्ट्रिंग "सटीक" से केवल पहले तीन वर्ण प्रदर्शित करेगा - "डॉट"।

ध्वज आपको प्रदर्शित मूल्य के प्रदर्शन को बदलने की अनुमति देता है:

आप इंटरनेट पर प्रिंटफ फ़ंक्शन टेम्प्लेट के बारे में अधिक पढ़ सकते हैं। यहाँ मैंने दिया संक्षिप्त समीक्षासबसे अधिक इस्तेमाल की जाने वाली विशेषताएं।

इस प्रकार, स्वरूपित आउटपुट का उपयोग करने के लिए फिर से लिखा गया हमारा आउटपुट फ़ंक्शन इस तरह दिखेगा:


ध्यान दें कि लाइन 33 और 37 में हम आउटपुट होने के लिए एक पूरी लाइन बनाते हैं, और लाइन 34 और 38 में हम उन्हें आउटपुट करते हैं।

अंत में, हमारा पसंदीदा सेटअप और लूप कार्य करता है।


लाइन 47 में हम डिस्प्ले रिज़ॉल्यूशन सेट करते हैं, लाइन 48 में हम बैकलाइट चालू करते हैं (जिसकी चमक को पोटेंशियोमीटर से समायोजित किया जा सकता है)। लाइन 49 पर, लूप काउंटर को शून्य पर सेट करें। हम आउटपुट के दौरान 37 वीं पंक्ति में इसे एक से बढ़ा देंगे (गिनती ++ निर्माण याद रखें?) अंत में, लाइन 56 पर, हम पहले चर्चा किए गए डिस्प्ले फ़ंक्शन को कॉल करते हैं। सभी।

क्या बदला या सुधारा जा सकता है?

उदाहरण के लिए, आप पहले कई लेखों में चर्चा किए गए मौसम स्टेशन से फोटोरेसिस्टर या लाइट सेंसर का उपयोग करके रोशनी के आधार पर स्वचालित बैकलाइट नियंत्रण बना सकते हैं। उदाहरण के लिए, तेज रोशनी में - बैकलाइट की चमक बढ़ाएं, और रात में - इसे कम करें। या मोशन सेंसर को स्क्रू करें और डिस्प्ले के सामने कोई ऑब्जेक्ट दिखाई देने पर बैकलाइट चालू करें, या ... सामान्य तौर पर, मुझे लगता है कि आप पहले ही समझ चुके हैं कि, यदि वांछित है, तो एक या अधिक घटकों को बदलकर और कोड का एक टुकड़ा लिखकर , आप गंभीरता से प्रदर्शन की उपयोगिता में सुधार कर सकते हैं। हम डिस्प्ले पर प्रदर्शित करने के लिए कस्टम-डिज़ाइन किए गए प्रतीकों का भी उपयोग कर सकते हैं।

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

और आज के लिए मेरे पास सब कुछ है।

इस सरल लेख के साथ, मैं कार्यस्थल स्वचालन पर अपने लेखों की श्रृंखला शुरू करना चाहता हूं।

वर्तमान में बाजार में हैं एक बड़ी संख्या कीएलसीडी डिस्प्ले, या, जैसा कि उन्हें भी कहा जाता है, साइन-सिंथेसाइजिंग डिस्प्ले। 1602 एक चिप पर प्रदर्शित (16 वर्ण, 2 पंक्तियाँ) HD44780 और संगत। इन्हें चीन में सस्ते में खरीदा जा सकता है।

यह आलेख विस्तार से इस स्क्रीन के लिए वायरिंग आरेख का वर्णन करता है, लेकिन यह कई अन्य टेक्स्ट डिस्प्ले के लिए काम करेगा। Arduino . के लिए एक पुस्तकालय हैतरल स्फ़टिक जिसके साथ डिस्प्ले के साथ काम करना बहुत सुविधाजनक है।

आवश्यक घटक

  1. एचडी44780 चिप पर एलसीडी 1602
  2. कोई भी Arduino। मेरे मामले में Arduino नैनो
  3. ट्रिमर रोकनेवाला
  4. विन्यास
  5. पावर मॉड्यूल
  6. कनेक्टिंग तार

प्रदर्शन कनेक्शन

डिस्प्ले 5V द्वारा संचालित है। डिस्प्ले की बैकलाइट एक अलग सर्किट है, जो बाकी सर्किट से जुड़ा नहीं है। आप 15 को पिन करने के लिए 5V लगाकर और माइनस को 16 पिन से कनेक्ट करके इसे चालू कर सकते हैं। आप इसे PWM सिग्नल का उपयोग करके डिम करने योग्य बना सकते हैं। यदि आवश्यक हो तो अलग से सक्षम और अक्षम करना भी फैशनेबल है।

शेष डिस्प्ले सर्किटरी के लिए बिजली की आपूर्ति निम्नलिखित पिनों को की जाती है:

  • 1-जीएनडी
  • 2 - +5
  • 3 - कंट्रास्ट। यह 5V से वोल्टेज विभक्त के माध्यम से जुड़ा हुआ है। विभक्त आमतौर पर एक पारंपरिक चर या ट्यूनिंग रोकनेवाला होता है।


डिस्प्ले को जोड़ने के लिए, Arduino पर 6 लाइनों, 6 पिनों का उपयोग करना पर्याप्त है। हमें डिस्प्ले रीडिंग पढ़ने की आवश्यकता नहीं है, इसलिए हम तुरंत 5 वें संपर्क (आरडब्ल्यू) को जोड़ते हैं, जो जमीन पर पढ़ने और लिखने के लिए जिम्मेदार है।

फिर, हम Arduino और शील्ड को अपनी 6 संचार लाइनों से जोड़ते हैं। Arduino पर कौन से पिन चुने जाएंगे इससे कोई फर्क नहीं पड़ता: हम उन्हें प्रोग्राम में सेट करेंगे, लेकिन उदाहरण के लिए निम्नलिखित कॉन्फ़िगरेशन को चुना गया था:

  • चौथा डिस्प्ले पिन - चौथा अरुडिनो पिन. यह एड्रेस सिग्नल लाइन है। A0 या RS के रूप में जाना जाता है। इस पर निर्भर करता है कि यह 0 या 1 है या नहीं, डिस्प्ले समझता है कि हमारे पास डेटा लाइन पर "कर्सर ले जाएं" या प्रदर्शित करने के लिए एक वर्ण कोड है या नहीं।
  • डिस्प्ले का 6वां पिन Arduino का 5वां पिन है। यह डेटा एक्सेस अनुमति लाइन है। ई या सक्षम के रूप में जाना जाता है। जब यह लाइन एक हो जाती है, तो डिस्प्ले एक कमांड निष्पादित करता है या डेटा लाइन से एक कैरेक्टर को आउटपुट करता है।
  • 11वां, 12वां, 13वां, 14वां डिस्प्ले पिन क्रमशः 10वां, 11वां, 12वां, 13वां Arduino पिन है। ये डेटा लाइनें हैं। DB4, DB5, DB6, DB7 के रूप में जाना जाता है।

स्क्रीन कनेक्ट है और डेटा प्राप्त करने के लिए तैयार है। यह Arduino के लिए एक कार्यक्रम लिखना बाकी है।

प्रोग्रामिंग

// लिक्विड क्रिस्टल मानक पुस्तकालय शामिल करें # शामिल // स्क्रीन ऑब्जेक्ट को इनिशियलाइज़ करें, // पिन को Arduino से कनेक्ट करने के लिए उपयोग किया जाता है: // RS, E, DB4, DB5, DB6, DB7 लिक्विड क्रिस्टल एलसीडी (4, 5, 10, 11, 12, 13); शून्य सेटअप () (// स्क्रीन के आकार (कॉलम और पंक्तियों की संख्या) सेट करें। कॉलम 0, लाइन 1 तो // यह वास्तव में दूसरी लाइन है क्योंकि नंबरिंग शून्य से शुरू होती है LCD.setCursor(0, 1); // दूसरी लाइन को प्रिंट करें LCD.print ("एलसीडी काम कर रहा है !!!"); ) शून्य लूप () ()

सब कुछ काफी सरल है और टिप्पणियों से स्पष्ट होना चाहिए।



अपना स्वयं का उपकरण बनाते समय, विभिन्न प्रकार की सूचनाओं को तुरंत प्रदर्शित करने की आवश्यकता के लिए यह असामान्य नहीं है। उदाहरण के लिए, यदि आप एक नियंत्रक बनाते हैं स्मार्ट घर, तो डिवाइस को आउटपुट डिवाइस से लैस करना उचित है जो आपको सिस्टम की वर्तमान स्थिति को जल्दी से खोजने की अनुमति देता है। सबसे अच्छा समाधान एक लिक्विड क्रिस्टल डिस्प्ले है। बैकलाइट बंद होने पर बिजली की खपत न्यूनतम होती है, और डिस्प्ले के साथ काम करना बेहद सरल होता है और इसके लिए प्रोग्राम कोड में ज्यादा हस्तक्षेप की आवश्यकता नहीं होती है। वास्तव में, एलसीडी डिस्प्ले पर सूचना का आउटपुट आउटपुट से सीरियल पोर्ट तक बहुत अलग नहीं है। लेख में चर्चा की गई है कि लोकप्रिय HD44780 चिप पर आधारित एक कैरेक्टर-जनरेटिंग डिस्प्ले को Arduino कंट्रोलर से कैसे जोड़ा जाए।

लिक्विड क्रिस्टल टेक्स्ट डिस्प्ले कैसे काम करता है

कुछ बारीकियों को समझने के लिए, यह जानना उपयोगी है कि चरित्र-निर्माण प्रदर्शन कैसे काम करता है। इस प्रकार के डिस्प्ले की एक विशेषता इसकी अपनी मेमोरी के साथ अपने स्वयं के नियंत्रक की उपस्थिति है। DDRAM डिस्प्ले मेमोरी है। स्क्रीन पर किसी वर्ण को प्रदर्शित करने के लिए, आपको वर्ण को स्मृति कक्ष में लोड करना होगा, और फिर स्मृति कक्ष को प्रदर्शित करने के लिए एक आदेश भेजना होगा। प्रेषित होने पर, वर्ण ASCII कोड के साथ एन्कोड किए जाते हैं। उदाहरण के लिए, स्मृति में कोड 0×31 लिखते समय, प्रतीक “ 1 ". स्क्रीन पर इसके प्रदर्शन के लिए वर्ण कोड का पत्राचार (अर्थात, चरित्र का "चित्र") CGROM मेमोरी में संग्रहीत किया जाता है। CGROM परिवर्तनशील मेमोरी नहीं है। इसलिए, डिस्प्ले केवल उन वर्णों को प्रदर्शित कर सकता है जो नियंत्रक में "हार्डवायर्ड" हैं। यही कारण है कि प्रत्येक प्रदर्शन प्रदर्शित करने में सक्षम नहीं है, उदाहरण के लिए, रूसी वर्ण। हमारे स्टोर में बेचे जाने वाले डिस्प्ले, दुर्भाग्य से, Russified नहीं हैं। सीजीआरएएम मेमोरी भी है। वह परिवर्तनशील है। हम अपने स्वयं के प्रतीक बना सकते हैं और उन्हें प्रदर्शन पर प्रदर्शित कर सकते हैं। यह ध्यान में रखा जाना चाहिए कि आप आठ से अधिक वर्ण नहीं बना सकते।

यह सब "अंडरहुड" काम केवल कुछ बारीकियों को समझने के लिए महत्वपूर्ण है। Arduino के लिए, एक सरल और स्पष्ट पुस्तकालय है जो आपके लिए पूरी मेहनत करता है, जिससे आप आसानी से और आसानी से डिस्प्ले पर आउटपुट को नियंत्रित कर सकते हैं।

LCD डिस्प्ले को Arduino से कनेक्ट करना

डिस्प्ले को कनेक्ट करने के लिए, निश्चित रूप से, आपको इसे ब्रेडबोर्ड पर इंस्टॉल करना होगा। कृपया ध्यान दें: हमारे स्टोर में बेचे जाने वाले डिस्प्ले बिना सोल्डर पिन कनेक्टर के बेचे जाते हैं। यदि आप तुरंत एक ब्रेडबोर्ड पर स्थापित होने के लिए एक डिस्प्ले तैयार करना चाहते हैं, तो उत्पाद पृष्ठ पर "कनेक्टर को मिलाएं" चेकबॉक्स को चेक करें और हम आपके लिए कनेक्टर को मिलाप करेंगे। डिस्प्ले पर डेटा ट्रांसफर दो तरह से व्यवस्थित किया जा सकता है: एक बार में 4 या 8 बिट। तदनुसार, 4 या 8 Arduino पिन की आवश्यकता होती है। व्यवहार में, आठ-बिट इंटरफ़ेस का उपयोग करते समय कोई गति लाभ नहीं होगा। इसलिए, हमें डेटा ट्रांसफर के लिए केवल 4 डिजिटल आउटपुट की आवश्यकता होती है। डिस्प्ले मोड सेट करने के लिए अन्य 3 आउटपुट की आवश्यकता होगी। कुल मिलाकर, डिस्प्ले को जोड़ने के लिए नियंत्रक के केवल 7 डिजिटल आउटपुट की आवश्यकता होती है। प्रदर्शन पर संपर्कों पर हस्ताक्षर किए गए हैं, जो कनेक्ट करते समय आपको भ्रमित नहीं होने देंगे:

निष्कर्ष बाएं से दाएं क्रमांकित हैं:

  • 1-(वीएसएस) प्रदर्शन मैदान। ग्राउंड रेल से जुड़ता है।
  • 2-(वीडीडी) प्रदर्शन शक्ति। पावर रेल से जोड़ता है।
  • 3-(वो) पोटेंशियोमीटर इनपुट (शामिल)। डिस्प्ले कंट्रास्ट को पोटेंशियोमीटर का उपयोग करके समायोजित किया जा सकता है। पोटेंशियोमीटर का मध्य आउटपुट डिस्प्ले आउटपुट से जुड़ा होता है।
  • 4-(रुपये) "कमांड" सिग्नल इनपुट। किसी भी Arduino डिजिटल पिन से जुड़ता है। उदाहरण में, यह पिन #12 से जुड़ा है।
  • 5-(आरडब्ल्यू) "रीड" या "राइट" मोड सेट करता है। हम रिकॉर्ड करने जा रहे हैं। हम संपर्क को जमीन से जोड़ते हैं।
  • 6-() सक्षम करना। एक और "कमांड" आउटपुट। जब आउटपुट एक होता है, तो डिस्प्ले पहले से प्रेषित कमांड को निष्पादित करता है। किसी भी डिजिटल आउटपुट से जुड़ता है। उदाहरण में, यह पिन #11 से जुड़ा है।
  • 7-10 (डी0-डी3) असंबद्ध छोड़ दिया जाता है। ये डेटा पिन हैं जो 8-बिट इंटरफ़ेस में उपयोग किए जाते हैं। हमें नहीं चाहिए।
  • 11-14 (डी4-डी7) चार-बिट मोड में डेटा ट्रांसमिशन के लिए संपर्क। किसी भी डिजिटल आउटपुट से फिर से कनेक्ट करें। उदाहरण में, वे क्रमशः पिन 5,4,3 और 2 से जुड़े हुए हैं (D4 से पिन 5, D5 से पिन 4, आदि)।
  • 15 () बैकलाइट एलईडी एनोड। वर्तमान सीमित रोकनेवाला पहले से ही डिस्प्ले में स्थापित है, इसलिए एनोड बस पावर रेल से जुड़ा है। चूंकि बैकलाइट सबसे आम एलईडी का उपयोग करता है, आप इसे किसी भी पिन से कनेक्ट कर सकते हैं जो बैकलाइट की चमक को प्रोग्रामेटिक रूप से समर्थन और नियंत्रित करता है।
  • 16 () रोशनी कैथोड। ग्राउंड रेल से जुड़ता है।

दृश्य वायरिंग आरेख:


प्रोग्रामिंग

के साथ साथ अरुडिनो आईडीईलिक्विड क्रिस्टल डिस्प्ले के लिए एक उत्कृष्ट पुस्तकालय के साथ आता है - लिक्विड क्रिस्टल। पुस्तकालय में ऐसे उदाहरण हैं जो स्क्रीन की क्षमताओं को पूरी तरह से प्रकट करते हैं। आरंभ करने के लिए, मानक "हैलोवर्ल्ड" उदाहरण का उपयोग करें (फ़ाइल -> उदाहरण -> लिक्विड क्रिस्टल -> हैलोवर्ल्ड) या बोर्ड पर निम्नलिखित कोड अपलोड करें:

/* *RS डिस्प्ले पिन से arduino pin 12 * arduino pin को डिस्प्ले पिन सक्षम करें 11 * arduino pin को D4 डिस्प्ले पिन 5 * arduino pin को D5 डिस्प्ले पिन * arduino pin को D6 डिस्प्ले पिन 3 * arduino pin 2 को D7 डिस्प्ले पिन *आर/डब्ल्यू डिस्प्ले पिन टू ग्राउंड ; // इनिशियलाइज़ डिस्प्ले // एन्यूमरेट आर्डिनो पिनजिससे // RS, E, D4, D5, D6, D7 लिक्विड क्रिस्टल एलसीडी (12, 11, 5, 4, 3, 2) डिस्प्ले पिन से जुड़े हैं; शून्य सेटअप () (// प्रदर्शन के कॉलम और पंक्तियों की संख्या निर्दिष्ट करें: LCD.begin (16, 2); // संदेश प्रदर्शित करें। LCD.print ("हैलो, वर्ल्ड!"); ) शून्य लूप () (// पहली पंक्ति के 0 (शून्य) कॉलम पर कर्सर सेट करें // वास्तव में, कर्सर दूसरी (नीचे) पंक्ति पर सेट हो जाएगा // पंक्तियों और स्तंभों की संख्या शून्य से शुरू होती है LCD.setCursor(0, 1 ); // सेकंड की संख्या प्रदर्शित करें // बोर्ड लोड होने के बाद से बीता हुआ: LCD.print (मिलिस ()/1000); )

* आरएस डिस्प्ले पिन से आर्डिनो पिन 12

* प्रदर्शन आउटपुट को arduino pin 11 में सक्षम करें

*D4 डिस्प्ले पिन से arduino pin 5

*D5 डिस्प्ले पिन टू arduino pin 4

*D6 डिस्प्ले पिन से arduino pin 3

*D7 डिस्प्ले पिन टू arduino pin 2

*आर/डब्ल्यू प्रदर्शन जमीन की ओर ले जाता है

* VO डिस्प्ले आउटपुट के लिए पोटेंशियोमीटर आउटपुट

// पुस्तकालय शामिल करें:

#शामिल ;

// डिस्प्ले को इनिशियलाइज़ करें

// उन आर्डिनो पिनों की सूची बनाएं जो . से जुड़े हैं

// आरएस, ई, डी 4, डी 5, डी 6, डी 7 डिस्प्ले पिन

व्यर्थ व्यवस्था()(

// प्रदर्शन के कॉलम और पंक्तियों की संख्या निर्दिष्ट करें:

एलसीडी शुरू (16 , 2 );

// संदेश प्रदर्शित करें।

एलसीडी प्रिंट ("हैलो, वर्ल्ड!");

शून्य लूप () (

// पंक्तियों और स्तंभों की संख्या शून्य से शुरू होती है

एलसीडी सेट कर्सर (0, 1);

// सेकंड की संख्या प्रदर्शित करें,

// बोर्ड लोड होने के बाद से समाप्त हो गया:

एलसीडी प्रिंट (मिली () / 1000);

इस कोड को अपलोड करने के बाद अरुडिनो बोर्डस्क्रीन "हैलो, वर्ल्ड!" प्रदर्शित करेगी। अंग्रेज़ी "नमस्ते दुनिया!") पहली पंक्ति पर और दूसरी पंक्ति पर एक टाइमर गिनती सेकंड।

हमेशा की तरह, कोड सरल और स्पष्ट है। हालाँकि, हम अभी भी इसका अधिक विस्तार से विश्लेषण करेंगे:

  • लिक्विड क्रिस्टल एलसीडी(12, 11, 5, 4, 3, 2) - यह रेखा एक प्रदर्शन वस्तु बनाती है जिसके साथ हम भविष्य में काम करेंगे। कोष्ठक में, उन पिनों की संख्या जिनसे प्रदर्शन संपर्क जुड़े हुए हैं, तर्क के रूप में पारित किए जाते हैं। तदनुसार: आरएस, ई, डी 4, डी 5, डी 6, डी 7। जैसा कि ऊपर उल्लेख किया गया है, कनेक्ट करते समय पिन नंबर पूरी तरह से मनमाने ढंग से चुने जा सकते हैं।
  • एलसीडी.शुरुआत(16, 2) - यहां हम प्रदर्शन आयाम निर्धारित करते हैं। इस उदाहरण में, 16 स्तंभ और 2 पंक्तियाँ हैं। हमारे 20X4 डिस्प्ले के लिए, यह लाइन इस तरह दिखेगी: एलसीडी.शुरुआत(20, 4).
  • एलसीडी प्रिंट("नमस्ते, दुनिया!") - पाठ प्रदर्शित करता है। प्रदर्शन आकार (lcd.begin) निर्दिष्ट करने के बाद, कर्सर को प्रदर्शन के ऊपरी बाएँ कोने में रखा जाता है। इसलिए, यह पाठ बाईं ओर से पहली (शीर्ष) पंक्ति पर प्रदर्शित होगा।
  • LCD.setCursor(0, 1) - कर्सर को निर्दिष्ट स्थिति में सेट करता है। इस मामले में, दूसरी पंक्ति की सबसे बाईं स्थिति निर्दिष्ट है। कोष्ठक में कॉलम की संख्या दी गई है, उसके बाद पंक्ति की संख्या दी गई है। दोनों पंक्तियों और स्तंभों को स्थिति शून्य से क्रमांकित किया गया है। इस प्रकार: LCD.setCursor(0, 0) - कर्सर को ऊपरी बाएँ कोने पर सेट करता है, LCD.setCursor(15, 0) - निचला दायाँ।
  • एलसीडी प्रिंट(मिली ()/1000) - पहले से ही ऊपर वर्णित है। यहां, पाठ के बजाय, गणना के लिए एक सूत्र को एक पैरामीटर के रूप में पारित किया जाता है। परिणाम स्क्रीन पर प्रदर्शित होता है।

अब जब हमने सबसे सरल उदाहरण को समझ लिया है, तो हम अधिक जटिल उदाहरणों पर आगे बढ़ सकते हैं। और अगर आप पहले से ही सब कुछ समझ चुके हैं और एलसीडी डिस्प्ले खरीदने के लिए तैयार हैं, तो मैंने आपके लिए चीनी डिस्प्ले सेलर्स के लिंक एकत्र किए हैं जिन्हें मैंने चेक किया है:

कैरेक्टर एलसीडी डिस्प्ले

प्रदर्शन आकार (कॉलम * पंक्तियाँ)रोशनी का रंगदर्जा
20*4 नीलासत्यापित
20*4 पीलासत्यापित
16*2 नीलासत्यापित
16*2 पीलासत्यापित
16*2 हरासत्यापित

लिक्विड क्रिस्टल लाइब्रेरी के अन्य उदाहरणों का अवलोकन

लिक्विड क्रिस्टल लाइब्रेरी के साथ दिए गए मानक उदाहरणों में, आप निम्नलिखित रेखाचित्र पा सकते हैं:

    • स्वतः स्क्रॉल- स्वचालित मोड में पाठ को स्क्रॉल करने की क्षमता प्रदर्शित करता है। किसी प्रकार की चलने वाली रेखा। जब कोई वर्ण आउटपुट होता है, तो पिछले वर्ण स्थानांतरित हो जाते हैं। इस प्रकार, नया वर्ण उसी स्थान पर आउटपुट होता है।

    • झपकी- एक आयत के रूप में एक ब्लिंकिंग कर्सर के प्रदर्शन को सक्षम करने की क्षमता प्रदर्शित करता है।

    • कर्सर- एक चमकती क्षैतिज पट्टी के रूप में कर्सर के प्रदर्शन को सक्षम करने की क्षमता प्रदर्शित करता है।

    • कस्टम कैरेक्टर- प्रदर्शन पर उन्हें प्रदर्शित करने के लिए अपने स्वयं के पात्रों को बनाने की संभावना दिखाता है। वैसे, इस स्केच में एक त्रुटि है। नीचे दिए गए विवरण।

    • दिखाना- डिस्प्ले को "बंद" करने का एक तरीका दिखाता है। यानी प्रदर्शित टेक्स्ट को दिखाना या छिपाना।

    • स्क्रॉल- मैनुअल मोड में टेक्स्ट स्क्रॉल करने की क्षमता प्रदर्शित करता है।

    • धारावाहिक प्रदर्शन- स्क्रीन पर पोर्ट मॉनिटर विंडो (यानी सीरियल पोर्ट के माध्यम से प्रसारित पाठ) में मुद्रित पाठ प्रदर्शित करता है।
    • सेटकर्सर- स्क्रीन पर किसी भी स्थिति में कर्सर को सेट करने की क्षमता का प्रदर्शन करते हुए, डिस्प्ले को अक्षरों से भर देता है।
    • पाठ की दिशा- टेक्स्ट आउटपुट की दिशा बदलने की क्षमता प्रदर्शित करता है (दाएं से बाएं या बाएं से दाएं)।

आइए हम उन प्रक्रियाओं पर अधिक विस्तार से विचार करें जिनकी संभावनाएं इन उदाहरणों से प्रदर्शित होती हैं:

LCD.autoscroll ()

इस प्रक्रिया को कॉल करने के बाद, स्क्रीन पर टेक्स्ट अपने आप स्क्रॉल हो जाएगा। स्क्रॉल करना बंद करने के लिए, कॉल करें LCD.noऑटोस्क्रॉल ().

एलसीडी.ब्लिंक ()

प्रक्रिया को कॉल करने के बाद, कर्सर एक ब्लिंकिंग आयत का रूप ले लेगा। अक्षम करने के लिए, कॉल करें LCD.noBlink ()

एलसीडी.कर्सर ()

प्रक्रिया को कॉल करने के बाद, कर्सर एक ब्लिंकिंग हॉरिजॉन्टल बार का रूप ले लेगा। अक्षम करने के लिए, कॉल करें LCD.noCursor (). कर्सर फिर से अदृश्य हो जाएगा।

LCD.createChar ()

यह प्रक्रिया परिवर्तनशील स्क्रीन कैरेक्टर टेबल (सीजीआरएएम मेमोरी में) में लोड होती है, जिसे बाइट ऐरे के रूप में वर्णित किया जाता है। तर्क वर्ण संख्या और वर्ण का वर्णन करने वाले बाइट्स की एक सरणी है। आइए इस पर अधिक विस्तार से ध्यान दें। डिस्प्ले मेमोरी में अधिकतम आठ कैरेक्टर स्टोर किए जा सकते हैं। अपना प्रतीक जोड़ने के लिए आपको चाहिए:

  1. एक चरित्र का वर्णन करते हुए एक बाइट सरणी बनाएं।
  2. डिस्प्ले मेमोरी को सिंबल टेबल में एक नंबर असाइन करके एक सिंबल लिखें। वर्ण शून्य से सात तक गिने जाते हैं।
  3. एक प्रक्रिया का उपयोग करके स्क्रीन पर एक चरित्र प्रदर्शित करें एलसीडी.लिखें ()(भ्रमित नहीं होना चाहिए एलसीडी.प्रिंट ()), एक तर्क के रूप में जिसके लिए प्रतीक संख्या को पारित करना है।

विकास के माहौल और पुस्तकालय की विशेषताओं में एक बग के परिणामस्वरूप वर्ण संख्या 0 (शून्य) प्रदर्शित करने में असमर्थता हुई। कंपाइलर लाइन का सामना करेगा LCD.write(0) एक त्रुटि के साथ: “ अतिभारित 'लिखना (int)' की कॉल अस्पष्ट है". यह वह पंक्ति है जो उदाहरण में होती है कस्टम कैरेक्टरपुस्तकालय। जब आप मानक उदाहरण संकलित करने का प्रयास करते हैं, तो आपको एक त्रुटि मिलेगी:

CustomCharacter.ino: फ़ंक्शन 'शून्य सेटअप ()' में: CustomCharacter:115: त्रुटि: अतिभारित 'लिखना (int)' की कॉल अस्पष्ट है /home/nazarovd/arduino-1.0.5/libraries/LiquidCrystal/LiquidCrystal.h:82 : नोट: उम्मीदवार हैं: वर्चुअल size_t लिक्विड क्रिस्टल :: राइट (uint8_t) /home/nazarovd/arduino-1.0.5/hardware/arduino/cores/arduino/Print.h:49: नोट: size_t Print::write(const char) *)

कस्टम कैरेक्टर। ino: फ़ंक्शन 'शून्य सेटअप ()' में:

कस्टम कैरेक्टर: 115: त्रुटि: ओवरलोडेड 'लिखना (int)' की कॉल अस्पष्ट है

/home/nazarovd/arduino-1.0.5/libraries/LiquidCrystal/LiquidCrystal. एच: 82: नोट: उम्मीदवार हैं: वर्चुअल साइज_टी लिक्विड क्रिस्टल :: राइट (uint8_t)

/home/nazarovd/arduino-1.0.5/hardware/arduino/cores/arduino/Print. h : 49 : नोट : size_t Print :: लिखें (const char * )

त्रुटि को ठीक करने के लिए, बस लाइन को बदलें LCD.write( 0 ) LCD.लिखने के लिए ( (बाइट)0).
अब अपना खुद का प्रतीक बनाने का एक छोटा सा उदाहरण। आइए रूबल प्रतीक प्रदर्शित करें।

// पुस्तकालय शामिल करें #शामिल करें ; // लिक्विड क्रिस्टल डिस्प्ले एलसीडी को इनिशियलाइज़ करें (12, 11, 5, 4, 3, 2); // अपने प्रतीक का वर्णन करना। // बस चरित्र को लोगों के साथ "ड्रा" करें // प्रदर्शित होने पर इकाइयों को डॉट्स से भर दिया जाएगा, शून्य खाली हो जाएगा बाइट रूबल = (0b00000, 0b01110, 0b01001, 0b01001, 0b01110, 0b01000, 0b11110, 0b01000,); शून्य सेटअप () (// स्क्रीन मेमोरी में हमारे चरित्र को लिखें // तर्क के रूप में हम चरित्र संख्या // और एक बाइट सरणी पास करते हैं जो हमारे चरित्र का वर्णन करते हैं LCD.createChar (0, रूबल); // डिस्प्ले LCD.begin सेट करें (16, 2); ) शून्य लूप () (// स्क्रीन के ऊपरी बाएँ कोने पर कर्सर सेट करें। 0); // 10 सेकंड की देरी के लिए कुछ भी न करें (10000); )

// पुस्तकालय शामिल करें

#शामिल ;

// डिस्प्ले को इनिशियलाइज़ करें

लिक्विड क्रिस्टल एलसीडी (12, 11, 5, 4, 3, 2);

यह निर्देश दिखाता है कि कैसे Arduino से कनेक्ट किया जाए और 16x2 और 20x4 पर LCD स्क्रीन का उपयोग किया जाए। इन डिस्प्ले में बिल्ट-इन लो-पावर एलईडी बैकलाइट है, जो +5 वी से संचालित होती है। इन एलसीडी डिस्प्ले को कनेक्ट करने के लिए, आपको 6 पिन की आवश्यकता होती है। आप अपने Arduino पर किसी भी पिन का उपयोग कर सकते हैं!

निर्देश एडफ्रूट एलसीडी स्क्रीन के आधार पर लिखा गया है - नीला और सफेद 16x2, आरजीबी 16x2 एलसीडी, और नीला और सफेद 20x4, आरजीबी 20x4। यदि आप किसी अन्य निर्माता से एलसीडी स्क्रीन का उपयोग कर रहे हैं, तो इसकी कोई 100% गारंटी नहीं है कि यह काम करेगा (हालांकि 99% मामलों में यह काम करेगा)।

चरित्र बनाम ग्राफिक एलसीडी - क्या अंतर है?

विभिन्न एलसीडी स्क्रीन की एक बड़ी संख्या है। इस लेख में, हम कैरेक्टर एलसीडी को देखेंगे। टेक्स्ट प्रदर्शित करने के लिए इस तरह की स्क्रीन एक बढ़िया विकल्प है। आप आइकनों के प्रदर्शन को भी अनुकूलित कर सकते हैं, लेकिन इन आइकनों का आकार 7 पिक्सेल (बहुत छोटा!) से अधिक नहीं होना चाहिए।

नीचे दी गई तस्वीर दो पंक्तियों के साथ 16-वर्ण एलसीडी मॉनिटर का एक उदाहरण दिखाती है:

यदि आप बारीकी से देखते हैं, तो आपको छोटे आयत दिखाई देंगे जहाँ वर्ण प्रदर्शित होते हैं। प्रत्येक आयत पिक्सेल का एक अलग ग्रिड है। तुलना के लिए, ग्राफिकल एलसीडी स्क्रीन नीचे दिखाई गई है:

ग्राफिकल लिक्विड क्रिस्टल डिस्प्ले पर, एक बड़ा जालपिक्सल (इस उदाहरण में - 128x64)। आप उस पर टेक्स्ट प्रदर्शित कर सकते हैं, लेकिन छवियों को प्रदर्शित करना बेहतर है। ग्राफिक एलसीडी आमतौर पर बड़े होते हैं, कनेक्ट करने के लिए अधिक पिन होते हैं, और टेक्स्ट एलसीडी की तुलना में उपयोग करना कुछ अधिक कठिन होता है।

इस लेख में, हम केवल टेक्स्ट/कैरेक्टर स्क्रीन को कवर करेंगे!

एलसीडी स्क्रीन के विभिन्न मॉडल

हमारे द्वारा विचाराधीन स्क्रीन के प्रकार को सीमित करने के बाद, आइए देखें कि वे क्या हैं।



यद्यपि वे केवल पाठ प्रदर्शित करने के लिए उपयोग किए जाते हैं, अलग-अलग मॉडल और रूप कारक हैं: ऊपरी बाएं कोने में एक नीले रंग की पृष्ठभूमि पर सफेद पाठ के साथ एक 20x4 एलसीडी है, ऊपरी दाएं में एक हरे रंग की पृष्ठभूमि पर काले पाठ के साथ एक 16x4 है, में निचला बायां है और एक भूरे रंग की पृष्ठभूमि पर काले पाठ के साथ 16x1 है।

अच्छी खबर यह है कि ये सभी स्क्रीन विनिमेय हैं। यदि आपने उनमें से एक को अनुकूलित किया है, तो आप इसे दूसरे मॉडल से बदल सकते हैं। स्केच को थोड़ा बदलना होगा, लेकिन कनेक्शन वही है!



इस भाग में हम कनेक्शन के लिए एक रेल और 16 पिन के साथ एलसीडी स्क्रीन का उपयोग करते हैं (ऊपर फोटो देखें)। कनेक्शन के लिए 8 पिन के साथ 2 रेल के साथ एक एलसीडी भी है (नीचे दिए गए चित्र में)।



दूसरे मॉडल को सोल्डरलेस सर्किट बोर्ड से जोड़ना अधिक कठिन है।

एक चरित्र एलसीडी स्क्रीन को Arduino से कनेक्ट करना

संपर्क रेल स्थापित करना



एलसीडी स्क्रीन के अलावा, आपको अतिरिक्त स्ट्रैपिंग की आवश्यकता होगी। सबसे पहले - 10 kOhm पर। पोटेंशियोमीटर का उपयोग करके, हम डिस्प्ले के कंट्रास्ट को समायोजित करेंगे। प्रत्येक एलसीडी स्क्रीन में अलग-अलग कंट्रास्ट सेटिंग्स होती हैं, इसलिए आप समायोजन के बिना नहीं कर सकते। इसके अलावा, आपको 0.1 "पिन रेल की आवश्यकता होगी।



यदि संपर्कों के साथ रेल बहुत लंबी है, तो बस अतिरिक्त संपर्कों को काट देना फैशनेबल है!

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

सोल्डरिंग करते समय, बेहद सावधान रहें कि आपका नुकसान न हो! आप पहले पहले और 16 संपर्कों को "हड़प" सकते हैं, और फिर बाकी को मिलाप कर सकते हैं।



पावर और बैकलाइट

बिजली और प्रकाश कनेक्ट करें

स्पष्टीकरण



हम कुछ दिलचस्प चीजों में शामिल होना शुरू कर रहे हैं! अपने एलसीडी को ब्रेडबोर्ड पर माउंट करें।



हम अपने Arduino से ब्रेडबोर्ड को पावर देते हैं। +5V को लाल रेल से और Gnd को नीले रंग से कनेक्ट करें।



उसके बाद, हम अपनी LCD स्क्रीन की बैकलाइट को कनेक्ट करेंगे। पिन 16 को gnd से और पिन को 15 से +5V से कनेक्ट करें। अधिकांश एलसीडी स्क्रीन में बैकलाइट रेसिस्टर्स होते हैं।

यदि आपके मॉड्यूल पर कोई प्रतिरोधक नहीं हैं, तो आपको 5V और पिन 15 के बीच एक जोड़ना होगा। प्रतिरोधों के मान की गणना करने के लिए, जाँच करें अधिकतम करंटडेटाशीट से बैकलाइट और वोल्टेज ड्रॉप के अनुमानित मूल्य को शक्ति देने के लिए। वोल्टेज ड्रॉप को 5V से घटाएं, फिर अधिकतम करंट से विभाजित करें और निकटतम उच्च मानक प्रतिरोधक मान तक गोल करें। उदाहरण के लिए, यदि वोल्टेज ड्रॉप 3.5V है और करंट 16mA है, तो प्रतिरोधक मान होगा: (5 - 3.5)/0.016 = 93.75 ओम, या 100 ओम मानक मान के लिए गोल। यदि आपको कोई डेटाशीट नहीं मिल रही है, तो 220 ओम रोकनेवाला का उपयोग करें। सच है, इस मामले में, बैकलाइट काफी पीला हो सकता है।



अपने Arduino को पावर से कनेक्ट करें। बैकलाइट जलनी चाहिए।

वैसे, कुछ सस्ते LCD स्क्रीन में बैकलाइट नहीं होती है!

कंट्रास्ट को समायोजित करने की योजना

कंट्रास्ट सर्किट

स्पष्टीकरण



पोटेंशियोमीटर स्थापित करें। फोटो में, यह पिन 1 के दाईं ओर स्थित है।



पोटेंशियोमीटर के एक किनारे को +5V से और दूसरी तरफ Gnd से कनेक्ट करें। पोटेंशियोमीटर के मध्य पिन को LCD पर 3 पिन करने के लिए कनेक्ट करें।



अब हम अपनी स्क्रीन के तर्क को जोड़ते हैं - यह बैकलाइट से अलग एक सर्किट है! पिन 1 Gnd को जाता है और पिन 2 +5V पर जाता है।



अपना Arduino चालू करें। यदि LCD मॉनिटर में बैकलाइट है, तो उसे प्रकाश करना चाहिए। पहली पंक्ति में पिक्सल के पहले आयत को देखने के लिए पोटेंशियोमीटर नॉब को घुमाएं।

अगर सब कुछ काम किया, बधाई। इसका मतलब है कि लॉजिक, लाइटिंग और कंट्रास्ट काम करते हैं! यदि यह काम नहीं करता है, तो निर्देश के अगले चरणों पर तब तक आगे न बढ़ें जब तक आप यह पता न लगा लें कि गलती क्या है!

अंतिम कनेक्शन

D0 से D7, RS, EN, और RW। D0-D7 वे पिन हैं जो डिस्प्ले पर भेजे गए मानों को स्टोर करते हैं। RS पिन नियंत्रक को बताता है कि क्या हम डेटा प्रदर्शित करने जा रहे हैं (उदाहरण के लिए, एक ASCII वर्ण) या यदि यह एक नियंत्रण बाइट है (उदाहरण के लिए, कर्सर की स्थिति बदलना)। एन पिन "सक्षम" के लिए छोटा है, इस पिन के साथ हम एलसीडी को बताते हैं जब डेटा पढ़ने के लिए तैयार होता है। आरडब्ल्यू पिन का उपयोग दिशा निर्धारित करने के लिए किया जाता है - हम डिस्प्ले से डेटा प्रदर्शित करना चाहते हैं (आमतौर पर) या पढ़ना (कम सामान्यतः उपयोग किया जाता है)।

इन सभी पिनों को Arduino से कनेक्ट करने की आवश्यकता नहीं है। उदाहरण के लिए, यदि हम केवल स्क्रीन पर डेटा प्रदर्शित करते हैं, तो RW का उपयोग करना आवश्यक नहीं है, इसलिए इसे Gnd पिन पर "खींचने" के लिए पर्याप्त है। इसके अलावा, 8 के बजाय 4 पिन का उपयोग करके एलसीडी स्क्रीन के साथ संचार करना संभव है। संभवतः एक स्वाभाविक प्रश्न उठता है कि 8 पिन का उपयोग किन मामलों में किया जाता है? सबसे अधिक संभावना है, यह डेटा ट्रांसफर दर को प्रभावित करता है। यानी 4 के बजाय 8 कॉन्टैक्ट्स का इस्तेमाल करके आप सूचनाओं के आदान-प्रदान की गति को 2 गुना बढ़ा सकते हैं। इस मामले में, गति महत्वपूर्ण नहीं है, इसलिए हम एलसीडी को Arduino से जोड़ने के लिए 4 पिन का उपयोग करते हैं।

तो, हमें 6 पिन चाहिए: RS, EN, D7, D6, D5, और D4।

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

अंतिम प्रदर्शन कनेक्शन

स्पष्टीकरण



जैसा कि ऊपर उल्लेख किया गया है, हम आरडब्ल्यू पिन का उपयोग नहीं करेंगे, इसलिए हम इसे जमीन पर खींचते हैं। यह पिन 5 है।



आरएस कनेक्ट करने के बाद - यह पिन # 4 है। हम इसे Arduino पर डिजिटल पिन #7 से जोड़ने के लिए भूरे रंग के तार का उपयोग कर रहे हैं।



एक सफेद तार के साथ, Arduino पर EN पिन - पिन # 6 को डिजिटल पिन डिजिटल # 8 से कनेक्ट करें।



डेटा संपर्कों की बारी आई। DB7 LCD पर पिन #14 है। यह नारंगी तार से Arduino पर #12 पिन करने के लिए जोड़ता है।



तीन डेटा पिन बचे हैं, DB6 (पिन #13 पीला), DB5 (पिन #12 हरा) और DB4 (पिन #11 नीला)। वे क्रमशः Arduino पर # 11, 10 और 9 पिन से जुड़ते हैं।



कनेक्शन के परिणामस्वरूप, आपको बाईं ओर फोटो के समान कुछ मिलेगा।

चरित्र एलसीडी का उपयोग करना

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

स्केच फ़ाइल खोलें → उदाहरण → लिक्विड क्रिस्टल → हैलोवर्ल्ड।

पिन के बारे में जानकारी अपडेट करना। निम्नलिखित पंक्ति की तलाश में:

लिक्विड क्रिस्टल एलसीडी(12, 11, 5, 4, 3, 2);

और इसे इसमें बदलें:

अब आप स्केच को Arduino पर संकलित और अपलोड कर सकते हैं।



यदि आवश्यक हो तो इसके विपरीत समायोजित करें।



स्वाभाविक रूप से, आप किसी भी आकार में एलसीडी डिस्प्ले का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दी गई तस्वीर दिखाती है एलसीडी ऑपरेशन 20x4.



या हरे रंग की पृष्ठभूमि पर काला पाठ:



हरे रंग की पृष्ठभूमि पर काले पाठ वाली स्क्रीन के लाभों में से एक बैकलाइट को बंद करने की क्षमता है।



हम कितनी लाइन का प्रयोग करते हैं

आइए देखें कि एलसीडी लंबे संदेशों को कैसे संभालता है और कई लाइनों का उपयोग करता है। उदाहरण के लिए, यदि आप निम्न पंक्ति बदलते हैं:

LCD.print ("हैलो, वर्ल्ड!");

अगले के लिए:

LCD.print ("नमस्ते, दुनिया! यह एक लंबा लंबा संदेश है");

आयसीडी प्रदर्शन 16x2 16वें वर्ण के बाद सब कुछ छोटा कर देगा:



लेकिन एक 20x4 एलसीडी डिस्प्ले पहली पंक्ति से तीसरी तक प्रदर्शित नहीं किए गए वर्णों को ले जाएगा (दूसरी पंक्ति चौथी पर जारी रहेगी)। बहुत सुविधाजनक नहीं है, लेकिन इस स्तर पर आपको इसके साथ रहना होगा। इसलिए लंबे तार प्रदर्शित करते समय, वर्णों की गणना करें ताकि अनुमत लंबाई से अधिक न हो।



आरजीबी बैकलाइट के साथ एलसीडी

ये स्क्रीन सामान्य स्क्रीन की तरह ही काम करती हैं, लेकिन इनमें बैकलाइटिंग के लिए तीन एलईडी (लाल, हरा, नीला) हैं, इसलिए आप विभिन्न बैकलाइट रंगों का उपयोग कर सकते हैं।

एलसीडी को जोड़ने और ऊपर दिए गए निर्देशों के अनुसार इसकी जांच करने के बाद, रंग को ठीक करने के लिए एलईडी को अपने Arduino के PWM एनालॉग पिन से कनेक्ट करें। यदि आप उपयोग कर रहे हैं Arduino Uno, आपके पास तीन मुफ्त PWM पिन बचे होने चाहिए। लाल एलईडी (एलसीडी पर पिन 16) को डिजिटल 3 से कनेक्ट करें, हरी एलईडी(पिन 17) से डिजिटल 5, और नीली एलईडी (एलसीडी पर पिन 18) से डिजिटल 6. एलसीडी मॉड्यूल में पहले से ही प्रतिरोधक हैं, इसलिए आपको अतिरिक्त कनेक्ट करने की आवश्यकता नहीं है।



अब नीचे दिए गए स्केच को Arduino पर अपलोड करें।

// स्केच में पुस्तकालयों को शामिल करें:

#शामिल

#शामिल

# परिभाषित करें रेडलाइट 3

#ग्रीनलाइट 5 परिभाषित करें

#ब्लूलाइट 6 परिभाषित करें

// हमारे द्वारा उपयोग किए जाने वाले संपर्कों की संख्या घोषित करें

// डेटा ट्रांसफर के लिए

लिक्विड क्रिस्टल एलसीडी (7, 8, 9, 10, 11, 12);

// चमक को 0 -> 255 . की सीमा में बदला जा सकता है

इंट ब्राइटनेस = 255;

// एलसीडी पर कॉलम और पंक्तियों की संख्या निर्धारित करें:

LCD.begin (16, 2);

// एलसीडी पर संदेश प्रदर्शित करें।

एलसीडी.प्रिंट ("आरजीबी 16x2 डिस्प्ले");

LCD.setCursor(0,1);

LCD.print ("मल्टीकलर LCD");

पिनमोड (रेडलाइट, आउटपुट);

पिनमोड (ग्रीनलाइट, आउटपुट);

पिनमोड (ब्लूलाइट, आउटपुट);

चमक = 100;

के लिए (int i = 0; i< 255; i++) {

सेटबैकलाइट (i, 0, 255-i);

के लिए (int i = 0; i< 255; i++) {

सेटबैकलाइट (255-आई, आई, 0);

के लिए (int i = 0; i< 255; i++) {

सेटबैकलाइट (0, 255-आई, आई);

शून्य सेटबैकलाइट (uint8_t r, uint8_t g, uint8_t b) (

// लाल एलईडी सेट करें - यह बाकी की तुलना में उज्जवल है!

आर = नक्शा (आर, 0, 255, 0, 100);

जी = नक्शा (जी, 0, 255, 0, 150);

आर = नक्शा (आर, 0, 255, 0, चमक);

जी = नक्शा (जी, 0, 255, 0, चमक);

बी = नक्शा (बी, 0, 255, 0, चमक);

// आम एनोड, तो उल्टा!

आर = नक्शा (आर, 0, 255, 255, 0);

जी = नक्शा (जी, 0, 255, 255, 0);

बी = नक्शा (बी, 0, 255, 255, 0);

सीरियल.प्रिंट ("आर ="); सीरियल.प्रिंट (आर, डीईसी);

सीरियल.प्रिंट ("जी ="); सीरियल.प्रिंट (जी, डीईसी);

सीरियल.प्रिंट ("बी ="); Serial.println (बी, डीईसी);

एनालॉगराइट (रेडलाइट, आर);

एनालॉगराइट (ग्रीनलाइट, जी);

एनालॉगराइट (ब्लूलाइट, बी);

इस स्केच का परिणाम नीचे दिए गए वीडियो में दिखाया गया है।

createChar कमांड

आप शायद विशेष पात्रों का उपयोग करना चाहेंगे। उदाहरण के लिए, यदि आप तापमान सेंसर () का उपयोग करके कोई प्रोजेक्ट विकसित कर रहे हैं, तो प्रतीक (°) काम आएगा।

यह createChar कमांड का उपयोग करके किया जा सकता है। साथ ही, आपको एक बेहतरीन वेबसाइट मिल सकती है जो आपके लिए नए प्रतीक बनाने का सारा गंदा काम करती है!

अपनी टिप्पणी, प्रश्न छोड़ें और साझा करें निजी अनुभवनीचे। चर्चा में अक्सर नए विचार और प्रोजेक्ट जन्म लेते हैं!

एक चरित्र प्रदर्शन के साथ एक Arduino बोर्ड के साथ दोस्ती कैसे करें? बहुत साधारण! सब कुछ क्रम में और विवरण के साथ नीचे है।

यदि आप कंप्यूटर से कनेक्ट किए बिना और सीरियल पोर्ट पर आउटपुट किए बिना Arduino से जानकारी प्राप्त करना चाहते हैं, तो आप एक वर्ण प्रदर्शन का उपयोग कर सकते हैं। ऐसा करना इतना कठिन नहीं है। संचार से प्राप्त सुविधा अमूल्य है।
काम के लिए, मैंने HD44780 चिप पर आधारित J204A वर्ण के LCD डिस्प्ले का उपयोग किया, जो अक्सर eBay पर LCD2004 के रूप में पाया जाता है। 20 वर्णों की 4 पंक्तियाँ, उलटी। ईबे पर दूसरों के एक समूह के साथ खरीदा, मात्र पेनीज़ के लिए, 60 से 100 रूबल तक। रूसी भाषा डिफ़ॉल्ट रूप से समर्थित नहीं है, लेकिन यह एक हल करने योग्य समस्या है, उस पर अगली बार और अधिक। और आरेख पर कनेक्टर्स को मिलाप नहीं किया जाता है, आपको टांका लगाने वाले लोहे के साथ काम करना होगा।
पुस्तकालय का उपयोग डिस्प्ले के साथ काम करने के लिए किया जाता है। लिक्विड क्रिस्टल.एचडिफ़ॉल्ट Arduino IDE में शामिल है।

लेकिन मुझे LCD2004 डिस्प्ले के लिए डेटाशीट नहीं मिली, लेकिन इंटरनेट पर डिस्प्ले पर बहुत सारे टेबल हैं। लेकिन वे व्यावहारिक रूप से एक दूसरे से अलग नहीं हैं। नियंत्रण और कनेक्शन पूरी तरह से समान हैं। अंतर केवल डिस्प्ले पर लाइनों/अक्षरों की संख्या में है। लेकिन अगर आपके पास 1602 हैं तो यह बिल्कुल प्रभावित नहीं होगा।

सभी संपर्क तालिका में परिभाषित हैं। यदि आप डिस्प्ले लेते हैं और इसे अपनी ओर मोड़ते हैं, तो संपर्क क्रमशः बाएं से दाएं स्थित होंगे, तालिका में वे बढ़ती संख्या में जाते हैं। संपर्क कॉलम में, कोष्ठक में, डेटाशीट में पदनाम दर्शाया गया है।

# संपर्क के लिए क्या प्रयोग किया जाता है टिप्पणी
1 वीएसएस (वीएसएस) जीएनडी धरती। माइक्रोकंट्रोलर बिजली की आपूर्ति प्रदर्शित करें। 0वी
2 वीडीडी (वीसीसी) डिस्प्ले माइक्रोकंट्रोलर के लिए आपूर्ति वोल्टेज। +5वी
3 वी0 (वीईई) डिस्प्ले पर कैरेक्टर कंट्रास्ट। एक पोटेंशियोमीटर के माध्यम से जुड़ना बेहतर है। 0v से +5V . तक
4 रुपये (रुपये) रजिस्टर चयन।
5 आरडब्ल्यू (आर / डब्ल्यू) रीड / राइट मोड स्विच करना। आइए इसे जमीन पर खींचें, हमें केवल सूचना को डिस्प्ले पर प्रसारित करने की आवश्यकता है। 0-लिखें +5वी-पढ़ें
6 घड़ी
7 डी0 (डीबी0) जानकारी
8 डी1 (डीबी1) डेटा स्थानांतरण। (इस्तेमाल नहीं करेंगे) जानकारी
9 डी2 (डीबी2) डेटा स्थानांतरण। (इस्तेमाल नहीं करेंगे) जानकारी
10 डी3 (डीबी3) डेटा स्थानांतरण। (इस्तेमाल नहीं करेंगे) जानकारी
11 डी4 (डीबी4) जानकारी
12 D5 (DB5) डेटा स्थानांतरण। (व्यस्त) जानकारी
13 D6 (DB6) डेटा स्थानांतरण। (व्यस्त) जानकारी
14 D7 (DB7) डेटा स्थानांतरण। (व्यस्त) जानकारी
15 ए (एलईडी+) +5V वोल्टेज, डिस्प्ले बैकलाइट, डिस्प्ले ब्राइटनेस को पोटेंशियोमीटर के जरिए एडजस्ट किया जा सकता है। +5वी
16 के (एलईडी-) जीएनडी ग्राउंड, बैकलाइट प्रदर्शित करें 0वी

वी


डिस्प्ले पर डेटा ट्रांसफर दो संस्करणों में संभव है: प्रति चक्र 8 और 4 बिट। इसलिये Arduino के पास कुछ संपर्क हैं, हम 4 का उपयोग करेंगे - यह प्रदर्शन पर जानकारी को धारणा से परे गति से अपडेट करने के लिए पर्याप्त से अधिक है।

इस तरह मैंने यह सब जोड़ा है। यह अराजकता की तरह लग सकता है, लेकिन एक व्यवस्था है। आप लाल, हरे, पीले और नारंगी तारों का चयन कर सकते हैं। लाल वाले हमेशा +5V पर जाते हैं, हरे वाले GND में जाते हैं, और पीले और नारंगी वाले Arduino से जुड़ने के लिए तार होते हैं, जो डेटा ले जाते हैं।

सबसे महत्वपूर्ण हिस्सा डिस्प्ले का फिजिकल कनेक्शन है। क्लिक करने से यह हाई रेजोल्यूशन में खुल जाता है, जहां सब कुछ साफ नजर आता है।
R1 - 200OM रोकनेवाला। डिस्प्ले की बैकलाइट से गुजरने वाले करंट को सीमित करने वाला प्रतिरोध।
R2 - 10kOM तक प्रतिरोध के साथ पोटेंशियोमीटर। हम कलम को रोल करते हैं, हम पात्रों के विपरीत का चयन करते हैं।



और स्क्रीन पर कुछ पंक्तियों को प्रदर्शित करने के लिए एक अत्यंत सरल स्केच।

एच> // हम डिस्प्ले के साथ काम करने के लिए लाइब्रेरी को कनेक्ट करते हैं। /* लिक्विड क्रिस्टल LCD(rs, enable, d4, d5, d6, d7); लिक्विड क्रिस्टल प्रकार का एक वेरिएबल बनाएं और यह निर्धारित करें कि कौन से संपर्क Arduino डिस्प्ले के साथ काम करता है। इस कमांड के बारे में अधिक जानकारी यहाँ http://arduino.cc/en/Reference/LiquidCrystalConstructor */ LiquidCrystal LCD(6, 7, 8, 9, 10, 11); शून्य सेटअप () (lcd.begin(20, 4); // प्रदर्शन विशेषताओं को परिभाषित करें (प्रति पंक्ति 20 वर्ण, 4 लाइनें) // प्रदर्शन 1602 के लिए, LCD.begin (16, 2) निर्दिष्ट करें; LCD.setCursor(1, 1); // निर्दिष्ट करें कि किस स्थिति से टेक्स्ट का आउटपुट शुरू करना है। लाइनें और अक्षर 0 से शुरू होते हैं !!! // 1 पहले से ही कैरेट को स्क्रीन की शुरुआत से एक डिवीजन ले जाएगा और टेक्स्ट को LCD.print के नीचे एक लाइन शिफ्ट कर देगा। "compblog.vlukyanov" ); // निर्दिष्ट स्थान से शुरू होने वाला टेक्स्ट प्रिंट करें। LCD.setCursor (7, 2); // तीसरी लाइन पर स्क्रीन पर 8 वें वर्ण से प्रिंट करें। LCD.print(.com") ; // प्रिंट करने के लिए टेक्स्ट। ) शून्य लूप () (// लूप में कुछ और न करें, सब कुछ पहले से ही बोर्ड इनिशियलाइज़ेशन के दौरान किया जा चुका है।)

परिणाम। यदि आप जानते हैं कि यह सब कैसे जुड़ता है और कोड कैसे लिखना है, तो सभी कामों का समय 5 मिनट है।

साथ ही, डिस्प्ले अपने आप कुछ कार्य कर सकता है, और कुछ पैरामीटर सेट करना भी संभव है।

उदाहरण के लिए:

  • स्क्रॉल टेक्स्ट;
  • ब्लिंक कर्सर की स्थिति;
  • चालू / बंद करो।

और अब बोनस!
डिस्प्ले की बैकलाइट ऊर्जा की खपत करती है, जो उदाहरण के लिए, बैटरी पावर को बचाना चाहेगी। मैंने यह विकल्प अपने लिए बनाया है - जब आप बटन दबाते हैं, तो डिस्प्ले बैकलाइट 5 सेकंड के लिए चालू हो जाती है।

एच> // हम डिस्प्ले के साथ काम करने के लिए लाइब्रेरी को कनेक्ट करते हैं। इंट बटनइंट = 0; // इंटरप्ट नंबर पर कॉल किया जाना है। इंट स्क्रीनलेड = 4; // पिन की संख्या जिससे स्क्रीन जुड़ी हुई है। +5V अस्थिर लंबा x = 5000; // लिक्विड क्रिस्टल टाइम एलसीडी (6, 7, 8, 9, 10, 11) के भंडारण के लिए चर; शून्य सेटअप () (अटैचइंटरप्ट (बटनइंट, स्क्रीनन, फॉलिंग); // इंटरप्ट सेटिंग्स LCD.begin (20, 4); पिनमोड (स्क्रीनलेड, OUTPUT); digitalWrite (स्क्रीनलेड, हाई); // डिस्प्ले को चालू करें LCD.setCursor ( 0, 0); LCD.print ("स्क्रीनऑन टेस्ट शुरू करें!"); ) // वह फ़ंक्शन जिसे बटन क्लिक करने पर निष्पादित किया जाएगा। शून्य स्क्रीनन () ( x = मिली () + 5000; // बैकलाइट बंद करने का समय याद रखें। वर्तमान चलने का समय +5 सेकंड। डिजिटलवाइट (स्क्रीनलेड, हाई); // डिस्प्ले बैकलाइट पर वोल्टेज लागू करें।) शून्य लूप () (lcd.setCursor(0, 2); // तीसरी लाइन LCD.print(x); // पर जाएं और उस समय को प्रिंट करें जब डिस्प्ले LCD.setCursor(0, 3); // पर जाएं चौथी लाइन LCD.print(मिलिस ()); // प्रिंट करेंट रनिंग टाइम if (x .)< millis()) // если время работы выключения наступило >(डिजिटलवाइट (स्क्रीनलेड, लो); // फिर डिस्प्ले बंद करें))

और परिणाम: