विषयसूची:

Arduino और Shift Register के साथ डॉट मैट्रिक्स LED का उपयोग करना: 5 चरण
Arduino और Shift Register के साथ डॉट मैट्रिक्स LED का उपयोग करना: 5 चरण

वीडियो: Arduino और Shift Register के साथ डॉट मैट्रिक्स LED का उपयोग करना: 5 चरण

वीडियो: Arduino और Shift Register के साथ डॉट मैट्रिक्स LED का उपयोग करना: 5 चरण
वीडियो: 8X8 LED Matrix Scrolling Text using Shift Register 74HC595 With Arduino Nano by Manmohan Pal 2024, नवंबर
Anonim
Arduino और Shift Register के साथ डॉट मैट्रिक्स एलईडी का उपयोग करना
Arduino और Shift Register के साथ डॉट मैट्रिक्स एलईडी का उपयोग करना
Arduino और Shift Register के साथ डॉट मैट्रिक्स एलईडी का उपयोग करना
Arduino और Shift Register के साथ डॉट मैट्रिक्स एलईडी का उपयोग करना
Arduino और Shift Register के साथ डॉट मैट्रिक्स एलईडी का उपयोग करना
Arduino और Shift Register के साथ डॉट मैट्रिक्स एलईडी का उपयोग करना

सीमेंस डीएलओ७१३५ डॉट मैट्रिक्स एलईडी ऑप्टोइलेक्ट्रॉनिक्स का एक अद्भुत टुकड़ा है। इसे मेमोरी/डिकोडर/ड्राइवर के साथ 5x7 डॉट मैट्रिक्स इंटेलिजेंट डिस्प्ले (आर) के रूप में बिल किया जाता है। उस मेमोरी के साथ, इसमें 96-कैरेक्टर एएससीआईआई डिस्प्ले सेट है जिसमें अपर और लोअर केस कैरेक्टर, एक बिल्ट-इन कैरेक्टर जनरेटर और मल्टीप्लेक्सर, प्रकाश की तीव्रता के चार स्तर हैं, और यह सब 5V पर चलता है। यह जीने के लिए बहुत कुछ है, और $16 प्रति पॉप पर, यह निश्चित रूप से होना चाहिए। अपनी पसंदीदा स्थानीय इलेक्ट्रॉनिक्स की दुकान पर आधा दिन बिताने के दौरान मुझे इनमें से एक बिन $ 1.50 प्रति पीस में मिला। मैंने कई के साथ दुकान छोड़ दी। यह निर्देश आपको दिखाएगा कि इन डॉट मैट्रिक्स एलईडी से कैसे कनेक्ट किया जाए और AVR- आधारित Arduino का उपयोग करके वर्ण प्रदर्शित करें। यदि आपने मेरी पिछली कोई भी मार्गदर्शिका पढ़ी है, तो आपको यह विचार आ सकता है कि मैं अक्सर सबसे उदार समाधान के पक्ष में हूं, और आप गलत नहीं होंगे, भले ही मैं समय-समय पर लक्ष्य से कम हो जाऊं।. इसलिए, मैं इस निर्देश में एक और कदम उठाऊंगा और आपको दिखाऊंगा कि आप इन बड़े, ऑनकिन डॉट मैट्रिक्स एलईडी को चलाने के लिए आवश्यक I / O पोर्ट की संख्या को कैसे कम कर सकते हैं।

चरण 1: माल प्राप्त करें …

माल प्राप्त करें…
माल प्राप्त करें…

इस छोटी सी परियोजना के लिए, आपको आवश्यकता होगी:

  • एक AVR- आधारित माइक्रोकंट्रोलर जैसे Arduino या इसके जैसे कोई भी। ये निर्देश शायद आपकी पसंद के एमसीयू के अनुकूल हो सकते हैं।
  • एक ही परिवार में एक DLO7135 डॉट मैट्रिक्स एलईडी या अन्य
  • एक 8-बिट शिफ्ट रजिस्टर जैसे 74LS164, 74C299, या 74HC594
  • एक ब्रेडबोर्ड
  • हुकअप तार, तार कटर, आदि।

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

चरण 2: सीधे एलईडी डिस्प्ले से कनेक्ट करें

सीधे एलईडी डिस्प्ले से कनेक्ट करें
सीधे एलईडी डिस्प्ले से कनेक्ट करें
सीधे एलईडी डिस्प्ले से कनेक्ट करें
सीधे एलईडी डिस्प्ले से कनेक्ट करें
सीधे एलईडी डिस्प्ले से कनेक्ट करें
सीधे एलईडी डिस्प्ले से कनेक्ट करें

भागों की अपनी छोटी सूची तैयार करें और एलईडी को पकड़ें। इसे ब्रेडबोर्ड पर कुछ हद तक बीच में रखें, मिडलाइन ग्रूव को फैलाते हुए। कनेक्टिंग का पहला भाग एलईडी के बाईं ओर होता है। पिन #1 ऊपर बाईं ओर स्थित है जैसा कि त्रिभुज/तीर द्वारा दर्शाया गया है। जब आप पढ़ रहे हों या अपने एलईडी को कनेक्ट कर रहे हों, तो मैंने आपके संदर्भ के लिए पिन फ़ंक्शन को आपके संदर्भ के लिए रखा है।

बायीं तरफ

सकारात्मक और नकारात्मक ऊपर बाईं ओर से शुरू करते हुए, Vcc को 5V से कनेक्ट करें। यह शायद एक अच्छा विचार है कि आपके बोर्ड को तब तक संचालित न किया जाए जब तक कि आप पूरी बाईं ओर पूरा नहीं कर लेते; यदि आप तारों में प्रहार करने के लिए छोटे छेद देखने की कोशिश कर रहे हैं तो एलईडी उज्ज्वल हो सकती है। नीचे बाएँ GND को ज़मीन से कनेक्ट करें। लैम्प टेस्ट, चिप इनेबल और राइट ऊपर से बायीं ओर दूसरा और तीसरा लैम्प टेस्ट और चिप इनेबल है। ये दोनों नकारात्मक तर्क हैं, जिसका अर्थ है कि वे तब सक्षम होते हैं जब वे 1 के बजाय तार्किक 0 पर होते हैं। नीचे दी गई मेरी तस्वीर में उनके ऊपर बार होना चाहिए, लेकिन मैंने उनमें से किसी के लिए भी एनोटेट नहीं किया। सक्षम होने पर एलटी पिन डॉट मैट्रिक्स में प्रत्येक बिंदु को 1/7वें चमक पर रोशनी देता है। यह एक पिक्सेल परीक्षण से अधिक है, लेकिन एलटी पिन के बारे में दिलचस्प बात यह है कि यह स्मृति में मौजूद किसी भी चरित्र को अधिलेखित नहीं करता है, इसलिए यदि आपके पास इनमें से कई एक साथ जुड़े हुए हैं (उनके पास 20 फीट देखने की दूरी है), एलटी स्ट्रोबिंग इसे कर्सर की तरह बना सकते हैं। यह सुनिश्चित करने के लिए कि यह अक्षम है, इसे 5V से कनेक्ट करें। CE और WR पिन भी नकारात्मक तर्क हैं और इस स्मार्ट डिवाइस को लिखने के लिए सक्षम होना आवश्यक है। आप अपने माइक्रोकंट्रोलर पर अतिरिक्त I/O पोर्ट के साथ इन पिनों को माइक्रोमैनेज कर सकते हैं, लेकिन हम यहां परेशान नहीं होंगे। उन्हें सक्षम रखने के लिए बस उन्हें जमीन से कनेक्ट करें। चमक के स्तर एल ई डी के डीएलओ परिवार पर चार प्रोग्राम योग्य चमक स्तर हैं:

  • रिक्त
  • १/७ चमक
  • 1/2 चमक
  • पूर्ण चमक

BL1 हाई और BL0 LOW 1/2 ब्राइटनेस है। दोनों हाई फुल ब्राइटनेस है। आपको जो पसंद है उसे सेट करें। दोबारा, यदि आपके पास अतिरिक्त I/O पोर्ट हैं और यह आपके लिए काफी महत्वपूर्ण है, तो इसे आपके Arduino द्वारा भी नियंत्रित किया जा सकता है। यह बाईं ओर लपेटता है। यदि आप अपने बोर्ड में बिजली लाते हैं तो आपको एलईडी लाइट को देखना चाहिए। यदि आप उत्सुक हैं, तो इससे परिचित होने के लिए चमक नियंत्रण और लैंप परीक्षण के साथ खेलें।

दाएं ओर

दाईं ओर पूरी तरह से डेटा पोर्ट होते हैं। नीचे दाईं ओर, पिन 8 या D0 सटीक होने के लिए, 7-बिट वर्ण में कम से कम महत्वपूर्ण बिट का प्रतिनिधित्व करता है। ऊपर दाईं ओर, पिन 14 या D6 सबसे महत्वपूर्ण बिट का प्रतिनिधित्व करता है। इससे आपको पता चलता है कि एलईडी पर लिखते समय आपके बिट्स को किस क्रम में फेरबदल करना है। जब आपके पास डेटा इनपुट पोर्ट वायर्ड हो जाते हैं, तो अपने Arduino या AVR पर सात खाली डिजिटल I/O पोर्ट ढूंढें और उन्हें कनेक्ट करें। आप शायद यह याद रखना चाहेंगे कि आपके एवीआर पर कौन सा डेटा आउटपुट पोर्ट एलईडी पर किस डेटा इनपुट पोर्ट पर जाता है। अब आप उस स्मार्ट एलईडी पर कुछ डेटा पुश करने के लिए तैयार हैं। क्या आप अभी तक उत्साह से कांप रहे हैं? मैं जानता हूँ कि मैं कर रहा सकता हूँ…

चरण 3: प्रदर्शित होने के लिए एक चरित्र निर्दिष्ट करना

प्रदर्शित करने के लिए एक चरित्र निर्दिष्ट करना
प्रदर्शित करने के लिए एक चरित्र निर्दिष्ट करना

इस सीएमओएस एलईडी पर उपयोग किया जाने वाला वर्ण सेट आपका रन-ऑफ-द-मिल ASCII है जो 0x20 (दशमलव 32; एक स्थान) से शुरू होता है और 0x7F (दशमलव 127; एक डिलीट, हालांकि एलईडी पर कर्सर ग्राफ़िक के रूप में दर्शाया जाता है) पर समाप्त होता है।. इसलिए, एलईडी डिस्प्ले होने से एक चरित्र आपके डेटा आउटपुट पिन पर तर्क 1 या 0 को धक्का देने से ज्यादा कुछ नहीं करता है, आमतौर पर डब्ल्यूआर पल्स के बाद, लेकिन मैं इस अभ्यास के लिए पूर्ववत कर रहा हूं। तो, आपने नीचे लिखा है या याद है कौन से पिन किस पोर्ट पर जाते हैं, है ना? मैंने पीडी [२..७] और पीबी० (अरुडिनो-स्पीक में डिजिटल पिन २ से ८) को चुना। मैं आम तौर पर पीडी [0..1] का उपयोग करने का सुझाव नहीं देता क्योंकि मैं इसे अपने धारावाहिक संचार को एक फ्रीबीएसडी बॉक्स और अरुडिनो के एट अल को समर्पित करता हूं। उन पिनों को उनके FTDI USB संचार चैनल में मैप करें, और यद्यपि "वे" SAY पिन 0 और 1 काम करेंगे यदि आप धारावाहिक संचार प्रारंभ नहीं करते हैं, तो मैं उन पिनों को सामान्य डिजिटल I/O के रूप में उपयोग करने में सक्षम नहीं हूं। वास्तव में, जब मैंने PD0 और PD1 का उपयोग करने की कोशिश की और पाया कि वे हमेशा उच्च थे, तो मैंने एक समस्या को डीबग करने का प्रयास करते हुए दो दिन बिताए। *श्रग* शायद किसी प्रकार का बाहरी इनपुट होना अच्छा होगा, जैसे कि कीपैड, पुशव्हील या थंबव्हील स्विच, या शायद किसी टर्मिनल से इनपुट भी (मेरा ArduinoTerm अभी प्राइम टाइम के लिए तैयार नहीं है…) चुनना आपको है। अभी के लिए, मैं केवल यह बताने जा रहा हूं कि एलईडी पर आप जो चरित्र चाहते हैं उसे प्राप्त करने के लिए कोड कैसे प्राप्त करें। स्रोत कोड और मेकफ़ाइल सहित डाउनलोड के लिए एक ज़िपफाइल है और एक लघु फिल्म भी है जिसमें एलईडी अपने चरित्र सेट को प्रिंट कर रही है। वीडियो की भद्दी गुणवत्ता के लिए क्षमा करें। नीचे दिया गया कोड स्ट्रिंग को प्रिंट करता है "वेलकम टू माय इंस्ट्रक्शनल!" फिर पूरे कैरेक्टर सेट के माध्यम से साइकिल चलाती है जिसे एलईडी सपोर्ट करता है।

डीडीआरडी = 0xFF; // आउटपुटडीडीआरबी = (1<<डीडीबी0); चार संदेश = "मेरे निर्देश में आपका स्वागत है!"; uint8_t i; के लिए (;;) {के लिए (i = 0; i <27; i ++) { Print2LED (msg ); _देरी_एमएस (150); } for(i=0x20; i<0x80; i++) { Print2LED(i); _देरी_एमएस (150); } Print2LED(&apos*&apos);}Print2Led () फ़ंक्शन में पोर्ट आउटपुट का ध्यान रखा जाता है

voidPrint2LED(uint8_t i){ PORTD = (i << 2); अगर (i और 0b01000000) PORTB = (1<

कोड और मेकफ़ाइल नीचे एक ज़िप फ़ाइल में शामिल है।

चरण 4: एक शिफ्ट रजिस्टर के साथ I/O बंदरगाहों को सुरक्षित रखें

एक शिफ्ट रजिस्टर के साथ I/O बंदरगाहों का संरक्षण करें
एक शिफ्ट रजिस्टर के साथ I/O बंदरगाहों का संरक्षण करें
एक शिफ्ट रजिस्टर के साथ I/O बंदरगाहों का संरक्षण
एक शिफ्ट रजिस्टर के साथ I/O बंदरगाहों का संरक्षण
एक शिफ्ट रजिस्टर के साथ I/O बंदरगाहों का संरक्षण
एक शिफ्ट रजिस्टर के साथ I/O बंदरगाहों का संरक्षण

तो अब हमारा माइक्रोकंट्रोलर डॉट मैट्रिक्स एलईडी को डेटा भेज सकता है लेकिन यह आठ I/O पोर्ट का उपयोग कर रहा है। इसमें 8-पिन डीआईपी पैकेज में एटीटीनी का उपयोग शामिल नहीं है, और यहां तक कि एक नए Arduino के साथ एक ATmega328p खेल रहा है जो एक एलईडी के लिए बहुत सारे I/O पोर्ट हैं। हालाँकि, हम इसे शिफ्ट रजिस्टर नामक IC का उपयोग करके प्राप्त कर सकते हैं। गियर को "शिफ्ट" करने के लिए एक पल … एक शिफ्ट रजिस्टर को उन दो शब्दों के बारे में सोचकर सबसे अच्छा समझा जा सकता है जो इसका नाम बनाते हैं: "शिफ्ट" और "रजिस्टर।" शिफ्ट शब्द का अर्थ है कि डेटा रजिस्टर के माध्यम से कैसे आगे बढ़ रहा है। यहां (जैसा कि हमारे Arduino और माइक्रोकंट्रोलर में, सामान्य रूप से) एक रजिस्टर एक ऐसा स्थान होता है जिसमें डेटा होता है। यह "फ्लिप फ्लॉप" नामक डिजिटल लॉजिक सर्किट की एक रैखिक श्रृंखला को लागू करके ऐसा करता है जिसमें दो स्थिर अवस्थाएँ होती हैं जिन्हें या तो 1 या 0 द्वारा दर्शाया जा सकता है। इसलिए, आठ फ्लिप फ्लॉप को एक साथ रखकर आपके पास एक उपकरण है जो धारण करने में सक्षम है और एक 8-बिट बाइट का प्रतिनिधित्व करते हैं। जिस तरह कई प्रकार के फ्लिप फ्लॉप होते हैं, और शिफ्ट रजिस्टरों (थिंक अप/डाउन काउंटर्स और जॉनसन काउंटर्स) की थीम पर कई विविधताएं होती हैं, डेटा के आधार पर कई प्रकार के शिफ्ट रजिस्टर भी होते हैं। रजिस्टर में लैच किया जाता है और वह डेटा कैसे आउटपुट होता है। इसके आधार पर, निम्नलिखित प्रकार के शिफ्ट रजिस्टरों पर विचार करें:

  • सीरियल इन / समानांतर आउट (एसआईपीओ)
  • सीरियल इन / सीरियल आउट (एसआईएसओ)
  • समानांतर इन/सीरियल आउट (पीआईएसओ)
  • समानांतर इन / समानांतर आउट (पीआईपीओ)

नोट के दो SIPO और PISO हैं। SIPO रजिस्टर क्रमिक रूप से डेटा लेते हैं, यानी एक के बाद एक, पहले के इनपुट बिट को अगले फ्लिप फ्लॉप पर शिफ्ट करना और सभी इनपुट पर डेटा को एक ही बार में भेजना। यह समानांतर कनवर्टर के लिए एक अच्छा धारावाहिक बनाता है। पीआईएसओ शिफ्ट रजिस्टर, इसके विपरीत, समानांतर इनपुट होते हैं, इसलिए सभी बिट्स एक बार में दर्ज किए जाते हैं, लेकिन एक बार में आउटपुट होते हैं। और आपने अनुमान लगाया, यह सीरियल कनवर्टर के समानांतर एक अच्छा समानांतर बनाता है। I/O पिन की संख्या को कम करने के लिए हम जिस शिफ्ट रजिस्टर का उपयोग करना चाहते हैं, वह हमें उन 8 IO पिनों को लेने की अनुमति देगा जिनका हमने पहले उपयोग किया था और उन्हें एक या शायद सिर्फ एक जोड़े तक कम कर दिया था, यह देखते हुए कि हमें यह नियंत्रित करने की आवश्यकता हो सकती है कि हम कैसे इनपुट करते हैं बिट्स। इसलिए, हम जिस शिफ्ट रजिस्टर का उपयोग करेंगे, वह एक सीरियल इन / पैरेलल आउट है। LED और Arduino के बीच शिफ्ट रजिस्टर को वायर अप करें। शिफ्ट रजिस्टर का उपयोग करना आसान है। सबसे कठिन हिस्सा सिर्फ डेटा आउटपुट पिन की कल्पना कर रहा है और आईसी में बाइनरी अंक कैसे समाप्त होंगे, और वे अंततः एलईडी पर कैसे दिखाई देंगे। इसकी योजना बनाने के लिए कुछ समय निकालें। 1. पिन 14 (ऊपरी दाएं) के लिए 5V संलग्न करें और पिन 7 (नीचे बाएं) को नीचे जमीन पर ले जाएं।2। शिफ्ट रजिस्टर में दो सीरियल इनपुट हैं लेकिन हम केवल एक का उपयोग करेंगे, इसलिए पिन दो को 5V3 से कनेक्ट करें। हम स्पष्ट पिन का उपयोग नहीं करेंगे (सभी आउटपुट को शून्य करने के लिए उपयोग किया जाता है) इसलिए इसे तैरते हुए छोड़ दें या इसे 5V4 पर हमला करें। शिफ्ट रजिस्टर में से किसी एक को पिन करने के लिए एक डिजिटल आईओ पोर्ट कनेक्ट करें। यह सीरियल इनपुट पिन है।5। 8 (नीचे दाएं) पिन करने के लिए एक डिजिटल आईओ पोर्ट कनेक्ट करें। यह घड़ी का पिन है।६। अपनी डेटा लाइनों को Q0 से Q6 तक कनेक्ट करें। हम केवल 7 बिट्स का उपयोग कर रहे हैं क्योंकि ASCII वर्ण सेट केवल सात बिट्स का उपयोग करता है। मैंने अपने सीरियल डेटा को आउटपुट करने के लिए PD2 और क्लॉक सिग्नल के लिए PD3 का उपयोग किया। डेटा पिन के लिए, मैंने एलईडी पर Q0 से D6 को जोड़ा और उस तरह से जारी रखा (Q1 से D5, Q2 से D4, आदि)। चूंकि हम क्रमिक रूप से डेटा भेज रहे हैं, इसलिए हमें प्रत्येक वर्ण के द्विआधारी प्रतिनिधित्व की जांच करनी होगी, जिसे हम भेजना चाहते हैं, 1 और 0 को देखते हुए, और प्रत्येक बिट को सीरियल लाइन पर आउटपुट करना। मैंने नीचे एक मेकफ़ाइल के साथ dotmatrixled.c स्रोत का दूसरा संस्करण शामिल किया है। यह वर्ण सेट के माध्यम से चक्र करता है और सभी वर्णों को प्रदर्शित करता है (यदि यह अजीब सोच है कि एक अक्षर विषम या सम हो सकता है, तो एक पल के लिए द्विआधारी प्रतिनिधित्व के बारे में सोचें)। सभी विषम वर्णों को प्रदर्शित करके यह पता लगाने का प्रयास करें कि इसे कैसे चक्रित किया जाए। आप आगे शिफ्ट रजिस्टर, डॉट मैट्रिक्स एलईडी और अपने Arduino के बीच कनेक्शन के साथ प्रयोग कर सकते हैं। एलईडी और रजिस्टर के बीच कई नियंत्रण विशेषताएं हैं जो आपको डेटा प्रदर्शित होने पर अपने नियंत्रण को ठीक करने की अनुमति दे सकती हैं। तो…। हम आठ I/O पोर्ट का उपयोग करने से केवल दो का उपयोग करने के लिए चले गए हैं!

चरण 5: सारांश

सारांश
सारांश
सारांश
सारांश

इस निर्देश में, मैंने DLO7135 डॉट मैट्रिक्स एलईडी और इसे कैसे काम करना है, प्रस्तुत किया है। मैंने आगे चर्चा की है कि शिफ्ट रजिस्टर का उपयोग करके आवश्यक I/O बंदरगाहों की संख्या को आठ से केवल दो तक कैसे कम किया जाए। DLO7135 डॉट मैट्रिक्स एलईडी को बहुत ही आकर्षक और दिलचस्प मार्की बनाने के लिए एक साथ स्ट्रगल किया जा सकता है। मुझे आशा है कि आपको यह निर्देश पढ़ने में मज़ा आया होगा! यदि कोई सुधार है जो आपको लगता है कि मैं कर सकता हूं या आप इस पर या मेरे किसी भी 'आइबल्स' पर सुझाव देना चाहेंगे, तो मुझे उन्हें सुनकर खुशी हुई!हैप्पी एवीआर'इंग!

सिफारिश की: