विषयसूची:

OLED I2C डिस्प्ले Arduino/NodeMCU ट्यूटोरियल: 15 कदम
OLED I2C डिस्प्ले Arduino/NodeMCU ट्यूटोरियल: 15 कदम

वीडियो: OLED I2C डिस्प्ले Arduino/NodeMCU ट्यूटोरियल: 15 कदम

वीडियो: OLED I2C डिस्प्ले Arduino/NodeMCU ट्यूटोरियल: 15 कदम
वीडियो: OLED with Arduino | OLED with NodeMCU | OLED Display Tutorial with Arduino and NodeMCU 2024, जुलाई
Anonim
Image
Image

जब आप सीखना शुरू करते हैं तो सबसे पहला प्रोग्राम आप लिखते हैं a

नई प्रोग्रामिंग भाषा है: "हैलो वर्ल्ड!"।

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

तो, हम अपने Arduino को "हैलो वर्ल्ड!" प्रदर्शित करने के लिए कैसे प्राप्त करते हैं?

इस वीडियो में, मैं आपको दिखाऊंगा कि छोटे 0.91 (128x32) और 0.96 (128x64) I2C OLED डिस्प्ले के साथ शुरुआत कैसे करें।

वेब पर 100 ट्यूटोरियल हैं जो एक ही चीज़ को अलग-अलग तरीकों से समझाते हैं, लेकिन मुझे ऐसा कोई नहीं मिला जो मुझे OLED डिस्प्ले और विभिन्न परिदृश्यों में इसका उपयोग करने के बारे में बताता हो। यह सब काम करने में मुझे कुछ समय लगा। इसलिए, मैंने सोचा कि मैंने जो सीखा है उस पर मुझे एक ट्यूटोरियल बनाना चाहिए और हमारी परियोजनाओं में OLED डिस्प्ले का उपयोग करने के लिए सभी सुविधाओं और तरीकों को संयोजित करना चाहिए।

चरण 1: चीजें जो हम आज सीखने जा रहे हैं

हार्डवेयर आवश्यकता
हार्डवेयर आवश्यकता

इस वीडियो में हम बात करेंगे:

- OLED डिस्प्ले क्या है?

- फिर हम 0.91 (128x32) और 0.96 (128x64) I2C OLED डिस्प्ले को करीब से देखेंगे।

- आगे हम आपके Arduino IDE में Adafruit लाइब्रेरी स्थापित करने के बारे में बात करेंगे

- फिर हम NodeMCU और Arduino को OLED डिस्प्ले से जोड़ेंगे

- आगे हम कोड पर एक नज़र डालेंगे और उस पर कुछ ग्राफिक्स और टेक्स्ट प्रदर्शित करेंगे

- हम कस्टम फ़ॉन्ट्स को लागू करने और छवियों को प्रदर्शित करने के बारे में भी बात करेंगे

- फिर हम I2C मल्टीप्लेक्सर का उपयोग करके कई OLEDs को एक माइक्रो-कंट्रोलर से जोड़ेंगे

- अंत में, हम उन कुछ सामान्य त्रुटियों के बारे में बात करेंगे जो लोग OLED डिस्प्ले का उपयोग करते समय करते हैं

चरण 2: हार्डवेयर आवश्यकता

इस ट्यूटोरियल के लिए हमें चाहिए:

- एक ब्रेडबोर्ड

- एक 0.91" (128x32) और 0.96" (128x64) I2C OLED डिस्प्ले

- Arduino UNO/NANO (जो भी आसान हो)

- नोडएमसीयू

- TCA9548A I2C मल्टीप्लेक्सर

- कुछ कनेक्टिंग केबल्स

- और कोड अपलोड करने के लिए एक यूएसबी केबल

चरण 3: OLED डिस्प्ले क्या है?

OLED डिस्प्ले क्या है?
OLED डिस्प्ले क्या है?
OLED डिस्प्ले क्या है?
OLED डिस्प्ले क्या है?

OLED या ऑर्गेनिक प्रकाश उत्सर्जक डायोड एक प्रकाश उत्सर्जक है

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

ओएलईडी का उपयोग टेलीविजन स्क्रीन, कंप्यूटर मॉनिटर, पोर्टेबल सिस्टम जैसे मोबाइल फोन, हैंड-हेल्ड गेम कंसोल और पीडीए जैसे उपकरणों में डिजिटल डिस्प्ले बनाने के लिए किया जाता है। एक OLED डिस्प्ले बिना बैकलाइट के काम करता है क्योंकि यह दृश्य प्रकाश का उत्सर्जन करता है।

चरण 4:

छवि
छवि

कई प्रकार के OLED डिस्प्ले उपलब्ध हैं

उनके आधार पर बाजार

- आकार

- रंग

- ब्रांड

- शिष्टाचार

- एसपीआई (सीरियल पेरिफेरल इंटरफेस) या I2C

- पैसिव-मैट्रिक्स (PMOLED) या एक्टिव-मैट्रिक्स (AMOLED) कंट्रोल स्कीम

इस ट्यूटोरियल में, मैं कनेक्ट करने के बारे में बात करने जा रहा हूँ

नीला रंग 0.91 (128x32 OLED) और 0.96 (128x64 OLED) I2C OLDE एक Arduino NANO और NodeMCU को प्रदर्शित करता है। I2C बस तकनीक MCU के केवल 2 पिन का उपयोग करती है इसलिए हमारे पास अन्य सेंसर के लिए ढेर उपलब्ध हैं।

चरण 5: करीब से देखें

करीब से देखो
करीब से देखो
करीब से देखो
करीब से देखो
करीब से देखो
करीब से देखो

आइए इन दोनों डिस्प्ले के बारे में करीब से जानें।

इन डिस्प्ले के पीछे एसएमडी कैपेसिटर और प्रतिरोधों के ढेर ऑन-बोर्ड हैं; लेकिन, चूंकि यह एक I2C डिवाइस है, इसलिए हम केवल इन 2 पिनों (SCL और SDA) की परवाह करते हैं।

डिस्प्ले केवल चार तारों का उपयोग करके Arduino से जुड़ता है - दो बिजली के लिए (VCC और GND) और दो डेटा के लिए (सीरियल घड़ी SCL और

सीरियल डेटा एसडीए), वायरिंग को बहुत सरल बनाता है। डेटा कनेक्शन I2C (I²C, IIC या इंटर-इंटीग्रेटेड सर्किट) है और इस इंटरफ़ेस को TWI (टू वायर इंटरफ़ेस) भी कहा जाता है।

- ऑन-बोर्ड पिन अलग-अलग क्रम में हो सकते हैं, इसलिए इसे अपने प्रोजेक्ट से जोड़ने से पहले हमेशा ट्रिपल चेक करें।

- ऑपरेशन वोल्टेज 3v से 5v के बीच है लेकिन, निर्माता के डेटाशीट से मार्गदर्शन का उपयोग करना सबसे अच्छा है।

- कभी-कभी हमें अपनी परियोजनाओं में 2 डिस्प्ले का उपयोग करने की आवश्यकता होती है। तो, हम इसे कैसे हासिल कर सकते हैं?

चाल यह है कि आपके प्रदर्शन पर एक विन्यास योग्य पता हो। इस इकाई का 0x78 और 0x7A के बीच एक विन्यास योग्य पता है। बस एक तरफ से 0Ohm रेसिस्टर को अनसोल्ड करके और दूसरी तरफ से हुक करके या सिर्फ एक ग्लोबल सोल्डर लगाकर हम एड्रेस बदल सकते हैं। हम इसके बारे में गहराई से बात करेंगे जब हम इस ट्यूटोरियल के बाद के भाग में एक Arduino के लिए कई डिस्प्ले को हुक करेंगे।

तस्वीर में ये डिस्प्ले बहुत बड़े दिखते हैं। लेकिन, व्यावहारिक रूप से बोलते हुए वे छोटे हैं। वे 128 x 32/64 व्यक्तिगत OLED पिक्सेल से बने हैं और उन्हें किसी बैक-लाइट की आवश्यकता नहीं है। जरा इस पर एक नजर डालें और देखें कि यह कितना छोटा है। हालांकि वे छोटे हैं, वे किसी भी इलेक्ट्रॉनिक प्रोजेक्ट में बहुत उपयोगी हो सकते हैं।

चरण 6: पुस्तकालय

पुस्तकालय
पुस्तकालय
पुस्तकालय
पुस्तकालय
पुस्तकालय
पुस्तकालय

इन्हें नियंत्रित करने के लिए कई पुस्तकालय उपलब्ध हैं

प्रदर्शित करता है। अतीत में मैंने "u8glib पुस्तकालय" का उपयोग किया है, लेकिन मुझे लगता है कि AdaFruit पुस्तकालय हमारी परियोजनाओं में समझने और उपयोग करने में बहुत आसान है। इसलिए, मैं इस ट्यूटोरियल में AdaFruit लाइब्रेरी का उपयोग करने जा रहा हूँ।

OLED डिस्प्ले को नियंत्रित करने के लिए आपको "adafruit_GFX.h" लाइब्रेरी और "adafruit_SSD1306.h" लाइब्रेरी की आवश्यकता होगी।

अपने Arduino IDE में लाइब्रेरी को डाउनलोड और इंस्टॉल करने के दो तरीके हैं।

विधि १

"लाइब्रेरी मैनेजर" पर जाएं और "adafruit_SSD1306" और "adafruit_gfx" खोजें

नवीनतम संस्करण का चयन करें और इंस्टॉल बटन दबाएं।

एक बार स्थापित होने के बाद आप इन पुस्तकालयों को अपने प्रोग्राम में उपयोग कर सकते हैं।

विधि 2

इन दो पुस्तकालयों को जीथब से भी डाउनलोड किया जा सकता है (आपको दोनों की आवश्यकता है):

मैं नीचे दिए गए विवरण में लिंक प्रदान करूंगा।

प्रदर्शन पुस्तकालय:

GFX लाइब्रेरी:

एक बार डाउनलोड हो जाने के बाद, डाउनलोड की गई ज़िप फ़ाइल से Adafruit_SSD1306-मास्टर फ़ोल्डर को Arduino लाइब्रेरी फ़ोल्डर में कॉपी करें। यह फ़ोल्डर आमतौर पर विंडोज़ सिस्टम पर दस्तावेज़> Arduino> पुस्तकालयों में पाया जाता है। लिनक्स पर यह आमतौर पर होम फोल्डर> Arduino> लाइब्रेरी में पाया जाता है। अंत में Arduino लाइब्रेरी फ़ोल्डर में, Adafruit_SSD1306-मास्टर फ़ोल्डर का नाम बदलकर Adafruit_SSD1306 कर दें। भले ही आप नाम न बदलें यह ठीक है।

चरण 7:

छवि
छवि

अब, "Adafruit_SSD1306.h" पर एक नजर डालते हैं

फ़ाइल

इस पुस्तकालय में हमें दो बातें जानने की जरूरत है:

1. यदि आप छोटे डिस्प्ले का उपयोग करना चाहते हैं तो डिफ़ॉल्ट 128_32 का उपयोग करें अन्यथा बड़े डिस्प्ले के लिए 128_32 पर टिप्पणी करें और 128_64 को अनकम्मेंट करें

2. यदि आपने बोर्ड पर 0x7A पता मिलाप किया है (जिसके बारे में हम बाद में बात करेंगे) तो बड़े डिस्प्ले के लिए 7 बिट 0x3D पते का उपयोग करें, अन्यथा डिफ़ॉल्ट 0x3C पते का उपयोग करें। छोटे डिस्प्ले के लिए पता 0x3C है।

चरण 8: 128 X 64/32 OLEDs को तार करना

वायरिंग 128 X 64/32 OLEDs
वायरिंग 128 X 64/32 OLEDs

आइए NodeMCU को डिस्प्ले से कनेक्ट करके शुरू करें।

ध्यान देने वाली पहली और सबसे महत्वपूर्ण बात यह है कि कुछ डिस्प्ले में GND और VCC पावर पिन की अदला-बदली हो सकती है। यह सुनिश्चित करने के लिए अपने प्रदर्शन की जाँच करें कि यह छवि के समान है। यदि पिनों की अदला-बदली की जाती है, तो सुनिश्चित करें कि कनेक्शन को Arduino या NodeMCU से बदलें।

- NodeMCU OLED वायरिंग

OLED VCC - NodeMCU 3.3V

OLED GND - NodeMCU GND

OLED SCL - NodeMCU D1

OLED SDA - NodeMCU D2

- Arduino Uno OLED वायरिंग

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino Uno A5

OLED SDA - Arduino Uno A4

- अरुडिनो मेगा 2560 OLED वायरिंग

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino MEGA 2560 पिन 21

OLED SDA - Arduino MEGA 2560 पिन 20

चरण 9: कोड

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

Adafruit पुस्तकालय दोनों के लिए वास्तव में अच्छे उदाहरणों के साथ आता है

128x32 और 128x64 डिस्प्ले।

लाइब्रेरी फ़ाइल> उदाहरण> Adafruit SSD1306> और फिर Arduino IDE में प्रदर्शन प्रकार के अंतर्गत स्थित है।

हम 128x32 I2C उदाहरण का उपयोग करने जा रहे हैं और इसे 128x64 और 128x32 दोनों डिस्प्ले के साथ काम करने के लिए संशोधित करेंगे, इसे एक Arduino और फिर एक NodeMCU बोर्ड से जोड़कर।

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

- सबसे पहले हम 128x32 डिस्प्ले से जुड़े Arduino नैनो में कोड लोड करने जा रहे हैं।

हम बिना किसी संशोधन के कोड का उपयोग कर सकते हैं।

128x32 0x3C पते का उपयोग करता है, इसलिए यह बिट यहां सब अच्छा दिखता है, हेडर लाइब्रेरी को दोबारा जांचने देता है, हां यह 0x3C पते का भी उपयोग कर रहा है और डिस्प्ले प्रकार 128x32 है।

- अब 128x64 डिस्प्ले को कनेक्ट करते हैं। जैसा कि हम जानते हैं कि यह डिफ़ॉल्ट रूप से 0x3C पते का उपयोग करता है, इसलिए हमें कोड या लाइब्रेरी में पते को अपडेट करने की आवश्यकता नहीं है।

हमें केवल 128_32 पर टिप्पणी करने और हेडर लाइब्रेरी में 128_64 को अनकम्मेंट करने और हमारे कोड में LCDHEIGHT को 64 में बदलने की आवश्यकता है।

- अब एक ही कोड को NodeMCU पर चलाने के लिए हमें अपने कोड में एक और लाइन बदलने की जरूरत है।

"#define OLED_RESET 4"> "#define OLED_RESET LED_BUILTIN" बाकी कोड Arduino के समान है

कुछ भी प्रदर्शित करने के लिए बहुत कुछ हमें पहले पिछली स्क्रीन का उपयोग करके साफ़ करना होगा

डिस्प्ले.क्लियरडिस्प्ले (); // बफर साफ़ करें

फिर ऑब्जेक्ट ड्रा करें

टेस्टड्रालाइन (); // एक रेखा खींचो

इसे हार्डवेयर पर दिखाएं

डिस्प्ले.डिस्प्ले (); // उन्हें डिस्प्ले हार्डवेयर पर दृश्यमान बनाएं!

अगला आइटम प्रदर्शित करने से पहले कुछ समय प्रतीक्षा करें।

देरी (2000); // 2 सेकंड के लिए प्रतीक्षा करें

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

चरण 10: टेक्स्ट को कस्टमाइज़ करना और इमेज जोड़ना

टेक्स्ट को कस्टमाइज़ करना और इमेज जोड़ना
टेक्स्ट को कस्टमाइज़ करना और इमेज जोड़ना
टेक्स्ट को कस्टमाइज़ करना और इमेज जोड़ना
टेक्स्ट को कस्टमाइज़ करना और इमेज जोड़ना
टेक्स्ट को कस्टमाइज़ करना और इमेज जोड़ना
टेक्स्ट को कस्टमाइज़ करना और इमेज जोड़ना

कभी-कभी आपके कोड को कस्टम फ़ॉन्ट प्रदर्शित करने की आवश्यकता होती है और

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

हालांकि, मैं इन मैपिंग को करने में बहुत अच्छा नहीं हूं और बिट मैप टेबल बनाने में घंटों खर्च नहीं करना चाहता।

तो मेरे विकल्प क्या है? मैं आम तौर पर कस्टम फोंट और छवियों को उत्पन्न करने के लिए दो वेबसाइटों का उपयोग करता हूं। लिंक नीचे डिस्क्रिप्शन में दिए गए हैं।

कस्टम फोंट

फ़ॉन्ट कनवर्टर वेबसाइट पर जाएं, फ़ॉन्ट परिवार, शैली, आकार, लाइब्रेरी संस्करण को "एडफ्रूट जीएफएक्स फ़ॉन्ट" के रूप में चुनें और फिर "बनाएं" बटन दबाएं। इस पृष्ठ के दाईं ओर आप देख सकते हैं कि वास्तविक प्रदर्शन पर आपका फ़ॉन्ट कैसा दिखने वाला है।

आपके चयन के आधार पर वेबपेज फोंट हेडर फाइल तैयार करता है। जिस फोल्डर में आपका कोड है उसी फोल्डर में "modified_font.h" नाम की एक फाइल बनाएं और उसमें जेनरेट कोड को कॉपी और सेव करें। फिर आपको कस्टम फ़ॉन्ट का उपयोग करने के लिए अपने कोड में हेडर फ़ाइल को शामिल करना होगा।

#शामिल "modified_font.h"

फिर, आपको कस्टम फ़ॉन्ट लागू करने के लिए टेक्स्ट प्रदर्शित करने से पहले बस फ़ॉन्ट सेट करना होगा।

display.setFont(&Your_Fonts_Name);

आप अपने प्रोजेक्ट में अभी-अभी जोड़ी गई हेडर फ़ाइल से फ़ॉन्ट का नाम प्राप्त कर सकते हैं। यही है, आसान।

कस्टम फोंट का उपयोग करते समय मेमोरी हमेशा एक चिंता का विषय होती है, इसलिए हमेशा उन बाइट्स पर विचार करें जो मेमोरी द्वारा खपत की जाएगी। बस याद रखें कि Arduino UNO में केवल 32K मेमोरी है।

कस्टम छवियां

अपनी स्क्रीन पर बिटमैप छवि प्रदर्शित करने के लिए आपको सबसे पहले 128 x 64/32 आकार की छवि बनानी होगी।

मैं 128 x 64 बिटमैप छवि बनाने के लिए अच्छे पुराने "एमएस पेंट" का उपयोग कर रहा हूं जिसे मैं इस छवि कनवर्टर वेबसाइट पर अपलोड करूंगा। वेबसाइट छवियों को बाइट-स्ट्रिंग्स में परिवर्तित करती है, जिसका उपयोग Arduino और OLED डिस्प्ले के साथ किया जा सकता है।

छवि को वेबसाइट पर अपलोड करके प्रारंभ करें। फिर "इनवर्ट इमेज कलर्स" चेक-बॉक्स पर एक चेक लगाएं और "आउटपुट कोड फॉर्मेट" को "अरुडिनो कोड" में बदलें, इसके बाद ओरिएंटेशन चुनें और बाइट एरे को जेनरेट करने के लिए "जेनरेट कोड" बटन दबाएं। "पूर्वावलोकन" अनुभाग आपको दिखाता है कि वास्तविक प्रदर्शन पर आपकी छवि कैसी दिखेगी।

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

चरण 11: 2 डिस्प्ले कनेक्ट करना

2 डिस्प्ले कनेक्ट करना
2 डिस्प्ले कनेक्ट करना
2 डिस्प्ले कनेक्ट करना
2 डिस्प्ले कनेक्ट करना

दो 128 x 64 डिस्प्ले को अपने प्रोजेक्ट से कनेक्ट करना आसान है।

आपको बस 0x78 पते से 0Ohm रोकनेवाला को अनसोल्ड करना होगा और इसे 0x7A पर रखना होगा और फिर डिफ़ॉल्ट 0x3C के बजाय अपने कोड में 0x3D पते का उपयोग करना होगा।

आप सोच रहे होंगे कि हम 0x3C और 0x3D पते का उपयोग क्यों कर रहे हैं न कि वास्तविक 0x78 और 0x7A का। Arduino 7-बिट पते को स्वीकार करता है न कि 8-बिट हार्डवेयर पते को। इसलिए, हमें पहले 8-बिट पते को बाइनरी में बदलना होगा, और फिर 7 बिट्स प्राप्त करने के लिए कम से कम महत्वपूर्ण बिट को काटना होगा। फिर अपने कोड में दर्ज किए गए 0x3C या 0x3D पते प्राप्त करने के लिए 7 बिट्स को HEX में बदलें।

सबसे पहले, डिस्प्ले को एक यूनिक नाम देकर इनिशियलाइज़ करें:

Adafruit_SSD1306 डिस्प्ले1 (OLED_REST);

Adafruit_SSD1306 डिस्प्ले2(OLED_REST);

फिर अपने कोड में डिवाइस के पते के साथ स्टार्ट स्टेटमेंट को कॉल करने के लिए डिस्प्ले 1 और डिस्प्ले 2 का उपयोग करें:

display1.begin (SSD1306_SWITCHCAPVCC, 0x3C); // 1 सेशन पता 0x3C प्रदर्शित करें

display2.begin (SSD1306_SWITCHCAPVCC, 0x3D); // 2 सेशन एड्रेस 0x3D प्रदर्शित करें

बस, अब आप आगे बढ़ सकते हैं और अपने बाकी कोड में डिस्प्ले 1 या डिस्प्ले 2 का उपयोग करके जो चाहें कर सकते हैं। मैंने इस ट्यूटोरियल के साथ एक उदाहरण प्रदान किया है।

वायरिंग बिल्कुल वैसी ही है जैसी हमने पहले की है, आपको बस Arduino या NodeMCU के समान I2C पिन में एक और डिस्प्ले जोड़ने की आवश्यकता है। पतों के आधार पर, MCU तब I2C डेटा लाइन पर डेटा भेजता है।

चरण 12: 2 से अधिक डिस्प्ले कनेक्ट करना

2 से अधिक डिस्प्ले कनेक्ट करना
2 से अधिक डिस्प्ले कनेक्ट करना
2 से अधिक डिस्प्ले कनेक्ट करना
2 से अधिक डिस्प्ले कनेक्ट करना
2 से अधिक डिस्प्ले कनेक्ट करना
2 से अधिक डिस्प्ले कनेक्ट करना

अब, यदि आप 2 से अधिक डिस्प्ले को हुक करना चाहते हैं तो क्या होगा?

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

तो, हम एक Arduino में 2 से अधिक I2C डिस्प्ले कैसे संलग्न कर सकते हैं? चाल एक TCA9548 बहुसंकेतक का उपयोग करने के लिए है।

TCA9548 एकल माइक्रो-नियंत्रक को प्रत्येक सेंसर स्लेव सब-बस को एक अद्वितीय चैनल निर्दिष्ट करके समान या भिन्न I2C पते के साथ '64 सेंसर' तक संचार करने की अनुमति देता है।

जब हम कई उपकरणों पर 2 तारों से अधिक डेटा भेजने की बात करते हैं तो हमें उन्हें संबोधित करने के तरीके की आवश्यकता होती है। यह उसी तरह है जैसे डाकिया एक ही सड़क पर आकर डाक के पैकेट अलग-अलग घरों में छोड़ देता है क्योंकि उन पर अलग-अलग पते लिखे होते हैं।

मल्टीप्लेक्सर माइक्रो-कंट्रोलर की 3V3, GND, SDA और SCL लाइनों से जुड़ता है। स्लेव सेंसर बोर्ड पर आठ SCL/SDA स्लेव पोर्ट्स में से एक से जुड़े हैं। चैनल का चयन TCA9548A का I2C पता (0x70 {डिफ़ॉल्ट} - 0x77) और उसके बाद चैनल नंबर (0b00000001 - 0b10000000) भेजकर किया जाता है। आप एक ही I2C संबोधित भागों के 64 को नियंत्रित करने के लिए 0x70-0x77 पतों पर एक साथ जुड़े इन मल्टीप्लेक्सरों में से अधिकतम 8 हो सकते हैं। तीन एड्रेस बिट्स A0, A1 और A2 को VIN से जोड़कर आप पतों के विभिन्न संयोजन प्राप्त कर सकते हैं। मैं इसे TCA9548A ब्रेकआउट बोर्ड पर अपने अगले ट्यूटोरियल में गहराई से समझाऊंगा। अभी के लिए, इस बोर्ड में केवल 8 OLEDs को कनेक्ट करें और कोड पर एक त्वरित नज़र डालें।

कनेक्शन:

VIN से 5V (या 3.3V)

जीएनडी टू ग्राउंड

SCL से I2C घड़ी

एसडीए से I2C डेटा

फिर सेंसर को VIN, GND से कनेक्ट करें और SCn / SDn मल्टीप्लेक्स बसों में से किसी एक का उपयोग करें

अब, इंट कोड "वायर" लाइब्रेरी को शामिल करके और मल्टीप्लेक्सर्स एड्रेस को परिभाषित करके शुरू करता है।

#शामिल "वायर.एच"

#शामिल

#define MUX_Address 0x70 // TCA9548A एनकोडर पता

फिर हमें उस पोर्ट का चयन करना होगा जिससे हम संवाद करना चाहते हैं और इस फ़ंक्शन का उपयोग करके उस पर डेटा भेजना चाहते हैं:

शून्य tcaselect(uint8_t i) {

अगर (i> 7) वापसी;

Wire.beginTransmission (MUX_Address);

Wire.write(1 << i);

वायर.एंडट्रांसमिशन ();

}

आगे हम "u8g.begin ();" को कॉल करके सेटअप सेक्शन में डिस्प्ले को इनिशियलाइज़ करेंगे। MUX से जुड़े प्रत्येक डिस्प्ले के लिए "tcaselect(i);"

एक बार इनिशियलाइज़ हो जाने के बाद, हम केवल "tcaselect(i);" फ़ंक्शन को कॉल करके जो चाहें कर सकते हैं। जहां "i" मल्टीप्लेक्स बस का मूल्य है और फिर उसके अनुसार डेटा और घड़ी भेज रहा है।

चरण 13: फायदे और नुकसान

फायदे और नुकसान
फायदे और नुकसान

OLED की छवि सुंदर है। हालाँकि, OLEDs में भी है

नुकसान। चूंकि OLED स्क्रीन में कार्बनिक पदार्थ होते हैं, इसलिए उनका जीवनकाल LCD डिस्प्ले से छोटा होता है। इसके अतिरिक्त, एक ही छवि को लंबे समय तक दिखाने के बाद कई OLED डिस्प्ले बर्न-इन्स प्राप्त करते हैं। बर्न-इन के बाद, छवि दूसरी छवि दिखाने के बाद भी स्क्रीन पर बनी रहती है। इसलिए सुनिश्चित करें कि आप हर कुछ सेकंड में स्क्रीन को रिफ्रेश करते रहें। पानी इन डिस्प्ले के कार्बनिक पदार्थों को तुरंत नुकसान पहुंचा सकता है।

लाभ

बैकलाइट की कोई जरूरत नहीं

डिस्प्ले बहुत पतले और हल्के होते हैं

कम बिजली की खपत

देखने के कोण LCDs से अधिक चौड़े होते हैं

चमक और कंट्रास्ट बढ़िया हैं

उच्च गति और कम प्रतिक्रिया समय है

गहरा काला रंग

नुकसान

महंगी तकनीक

लघु जीवनचक्र

OLEDS के जलने की संभावना अधिक होती है

पानी का नुकसान

चरण 14: सामान्य त्रुटियाँ

आम त्रुटियों
आम त्रुटियों

ट्यूटोरियल को समाप्त करने के लिए कुछ सामान्य त्रुटियों के बारे में बात करते हैं

लोग इन डिस्प्ले का उपयोग करते समय बनाते हैं:

- अपने प्रोजेक्ट में पिन का उपयोग करने से पहले हमेशा तीन बार जांचें

- हेडर फाइल और अपने कोड में सही लाइब्रेरी एड्रेस चुनें

Adafruit_SSD1306.h में #SSD1306_I2C_ADDRESS 0x3C // परिभाषित करें

तथा

डिस्प्ले.बेगिन (SSD1306_SWITCHCAPVCC, 0x3C); // आपके कोड में

अगर पता गलत है तो OLED कुछ भी प्रदर्शित नहीं करेगा

- उपयोग करने से पहले ड्राइवर में डिस्प्ले का आकार बदलना चाहिए। यदि इसे नहीं बदला जाता है तो कोड को सत्यापित करने का प्रयास करते समय आपको एक त्रुटि संदेश प्राप्त होगा

#error ("ऊंचाई गलत है, कृपया Adafruit_SSD1306.h ठीक करें!");

- यदि NodeMCU का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपने OLED_RESET को 4 से LED_BUILTIN. में बदल दिया है

#OLED_RESET LED_BUILTIN परिभाषित करें

मेरे पास इस OLED डिस्प्ले का उपयोग करके लोगों को हर तरह की चीजें बनाने का दृश्य है। कुछ ने तो वीडियो गेम भी बना लिए हैं और सब कुछ। मुझे इस छोटे से डिस्प्ले का उपयोग करके वीडियो गेम बनाने में वास्तव में कोई दिलचस्पी नहीं है। हालाँकि, अब मैं आपको अपनी कल्पनाओं का पता लगाने और अद्भुत विचारों के साथ आने के लिए छोड़ दूँगा।

चरण 15: लिंक

- ब्लॉग:

- छवि जोड़ें:

- कस्टम टेक्स्ट:

- एडफ्रूट डिस्प्ले लाइब्रेरी:

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

- u8glib लाइब्रेरी: https://code.google.com/archive/p/u8glib/ या

यदि आप छोटे डिस्प्ले का उपयोग करना चाहते हैं तो डिफ़ॉल्ट 128_32 का उपयोग करें अन्यथा बड़े डिस्प्ले के लिए 128_32 पर टिप्पणी करें और अपने कोड में 128X64 NO_ACK को अनकम्मेंट करें (बस आपके द्वारा उपयोग की जा रही स्क्रीन के प्रकार को अनकम्मेंट करें) (फोंट फोंट लाइब्रेरी में हैं)

सिफारिश की: