विषयसूची:

कस्टम कैरेक्टर जेनरेटर (एडफ्रूट HT16k33 मैट्रिक्स): 3 चरण
कस्टम कैरेक्टर जेनरेटर (एडफ्रूट HT16k33 मैट्रिक्स): 3 चरण

वीडियो: कस्टम कैरेक्टर जेनरेटर (एडफ्रूट HT16k33 मैट्रिक्स): 3 चरण

वीडियो: कस्टम कैरेक्टर जेनरेटर (एडफ्रूट HT16k33 मैट्रिक्स): 3 चरण
वीडियो: Ladyada interview with Paul Horowitz - The Art of Electronics @adafruit @electronicsbook 2024, जुलाई
Anonim
कस्टम कैरेक्टर जेनरेटर (एडफ्रूट HT16k33 मैट्रिक्स)
कस्टम कैरेक्टर जेनरेटर (एडफ्रूट HT16k33 मैट्रिक्स)

एलसीडी और एलईडी मैट्रिसेस पर स्पेशल कैरेक्टर प्रिंट करना बहुत मजेदार है। विशेष वर्ण या कस्टम वर्ण मुद्रित करने की प्रक्रिया प्रत्येक पंक्ति और स्तंभ के लिए बाइनरी मानों के साथ एक सरणी उत्पन्न करना है। किसी भी कस्टम कैरेक्टर के लिए सही कोड ढूंढना मुश्किल हो सकता है, इसलिए, यह प्रोजेक्ट 8x8 एलईडी मैट्रिक्स के लिए कोड को स्वचालित और जेनरेट करेगा और कस्टम कैरेक्टर को एडफ्रूट HT16k33 8x8 बाइकलर मैट्रिक्स पर भी प्रिंट करेगा।

Adafruit HT16k33, एक 1.2 '' 8x8 बाइकलर एलईडी मैट्रिक्स एक I2C संचार प्रोटोकॉल के माध्यम से Arduino के साथ संचार करता है।

एडफ्रूट के अनुसार, "एलईडी बैकपैक का यह संस्करण 1.2" 8x8 मैट्रिक्स के लिए डिज़ाइन किया गया है। वे केवल 1.2 "x1.2" मापते हैं, इसलिए इसे नियंत्रित करने के लिए चिप्स की एक विशाल सरणी का उपयोग करना शर्म की बात है। यह बैकपैक 16 पिन या चिप्स के एक गुच्छा का उपयोग करने की झुंझलाहट को हल करता है I2C निरंतर-वर्तमान मैट्रिक्स नियंत्रक पीसीबी के पीछे बड़े करीने से बैठता है। कंट्रोलर चिप हर चीज का ख्याल रखता है, बैकग्राउंड में सभी 64 LED को ड्रॉ करता है। आपको केवल 2-पिन I2C इंटरफ़ेस का उपयोग करके इसमें डेटा लिखना है। दो एड्रेस सिलेक्ट पिन हैं ताकि आप इनमें से 8 पतों को एक 2-पिन I2C बस (साथ ही जो भी अन्य I2C चिप्स या सेंसर आपको पसंद हो) पर नियंत्रित करने के लिए 8 पतों में से एक का चयन कर सकें। ड्राइवर चिप 1/16वें चरण में पूरे डिस्प्ले को 1/16 ब्राइटनेस से लेकर फुल ब्राइटनेस तक 'डिम' कर सकता है। यह अलग-अलग एल ई डी को मंद नहीं कर सकता, केवल एक बार में संपूर्ण डिस्प्ले।"

इस निर्देश में, मैं आपको समझाऊंगा कि वास्तविक समय में किसी भी कस्टम चरित्र के लिए कोड कैसे प्राप्त करें और उस चरित्र को एलईडी मैट्रिक्स पर प्रिंट करें।

चरण 1: अवयव

यह निर्देशयोग्य Adafruit HT16k33 मैट्रिक्स पर एक बुनियादी परियोजना है। आप की जरूरत है:

  1. एडफ्रूट HT16k33 1.2 ''x 1.2'' 8x8 बाइकलर एलईडी मैट्रिक्स।
  2. Arduino (कोई भी संस्करण लेकिन Uno को प्राथमिकता दी जाती है)।
  3. ब्रेड बोर्ड
  4. बिजली की आपूर्ति

चरण 2: योजनाबद्ध

ढांच के रूप में
ढांच के रूप में
ढांच के रूप में
ढांच के रूप में

Adafruit HT16k33 LED मैट्रिक्स को वायरिंग करना बहुत आसान है क्योंकि हमें घड़ी और डेटा पिन को कनेक्ट करने की आवश्यकता होती है जैसा कि हम आमतौर पर I2C उपकरणों के लिए करते हैं। कनेक्शन इस प्रकार होंगे:

  1. SCL (मैट्रिक्स का क्लॉक पिन) A5 से जुड़ा है (Arduino Uno का क्लॉक पिन। Arduino के अन्य वेरिएंट के लिए डेटाशीट देखें)
  2. एसडीए (मैट्रिक्स का डाटा पिन) ए4 से जुड़ा है। (Arduino के अन्य वेरिएंट के लिए डेटाशीट देखें)
  3. VCC 5V से जुड़ा है।
  4. GND 0V से जुड़ा है।

आप चित्र में दिखाए गए योजनाबद्ध से भी परामर्श कर सकते हैं।

चरण 3: कोड

कोड
कोड
कोड
कोड

Arduino कोड

सबसे पहले, हम सभी आवश्यक पुस्तकालयों को शामिल करेंगे।

  1. Wire.h:- I2C संचार के लिए
  2. Adafruit_LedBackpack
  3. एडफ्रूट_जीएफएक्स

ये सभी लाइब्रेरी Arduino IDE में ही उपलब्ध हैं। आपको बस उन्हें लाइब्रेरी मैनेजर से इंस्टॉल करना होगा। स्केच >> पुस्तकालय शामिल करें >> पुस्तकालय प्रबंधित करें

सेटअप फ़ंक्शन ()

एक अहस्ताक्षरित पूर्णांक 8-बिट सरणी को 8 पंक्तियों के लिए 8 बिट्स (8 कॉलम) के लिए 8 बाइनरी मानों में सेट करना। I2C संचार के लिए पता सेट करें।

लूप फ़ंक्शन ()

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

सीरियल स्ट्रिंग पढ़ना:

अगर (सीरियल.उपलब्ध ()> 0) {डेटा = सीरियल.readStringUntil ('\ n'); Serial.println (डेटा); }

पाठ पढ़ने के बाद, हमें इस स्ट्रिंग को डीकोड करना होगा और बाइनरी मानों को वापस प्राप्त करना होगा। जैसा कि हम जानते हैं, इनपुट स्ट्रिंग का प्रारूप हमेशा समान रहेगा। हम सबस्ट्रिंग को खोजने के लिए इसे कोड कर सकते हैं और स्ट्रिंग्स को उनके दशमलव समकक्ष मानों में बदल सकते हैं। फिर हम मैट्रिक्स पर चरित्र को प्रिंट करने के लिए उत्पन्न दशमलव सरणी (uint8_t) को पास करेंगे।

8 बिट की स्ट्रिंग को दशमलव में बदलना:

इंट वैल (स्ट्रिंग स्ट्र) {इंट वी = 0; के लिए (int i=0;i<8;i++) { अगर (str=='1') {v=v+power(2, (7-i)); } } वापसी वी; }

पावर फ़ंक्शन (पाउ ()) का उपयोग करके दशमलव समकक्ष का मूल्यांकन करने के लिए, आपको दोहरे प्रकार के मानों से निपटने की आवश्यकता है और इसलिए हम अपना स्वयं का पावर फ़ंक्शन इस प्रकार लिख सकते हैं:

इंट पावर (इंट बेस, इंट एक्सपोनेंट) {इंट सी = 1; के लिए (int i=0;i {c=c*base; } वापसी c; }

अब, अंत में, हम 8 दशमलव मानों (प्रत्येक पंक्ति के लिए एक) के उत्पन्न सरणी का उपयोग करके वर्ण को मुद्रित करने के लिए कोड लिखेंगे।

शून्य प्रिंट_इमोजी (uint8_t इमोजी , स्ट्रिंग रंग) {मैट्रिक्स। क्लियर (); अगर (रंग=="लाल") {मैट्रिक्स.ड्राबिटमैप(0, 0, इमोजी, 8, 8, LED_RED); } और {मैट्रिक्स.ड्राबिटमैप(0, 0, इमोजी, 8, 8, LED_GREEN); } मैट्रिक्स.राइटडिस्प्ले (); देरी (500); }

आप इस कोड को आसानी से समझ सकते हैं क्योंकि हम पहले मैट्रिक्स को साफ़ कर रहे हैं और फिर मैट्रिक्स.ड्राबिटमैप () फ़ंक्शन का उपयोग करके इमोजी सरणी का उपयोग करके वर्ण प्रदर्शित कर रहे हैं। सभी स्वरूपण के बाद "matrix.writeDisplay ()" लिखना न भूलें क्योंकि यह फ़ंक्शन केवल मैट्रिक्स पर अब तक किए गए सभी स्वरूपण प्रदर्शित करेगा।

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

B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100

सीरियल मॉनिटर में यह स्ट्रिंग और मैट्रिक्स पर चरित्र देख सकता है।

अब, जब हम "प्रिंट" बटन दबाते हैं, तो हमें सॉफ़्टवेयर से सीरियल डेटा स्वचालित रूप से भेजने की आवश्यकता होती है। इसे स्वचालित करने के लिए, हम एक डेमो 8x8 मैट्रिक्स बनाएंगे और हम उपयोगकर्ता को यह चुनने की सुविधा प्रदान करेंगे कि कौन से सेल रंगीन होने चाहिए और फिर सॉफ्टवेयर स्वचालित रूप से कोड उत्पन्न करेगा और डेटा को क्रमिक रूप से स्ट्रिंग प्रारूप में Arduino को भेज देगा। मैंने अपने बाकी काम के लिए प्रोसेसिंग को चुना। प्रसंस्करण में, हम 64 बटन (दबाए गए फ़ंक्शन के साथ आयत) का उपयोग करके एक मैट्रिक्स बना सकते हैं और शुरुआत में एक विशेष मान और रंग निर्दिष्ट कर सकते हैं (इसे मान 0 के साथ सफेद रंग होने दें)। अब जब भी बटन दबाया जाएगा, हम बटन के रंग को काले रंग में बदल देंगे और मान को 1 पर सेट कर देंगे। यदि उपयोगकर्ता उसी बटन को फिर से दबाता है, तो उसका मान फिर से 0 में बदल जाएगा और रंग वापस सफेद हो जाएगा। यह उपयोगकर्ता को बार-बार आसानी से कोड बदलने में मदद करेगा और पूरे मैट्रिक्स को फिर से मिटाए बिना आसानी से संशोधन कर सकता है। "प्रिंट" बटन पर क्लिक करने पर, हम डेमो के लिए ऊपर दिखाए गए स्ट्रिंग के समान एक स्ट्रिंग बनाएंगे। फिर स्ट्रिंग को विशेष सीरियल पोर्ट पर भेजा जाएगा।

आप नीचे से प्रोसेसिंग कोड डाउनलोड कर सकते हैं। प्रसंस्करण में यह मेरा पहला कोड है। कोडिंग के उन्नत तरीके के सुझावों की अत्यधिक सराहना की जाती है।

आप देख सकते हैं कि जीयूआई कैसा दिखता है और सिस्टम का उपयोग करके चरित्र कैसे बनाया जाता है। मैट्रिक्स पर समान चरित्र बनाने में मुश्किल से कुछ सेकंड लगेंगे।

आप इस प्रोजेक्ट का कोड और इमेज मेरे GitHub रिपॉजिटरी से डाउनलोड कर सकते हैं।

सिफारिश की: