विषयसूची:

Arduino नैनो के लिए LCD COG: 3 चरण
Arduino नैनो के लिए LCD COG: 3 चरण

वीडियो: Arduino नैनो के लिए LCD COG: 3 चरण

वीडियो: Arduino नैनो के लिए LCD COG: 3 चरण
वीडियो: wireless LCD using Arduino | smartphone से भेजो मेसेज LCD में #shorts 2024, जुलाई
Anonim
एक Arduino नैनो के लिए LCD COG
एक Arduino नैनो के लिए LCD COG

यह निर्देशयोग्य वर्णन करता है कि एक Arduino नैनो के साथ COG LCD का उपयोग कैसे करें।

COG LCD डिस्प्ले सस्ते होते हैं लेकिन इंटरफेस के लिए थोड़े कठिन होते हैं। (COG का अर्थ "चिप ऑन ग्लास" है।) मैं जो उपयोग कर रहा हूं उसमें UC1701 ड्राइवर चिप है। इसके लिए Arduino के केवल 4 पिन की आवश्यकता होती है: SPI-घड़ी, SPI-डेटा, चिप-चयन और कमांड/डेटा।

UC1701 को SPI बस द्वारा नियंत्रित किया जाता है और 3.3V पर चलता है।

यहां मैं वर्णन करता हूं कि इसे Arduino नैनो के साथ कैसे उपयोग किया जाए। इसे Arduino Mini या Uno के साथ भी काम करना चाहिए - मैं इसे जल्द ही आज़माउंगा।

यह मेरा पहला Arduino प्रोजेक्ट है और मैंने दशकों में C नहीं लिखा है, इसलिए यदि मैं कोई स्पष्ट गलती कर रहा हूं, तो कृपया मुझे बताएं।

चरण 1: हार्डवेयर का निर्माण

हार्डवेयर का निर्माण
हार्डवेयर का निर्माण
हार्डवेयर का निर्माण
हार्डवेयर का निर्माण
हार्डवेयर का निर्माण
हार्डवेयर का निर्माण

एक COG LCD खरीदें जिसमें UC1701 चिप हो। इसे समानांतर इंटरफ़ेस के बजाय SPI बस का उपयोग करना चाहिए। इसमें लगभग 14 पिन होंगे जिन्हें नीचे सूचीबद्ध नामों के साथ लेबल किया जाएगा। (आप D0, D1, D2 … लेबल वाले बहुत अधिक पिन के साथ समानांतर इंटरफ़ेस नहीं चाहते हैं)

मैंने जो खरीदा है वह है: https://www.ebay.co.uk/itm/132138390168 या आप "12864 LCD COG" के लिए ईबे खोज सकते हैं।

1.27 मिमी की दूरी पर पिन के साथ काफी चौड़ी पूंछ वाली एक चुनें - महीन पिंस मिलाप के लिए कठिन होंगे। सुनिश्चित करें कि इसमें UC1701 चिप है। ध्यान दें कि ईबे पेज पर छठी तस्वीर में, यह "कनेक्टर: सीओजी/यूसी1701" कहता है।

डिस्प्ले पारदर्शी है और यह जानना मुश्किल है कि आगे और पीछे कौन सा है। मेरे चित्रों का ध्यानपूर्वक अध्ययन करो। ध्यान दें कि पिन 1 और 14 कहां हैं - वे पूंछ पर चिह्नित हैं।

लचीली पूंछ मिलाप के लिए काफी आसान है लेकिन इसके लिए एक एडेप्टर की आवश्यकता होती है ताकि आप इसे ब्रेडबोर्ड में प्लग कर सकें। मैंने खरीदा: https://www.ebay.co.uk/itm/132166865767 या आप "एडेप्टर एसएमडी एसएसओपी28 डीआईपी28" के लिए ईबे खोज सकते हैं।

एडेप्टर एक तरफ 28-पिन एसओपी चिप या दूसरी तरफ 28-पिन एसएसओपी चिप लेता है। एक SOP चिप में 0.05 (1.27mm) की पिन स्पेसिंग होती है जो LCD की टेल के समान होती है।

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

एडॉप्टर पर हेडर पिन का सोल्डर 14। उन्हें पूरी तरह से धक्का न दें - अगर एडेप्टर का पिछला हिस्सा सपाट है तो यह अच्छा है। इसे अपनी बेंच पर सपाट रखें ताकि पिनों को छेदों में बहुत दूर न धकेला जा सके। सुनिश्चित करें कि पिन बोर्ड के एसओपी पक्ष (यानी बड़ी चिप) पर हैं।

पूंछ के पैड एक तरह की खिड़की में होते हैं। उनके दोनों किनारों को सोल्डर से टिन करें। एडॉप्टर के पैड को टिन करें। एडॉप्टर की पूंछ को जगह पर पकड़ें फिर प्रत्येक पैड को टांका लगाने वाले लोहे से स्पर्श करें (आपको काफी महीन टिप की आवश्यकता होगी)।

तनाव से राहत के रूप में कार्य करने के लिए एडेप्टर में छेद के माध्यम से कुछ धागा बांधें। (मैंने "ट्रांसफार्मर तार" का इस्तेमाल किया)।

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

चरण 2: Arduino से जुड़ना

Arduino से जुड़ना
Arduino से जुड़ना
Arduino से जुड़ना
Arduino से जुड़ना

यह खंड बताता है कि कैसे एक Arduino नैनो से कनेक्ट किया जाए। यह मिनी या ऊनो के लिए बहुत समान होगा लेकिन मैंने अभी तक इसकी कोशिश नहीं की है।

सर्किट आरेख का अध्ययन करें।

एक Arduino Nano जो USB पोर्ट से जुड़ा है, 5V पर चलता है। एलसीडी 3.3V पर चलता है। तो आपको नैनो के 3V3 पिन से LCD को पावर देने और प्रत्येक कंट्रोल पिन पर वोल्टेज को 5V से 3.3V तक कम करने की आवश्यकता है।

LCD का पिनआउट है:

  • 1 सीएस
  • 2 आरएसटी
  • 3 सीडी
  • 4
  • 5 सीएलके
  • 6 एसडीए
  • ७ ३वी३
  • 8 0V Gnd
  • 9 वीबी0+
  • 10 वीबी0-
  • 11
  • 12
  • 13
  • 14

सीएस चिप-सेलेक्ट है। UC1701 चिप को चुनने (सक्षम) करने के लिए इसे नीचे खींचा गया है। (CS को CS0 या En या समान कहा जा सकता है।)

आरएसटी रीसेट है। चिप को रीसेट करने के लिए इसे नीचे खींचा जाता है। (आरएसटी को रीसेट कहा जा सकता है।)

सीडी कमांड/डेटा है। एसपीआई पर चिप को कमांड भेजते समय इसे कम खींचा जाता है। डेटा भेजते समय यह उच्च होता है। (सीडी को A0 कहा जा सकता है।)

CLK और SDA SPI बस पिन हैं। (एसडीए को एसपीआई-डेटा कहा जा सकता है। सीएलके एससीएल या एसपीआई-क्लॉक हो सकता है।)

VB0+ और VB0- का उपयोग UC1701 के आंतरिक चार्ज पंप द्वारा किया जाता है। चार्ज पंप एलसीडी द्वारा आवश्यक विषम वोल्टेज उत्पन्न करता है। VB0+ और VB0- के बीच एक 100n संधारित्र कनेक्ट करें। UC1701 प्रलेखन 2uF की सिफारिश करता है लेकिन मैं इस विशेष LCD के साथ कोई अंतर नहीं देख सका।

अगर आपके LCD में VB1+ और VB1- पिन हैं, तो उनके बीच एक 100n कैपेसिटर भी कनेक्ट करें। (यदि आपके LCD में VLCD पिन है, तो आप VLCD और Gnd के बीच 100n कैपेसिटर को जोड़ने का प्रयास कर सकते हैं। इससे मेरे LCD से कोई फर्क नहीं पड़ा।)

एलसीडी को नैनो से इस प्रकार कनेक्ट करें:

  • 1 सीएस = डी10 *
  • 2 आरएसटी = डी6 *
  • 3 सीडी = डी7 *
  • 5 सीएलके = डी13 *
  • 6 एसडीए = डी11 *
  • ७ ३वी३ = ३वी३
  • ८ ०वी = Gnd

("*" का अर्थ वोल्टेज को कम करने के लिए एक संभावित विभक्त का उपयोग करना है। यदि Arduino एक स्वतंत्र आपूर्ति से 3V3 पर चल रहा है, तो आपको प्रतिरोधों की आवश्यकता नहीं होगी।)

3.3V नैनो द्वारा आउटपुट है और LCD के लिए पर्याप्त करंट प्रदान कर सकता है। (डिस्प्ले लगभग 250uA खींचता है।)

5V भी नैनो द्वारा आउटपुट है और इसका उपयोग बैकलाइट को पावर देने के लिए किया जा सकता है। एक 100ohm रोकनेवाला के साथ वर्तमान को बैकलाइट तक सीमित करें।

यदि आपके पास नैनो पर पिन की कमी है, तो आप RST को 3V3 से जोड़ सकते हैं - फिर आप किसी और चीज़ के लिए D6 का उपयोग कर सकते हैं। U1701 को SPI पर एक कमांड द्वारा सॉफ्टवेयर में रीसेट किया जा सकता है। मुझे इससे कभी कोई परेशानी नहीं हुई, लेकिन अगर आप शोरगुल वाले वातावरण में अपने सर्किट का उपयोग कर रहे हैं, तो हार्डवेयर रीसेट का उपयोग करना बेहतर हो सकता है।

चरण 3: सॉफ्टवेयर

सॉफ्टवेयर
सॉफ्टवेयर

सिद्धांत रूप में, आप UC1701 को U8g2 लाइब्रेरी (या Ucglib या उपलब्ध अन्य लाइब्रेरी) से चला सकते हैं। मैंने इसे काम करने के लिए कई दिनों तक संघर्ष किया और असफल रहा। U8g2 लाइब्रेरी एक राक्षस है क्योंकि यह कई प्रकार के चिप्स चला सकती है और कोड का पालन करना बहुत कठिन है। इसलिए मैंने हार मान ली और अपनी छोटी लाइब्रेरी लिखी। यह Arduino (लगभग 3400 बाइट्स प्लस फोंट) में बहुत कम जगह लेता है।

आप यहां से मेरी लाइब्रेरी डाउनलोड कर सकते हैं (इस पेज पर डाउनलोड बटन)। एक नमूना स्केच और एक उपयोगकर्ता गाइड शामिल हैं। वेब पेज https://www.arduino.cc/en/Guide/Libraries वर्णन करता है कि पुस्तकालय कैसे आयात किया जाए; "एक.zip लाइब्रेरी आयात करना" अनुभाग पर जाएं।

LCD को इनिशियलाइज़ करें

UC1701Begin ();

UC1701Begin पिन बदलने या RST पिन को अनदेखा करने के लिए पैरामीटर ले सकता है। पुस्तकालय केवल हार्डवेयर एसपीआई का उपयोग करता है (एक सॉफ्टवेयर एसपीआई प्रदान नहीं किया जाता है)। डिस्प्ले को x और y अक्षों में फ़्लिप किया जा सकता है। यह उपयोगी है यदि आप एलसीडी को एक अलग अभिविन्यास में माउंट करना चाहते हैं।

U8g2 लाइब्रेरी से कई प्रक्रियाओं को दोहराया गया है:

  • रेखा खींचें
  • ड्रापिक्सेल
  • ड्राहलाइन
  • ड्रावीलाइन
  • ड्राबॉक्स
  • ड्राफ्रेम
  • ड्रा सर्कल
  • ड्राडिस्क
  • DrawFilledElipse
  • ड्राइलिप्स
  • ड्राट्राएंगल
  • UC1701सेटकर्सर
  • UC1701क्लियरडिस्प्ले

कुछ प्रक्रियाएं थोड़ी अलग हैं:

  • शून्य DrawChar (uint8_t c, शब्द फ़ॉन्ट);
  • शून्य ड्रॉस्ट्रिंग (चार * एस, शब्द फ़ॉन्ट);
  • शून्य DrawInt (int i, शब्द फ़ॉन्ट);

स्ट्रिंग ड्राइंग प्रक्रियाओं को एक फ़ॉन्ट की अनुक्रमणिका पारित किया जाता है। फ़ॉन्ट्स को Arduino की फ्लैश मेमोरी में घोषित किया जाता है, इसलिए वे कीमती SRAM पर कब्जा नहीं कर रहे हैं। तीन फोंट प्रदान किए जाते हैं (छोटे, मध्यम और बड़े)। वे केवल तभी जुड़े हुए हैं और फ्लैश मेमोरी पर कब्जा कर लेते हैं यदि आप उनका उपयोग करते हैं (लगभग 500 से 2000 बाइट्स प्रत्येक)।

"कलर" को U8g2 लाइब्रेरी से अलग तरीके से हैंडल किया जाता है। जब LCD को साफ किया जाता है तो उसकी पृष्ठभूमि गहरे रंग की होती है। यदि MakeMark (एक वैश्विक चर) सत्य है, तो चित्र सफेद रंग में किया जाता है। यदि मेकमार्क गलत है, तो ड्राइंग अंधेरे में की जाती है।

कुछ प्रक्रियाएं UC1701 के लिए अद्वितीय हैं:

SetInverted सफेद-पर-काले के बजाय काले-पर-सफेद में आकर्षित करता है।

शून्य सेटइनवर्टेड (बूल आमंत्रण);

UC1701 की चमक और कंट्रास्ट इसके द्वारा निर्धारित किए जाते हैं:

  • शून्य सेटकॉन्ट्रास्ट (uint8_t मान); // सुझाया गया है 14
  • शून्य सेटरेसिस्टर (uint8_t मान); // सुझाया गया है 7

वे एक साथ असंतोषजनक तरीके से काम करते हैं।

एलसीडी के नीचे सेट सक्षम शक्तियां:

शून्य सेट सक्षम (बूल एन);

सोते समय डिस्प्ले 4uA लेता है। आपको बैकलाइट भी बंद कर देनी चाहिए - इसे नैनो के पिन से चलाएं। पुन: सक्षम करने के बाद, UC1701 को रीसेट कर दिया जाएगा; डिस्प्ले साफ़ हो गया है और कंट्रास्ट और रेसिस्टर को उनके डिफ़ॉल्ट मानों पर रीसेट कर दिया जाएगा।

तो, निष्कर्ष में, COG डिस्प्ले सस्ते और एक अच्छे आकार के हैं। वे एक Arduino से जुड़ना आसान हैं।

सिफारिश की: