विषयसूची:

74HC164 शिफ्ट रजिस्टर और आपका Arduino: 9 कदम
74HC164 शिफ्ट रजिस्टर और आपका Arduino: 9 कदम

वीडियो: 74HC164 शिफ्ट रजिस्टर और आपका Arduino: 9 कदम

वीडियो: 74HC164 शिफ्ट रजिस्टर और आपका Arduino: 9 कदम
वीडियो: Shift Register 74HC164 II In Hindi II Ani-Lab 2024, दिसंबर
Anonim
74HC164 शिफ्ट रजिस्टर और आपका Arduino
74HC164 शिफ्ट रजिस्टर और आपका Arduino
74HC164 शिफ्ट रजिस्टर और आपका Arduino
74HC164 शिफ्ट रजिस्टर और आपका Arduino

शिफ्ट रजिस्टर डिजिटल लॉजिक का एक बहुत ही महत्वपूर्ण हिस्सा हैं, वे समानांतर और धारावाहिक दुनिया के बीच गोंद के रूप में कार्य करते हैं। वे वायर काउंट को कम करते हैं, पिन का उपयोग करते हैं और यहां तक कि अपने डेटा को स्टोर करने में सक्षम होने के कारण आपके सीपीयू को लोड करने में मदद करते हैं। वे विभिन्न आकारों में आते हैं, विभिन्न उपयोगों के लिए अलग-अलग मॉडल और विभिन्न विशेषताओं के साथ। आज मैं जिसकी चर्चा कर रहा हूँ वह है ७४एचसी१६४ ८ बिट, सीरियल इन पैरेलल आउट, नॉन लैच्ड, शिफ्ट रजिस्टर।क्यों? खैर एक के लिए यह सबसे बुनियादी शिफ्ट रजिस्टरों में से एक है, जो इसके बारे में सीखना आसान बनाता है, लेकिन यह सिर्फ एक ही हुआ जो मेरे पास था (योग्य!) यह निर्देश योग्य कवर करता है कि यह चिप कैसे काम करता है, इसे कैसे तारित किया जाए, और इसे कुछ नमूना स्केच और एलईडी सर्किट सहित एक arduino के साथ इंटरफ़ेस करें। मुझे आशा है कि आप सभी का आनंद लेंगे!

चरण 1: तो, शिफ्ट रजिस्टर क्या हैं?

तो, शिफ्ट रजिस्टर क्या हैं?
तो, शिफ्ट रजिस्टर क्या हैं?

जैसा कि पहले उल्लेख किया गया है कि वे सभी अलग-अलग स्वादों में आते हैं, और मैंने यह भी उल्लेख किया है कि मैं 74HC164 8 बिट, सीरियल इन पैरेलल आउट, नॉन लैच्ड, शिफ्ट रजिस्टर का उपयोग कर रहा हूं, तो इसका क्या मतलब है?!? सबसे पहले, नाम 74 - का अर्थ है 74xx तर्क परिवार का हिस्सा, और इसके तर्क के बाद से यह बहुत अधिक वर्तमान (16-20ma पूरे चिप के लिए सामान्य है) को सीधे नियंत्रित नहीं कर सकता है, यह केवल संकेतों को पास करता है, लेकिन इसका मतलब यह नहीं है वह सिग्नल एक ट्रांजिस्टर में नहीं जा रहा है जो एक उच्च वर्तमान लोड को स्विच कर सकता है। एचसी का मतलब है कि यह एक उच्च गति वाला सेमीोस डिवाइस है, आप इसके बारे में नीचे दिए गए लिंक पर पढ़ सकते हैं, लेकिन इसके बारे में आपको मूल रूप से यह जानने की जरूरत है कि यह कम है पावर डिवाइस और 2 से 5 वोल्ट तक चलेगा (इसलिए यदि आप 3.3 वोल्ट के आर्डिनो का उपयोग कर रहे हैं तो आपका ठीक है) साथ ही यह उच्च गति पर ठीक से काम कर सकता है, इस विशेष चिप की विशिष्ट गति 78mhz है, लेकिन आप धीमी या तेज गति से जा सकते हैं (जब तक यह गड़बड़ न हो जाए) जैसा आप चाहते हैं www.kpsec.freeuk.com/components/74series.htm164 इस चिप का मॉडल नंबर है, wikipediaen.wikipedia.org/wiki/List_of_7400_series_integrated_circuits पर उनका एक बड़ा चार्ट है अगला, 8 बिट एक शिफ्ट रजिस्टर फ्लिप फ्लॉप सर्किट से बना होता है, एक फ्लिप फ्लॉप 1 बिट मेमोरी होता है, यह एक हे s 8 (या 1 बाइट मेमोरी)। चूंकि यह मेमोरी है, यदि आपको रजिस्टर को अपडेट करने की आवश्यकता नहीं है, तो आप इसे "बात करना" बंद कर सकते हैं और जब तक आप इसे फिर से "बात" नहीं करते हैं या पावर रीसेट नहीं करते हैं, तब तक यह उस स्थिति में रहेगा जब तक आप इसे छोड़ देते हैं। अन्य 7400 लॉजिक सीरीज़ शिफ्ट रजिस्टर समानांतर में 16 बिट सीरियल तक जा सकते हैं इसका मतलब है कि आपका arduino इसे क्रमिक रूप से डेटा भेजता है (एक के बाद एक दालों पर) और शिफ्ट रजिस्टर प्रत्येक बिट को सही आउटपुट पिन पर रखता है। इस मॉडल को नियंत्रित करने के लिए केवल 2 तारों की आवश्यकता होती है, इसलिए आप arduino पर 2 डिजिटल पिन का उपयोग कर सकते हैं, और उन 2 को 8 से अधिक डिजिटल आउटपुट में तोड़ सकते हैं, कुछ अन्य मॉडल सीरियल आउट में समानांतर हैं, वे वही काम करते हैं लेकिन arduino के इनपुट के रूप में (उदाहरण के लिए एक एनईएस गेमपैड) नॉन लैच्ड यदि आपको इसकी आवश्यकता है तो यह इस चिप का पतन हो सकता है। जैसे ही डेटा सीरियल के माध्यम से शिफ्ट रजिस्टर में प्रवेश करता है, यह पहले आउटपुट पिन पर दिखाई देता है, जब एक क्लॉक पल्स में प्रवेश होता है, तो पहला बिट 1 स्थान पर शिफ्ट हो जाता है, आउटपुट पर स्क्रॉलिंग प्रभाव पैदा करता है, उदाहरण के लिए 00000001 आउटपुट पर दिखाई देगा जैसा कि १०१००१००१००१०००००००००००००१००००००१ यदि आप अन्य तर्क उपकरणों से बात कर रहे हैं जो एक ही घड़ी साझा कर रहे हैं और इसकी उम्मीद नहीं कर रहे हैं, तो यह समस्या पैदा कर सकता है। लैच्ड शिफ्ट रजिस्टरों में मेमोरी का एक अतिरिक्त सेट होता है, इसलिए एक बार डेटा रजिस्टर में प्रवेश करने के बाद आप एक स्विच फ्लिप कर सकते हैं और आउटपुट दिखा सकते हैं, लेकिन यह एक और तार, सॉफ्टवेयर और चीजों को साथ रखने के लिए जोड़ता है। इस निर्देश के मामले में हम एलईडी डिस्प्ले को नियंत्रित कर रहे हैं, स्क्रॉलिंग प्रभाव इतनी तेजी से होता है कि आप इसे नहीं देख सकते (सिवाय जब आप पहली बार चिप चालू करते हैं), और एक बार बाइट शिफ्ट रजिस्टर में होने के बाद कोई और स्क्रॉलिंग नहीं होती है, हम बारग्राफ प्रकार, 7 सेगमेंट को नियंत्रित करेंगे, और इस चिप के साथ एक 16LED 4x4 डॉट मैट्रिक्स और Arduino पर केवल 2 डिजिटल पिन (+ पावर और ग्राउंड) का उपयोग करके सॉफ़्टवेयर

चरण 2: बेसिक वायरिंग और ऑपरेशन

बुनियादी तारों और संचालन
बुनियादी तारों और संचालन
बुनियादी तारों और संचालन
बुनियादी तारों और संचालन

वायरिंग 74HC164 एक 14 पिन चिप है, इसमें 4 इनपुट पिन, 8 आउटपुट पिन, पावर और ग्राउंड हैं, तो चलिए ऊपर से शुरू करते हैं। पिन 1 और 2 दोनों सीरियल इनपुट हैं, वे एक तार्किक और गेट के रूप में सेटअप हैं, जिसका अर्थ है कि बिट को 1 के रूप में देखने के लिए दोनों को तर्क उच्च (यानी 5 वोल्ट) होना चाहिए, एक कम राज्य (0 वोल्ट) या तो शून्य के रूप में पढ़ा जाएगा। हमें वास्तव में इसकी आवश्यकता नहीं है और सॉफ्टवेयर में इससे निपटना आसान है, इसलिए किसी एक को चुनें और इसे V+ से जोड़ दें ताकि यह हमेशा उच्च पढ़े। मैं पिन 1 से पिन 14 (V+) तक एक जम्पर का उपयोग करना चुनता हूं क्योंकि आप चिप के ऊपर सिर्फ एक ब्रेडबोर्ड जम्पर पॉप कर सकते हैं। एक शेष सीरियल इनपुट (मेरी योजनाओं में पिन 2) को arduino का डिजिटल पिन 2 मिलेगा। 74HC164 के पिन 3, 4, 5, और 6 आउटपुट के पहले 4 बाइट्स हैंपिन 7 ग्राउंड से कनेक्ट होता है दाईं ओर कूदना, पिन 8 क्लॉक पिन है, इस तरह शिफ्ट रजिस्टर जानता है कि अगला सीरियल बिट पढ़ने के लिए तैयार है, इसे arduino पर डिजिटल पिन 3 से जोड़ा जाना चाहिए। पिन 9 एक बार में पूरे रजिस्टर को साफ करने के लिए है, अगर यह कम हो जाता है, आपके पास इसका उपयोग करने का विकल्प है, लेकिन इसमें कुछ भी नहीं है, इसलिए इसे वी + पिन 10, 11 12 और 13 से बांधें, आउटपुटपिन के अंतिम 4 बाइट्स हैं 14 चिप्स पावर ऑपरेशन पहले आपको सीरियल इनपुट सेट करने की आवश्यकता है रजिस्टर (आर्डिनो पर डिजिटल पिन 2) उच्च या निम्न, आगे आपको क्लॉक पिन (डिजिटल पिन 3) को निम्न से उच्च पर फ्लिप करने की आवश्यकता है, शिफ्ट रजिस्टर सीरियल इनपुट पर डेटा को पढ़ेगा और आउटपुट पिन को शिफ्ट करेगा 1, 8 बार दोहराएं और आपने सभी 8 आउटपुट सेट कर दिए हैं। यह arduino IDE में लूप और डिजिटल राइट्स के साथ हाथ से किया जा सकता है, लेकिन चूंकि t उनका एक बहुत ही सामान्य हार्डवेयर स्तर संचार (एसपीआई) है, उनके पास एक ही कार्य है जो आपके लिए करता है। शिफ्टऑट (डेटापिन, क्लॉकपिन, बिटऑर्डर, वैल्यू) बस इसे बताएं कि डेटा और क्लॉक पिन आर्डिनो से कहां जुड़े हैं, डेटा भेजने का तरीका क्या है और क्या भेजना है, और इसका आपके लिए ध्यान रखा गया है (आसान)

चरण 3: परियोजनाएं

परियोजनाओं
परियोजनाओं

ठीक है, पर्याप्त व्याख्यान और सिद्धांत, इस चिप के साथ कुछ मजेदार चीजें करते हैं! इस निर्देश में कोशिश करने के लिए 3 परियोजनाएं हैं, पहले 2 आसान हैं और क्षणों में ब्रेडबोर्ड आउट किया जा सकता है। तीसरा, 4x4 एलईडी मैट्रिक्स, एलईडी वायरिंग के कारण निर्माण के लिए अधिक समय और विचार की आवश्यकता होती है। भागों की सूची प्रोजेक्ट 1: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर 1 * 74HC164 शिफ्ट रजिस्टर 1 * सोल्डरलेस ब्रेडबोर्ड 1 * आर्डिनो, या आर्डिनो संगत (5v) 1 * 330 ओम 1/4 वाट रोकनेवाला 8 * सामान्य आउटपुट लाल एलईडी के 12 * जम्पर तार प्रोजेक्ट 2: '2 वायर' 7 सेगमेंट डिस्प्ले कंट्रोलर 1 * 74HC164 शिफ्ट रजिस्टर 1 * सोल्डरलेस ब्रेडबोर्ड 1 * arduino, या arduino संगत (5v) 1 * 330 ओम 1/4 वाट रोकनेवाला 1 * सामान्य कैथोड सात खंड डिस्प्ले 9 * जम्पर वायर प्रोजेक्ट 3: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले 1 * 74HC164 शिफ्ट रजिस्टर 1 * आर्डिनो, या आर्डिनो संगत (5 वी) 4 * 150 ओम 1 1/4 वॉट रेसिस्टर8 * 1Kohm 1/8 वॉट रेसिस्टर (या बड़ा)8 * NpN ट्रांजिस्टर (2n3904 या बेहतर)16 * नॉर्मल आउटपुट रेड LED इसका निर्माण करने का एक साधन है और 5 वोल्ट पावर को रेगुलेट करता है जो 160+ma को हैंडल कर सकता है (आप कर सकते हैं) सभी एलईडी को एक बार ब्रेक लाइट की तरह चालू करें)

चरण 4: प्रोजेक्ट 1 [पीटी 1]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर हार्डवेयर

प्रोजेक्ट 1 [पीटी 1]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर हार्डवेयर
प्रोजेक्ट 1 [पीटी 1]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर हार्डवेयर
प्रोजेक्ट 1 [पीटी 1]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर हार्डवेयर
प्रोजेक्ट 1 [पीटी 1]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर हार्डवेयर

योजनाबद्ध के अनुसार आर्डिनो और शिफ्ट रजिस्टर को हुक करें, मेरे पास पहले से ही ब्रेडबोर्ड के उपयोग के लिए 10 सेगमेंट का बारग्राफ डिस्प्ले तैयार है और यही आप छवि में देखेंगे, लेकिन आप दूसरे पेज पर अलग-अलग एलईडी के साथ भी ऐसा ही कर सकते हैं। मैंने कहा कि ये ड्राइवर डिवाइस नहीं थे, कि वे लॉजिक डिवाइस थे, जिनमें से थोड़ी मात्रा में करंट गुजरने में सक्षम था। 8 एलईडी चलाने के लिए, सर्किट को सरल रखते हुए, और शिफ्ट रजिस्टर को पकाने के लिए नहीं, इसके लिए आवश्यक है कि हम करंट को थोड़ा सीमित करें। एलईडी को समानांतर में तार दिया जाता है और बिजली में जाने से पहले एक आम जमीन (सामान्य कैथोड) साझा की जाती है। आपूर्ति के लिए उन्हें 330 ओम अवरोधक से गुजरने की जरूरत है, वर्तमान की कुल मात्रा को सीमित करते हुए कि सभी एलईडी संभवतः 10ma (5 वोल्ट पर) का उपयोग कर सकते हैं, यह एलईडी को बीमार दिखने वाली स्थिति में छोड़ देता है लेकिन वे प्रकाश करते हैं और इस प्रकार सेवा करते हैं यह उदाहरण, एलईडी को उनके उचित प्रवाह पर चलाने के लिए आपको एक ट्रांजिस्टर डालने की आवश्यकता होगी जहां शिफ्ट रजिस्टर एक उच्च वर्तमान स्रोत को चालू / बंद कर सकता है (प्रोजेक्ट 3 देखें) शिफ्ट रजिस्टर के डेटा पिन (पिन 2) की जरूरत है Arduino डिजिटल पिन # 2 से कनेक्ट करने के लिए शिफ्ट रजिस्टर के क्लॉक पिन (पिन 8) को arduino डिजिटल पिन # 3 से कनेक्ट करने की आवश्यकता है

चरण 5: प्रोजेक्ट 1 [पीटी 2]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर सॉफ्टवेयर

प्रोजेक्ट 1 [पीटी 2]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर सॉफ्टवेयर
प्रोजेक्ट 1 [पीटी 2]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर सॉफ्टवेयर
प्रोजेक्ट 1 [पीटी 2]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर सॉफ्टवेयर
प्रोजेक्ट 1 [पीटी 2]: '2 वायर' बारग्राफ एलईडी डिस्प्ले कंट्रोलर सॉफ्टवेयर

उदाहरण १: फ़ाइल खोलें "_164_bas_ex.pde" arduino IDE के अंदर, यह एक साधारण स्केच है जो आपको बारग्राफ डिस्प्ले में एलईडी को चालू या बंद करने देता है। पहली 2 लाइनें पिन नंबर को परिभाषित करती हैं जिसका उपयोग हम डेटा और घड़ी के लिए करेंगे, कॉन्स्ट पूर्णांक पर # परिभाषित करें, मुझे याद रखना आसान लगता है, और एक या दूसरे को एक बार संकलित करने का कोई फायदा नहीं है # डेटा परिभाषित करें 2 # घड़ी 3 परिभाषित करें अगला शून्य सेटअप फ़ंक्शन है, यह केवल एक बार चलता है, इसलिए आर्डिनो बदल जाता है चालू है, शिफ्ट रजिस्टर सेट करता है और उसके पास करने के लिए और कुछ नहीं है। शून्य सेटअप फ़ंक्शन के अंदर हम घड़ी और डेटा पिन को OUTPUT पिन के रूप में सेट करते हैं, फिर शिफ्टऑट फ़ंक्शन का उपयोग करके हम डेटा को शिफ्ट रजिस्टर शून्य सेटअप () {पिनमोड (घड़ी, OUTPUT) में भेजते हैं; // क्लॉक पिन को आउटपुट पिनमोड (डेटा, OUTPUT) बनाएं; // डेटा पिन को आउटपुट शिफ्टऑट (डेटा, घड़ी, LSBFIRST, B10101010) बनाएं; // इस बाइनरी वैल्यू को शिफ्ट रजिस्टर में भेजें} शिफ्टऑट फंक्शन में आप इसके तर्क देख सकते हैंडेटा डेटा पिन है, क्लॉक क्लॉक पिन है LSBFIRST यह दर्शाता है कि बाइनरी नोटेशन (Bxxxxxxxx) में इसे लिखते समय किस क्रम में है। बी के बाद का तत्व कम से कम महत्वपूर्ण बिट पहले है, इसे पहले खिलाया जाता है, इसलिए यह अंतिम आउटपुट पर समाप्त होता है, जब सभी 8 बिट्स बी 10101010 में फीड हो जाते हैं, बाइनरी वैल्यू शिफ्ट रजिस्टर में भेजा जा रहा है, और यह हर अजीब रोशनी को चालू करेगा, अलग-अलग पैटर्न को चालू या बंद करने के लिए अलग-अलग मानों के साथ खेलने का प्रयास करें और अंत में एक खाली शून्य लूप (क्योंकि आपको एक की आवश्यकता है, भले ही आप इसका उपयोग नहीं कर रहे हों) शून्य लूप () {} // अभी के लिए खाली लूप उदाहरण 2: पहली 8 लाइनें हैं पहले उदाहरण की पहली 8 पंक्तियों के समान, वास्तव में वे किसी भी अन्य प्रोजेक्ट के लिए नहीं बदलेंगे, इसलिए #define data 2#define clock 3void setup(){ pinMode(clock, OUTPUT); // क्लॉक पिन को आउटपुट पिनमोड (डेटा, OUTPUT) बनाएं; // डेटा पिन को एक आउटपुट बनाएं लेकिन अब शून्य सेटअप में लूप के लिए एक 8 गिनती है, यह एक खाली बाइट ले रहा है और एक बार में 1 बिट को सबसे बाईं ओर से शुरू करके दाईं ओर ले जा रहा है। यह पहले उदाहरण से पीछे की ओर है जहां हमने सबसे दाहिने बिट से शुरू किया और बाएं काम किया, लेकिन MSBFIRST का उपयोग करके शिफ्ट आउट फ़ंक्शन डेटा को सही तरीके से भेजता है, साथ ही हम लूप में देरी जोड़ते हैं ताकि यह दिखाई देने के लिए पर्याप्त धीमा हो। for(int i = 0; i <8; ++i) // 0 - 7 do {shiftOut(data, clock, MSBFIRST, 1 << i); // बिट शिफ्ट ए लॉजिक हाई (1) वैल्यू बाय आई डिले (100); // देरी १००ms या आप इसे नहीं देख पाएंगे } } शून्य लूप () {} // अभी के लिए खाली लूप स्क्रिप्ट अपलोड करें और अब आपको बारग्राफ को एक बार में प्रत्येक प्रकाश को प्रकाश में देखना चाहिए

चरण 6: प्रोजेक्ट 2: '2 वायर' 7 सेगमेंट डिस्प्ले कंट्रोलर

प्रोजेक्ट 2: '2 वायर' 7 सेगमेंट डिस्प्ले कंट्रोलर
प्रोजेक्ट 2: '2 वायर' 7 सेगमेंट डिस्प्ले कंट्रोलर
प्रोजेक्ट 2: '2 वायर' 7 सेगमेंट डिस्प्ले कंट्रोलर
प्रोजेक्ट 2: '2 वायर' 7 सेगमेंट डिस्प्ले कंट्रोलर

अपने 7 सेगमेंट डिस्प्ले के पिनआउट को देखें (मेरे पास केवल एक ड्यूल था लेकिन सिर्फ आधे का उपयोग कर रहा था) और शिफ्ट रजिस्टरबिट पर प्रत्येक सेगमेंट को सही बिट से जोड़ने के लिए नीचे दिए गए ड्राइंग का उपयोग करें 1 = पिन 3 बिट 2 = पिन 4 बिट 3 = पिन 5 बिट 4 = पिन ६बिट ५ = पिन १०बिट ६ = पिन ११बिट ७ = पिन १२बिट ८ = पिन १३ (यदि आप दशमलव बिंदु का उपयोग करना चाहते हैं) Arduino IDE में पहले आप देखते हैं कि हम डेटा और क्लॉक पिन को कहां परिभाषित करते हैं # डेटा परिभाषित करें 2 # घड़ी को परिभाषित करें 3 आगे हम सभी चार्टर पैटर्न को बाइनरी में सेट करते हैं, यह बहुत आसान है, नीचे दिए गए चित्र को देखें, यदि आपको मध्य खंड की आवश्यकता है एक में टाइप करें, अगला आपको शीर्ष खंड की आवश्यकता है, यदि ऐसा है तो दूसरे में टाइप करें, ऐसा तब तक करते रहें जब तक कि आप सभी 8 खंडों को कवर नहीं कर लेते, ध्यान दें कि मेरा सबसे दाहिना बिट (बिट 8) हमेशा 0 होता है, क्योंकि मैं कभी भी दशमलव को चालू नहीं करता हूं बिंदु। बाइट शून्य = B01111110; बाइट एक = B00000110; बाइट दो = B11011010; बाइट तीन = B11010110; बाइट चार = B10100110; बाइट पाँच = B11110100; बाइट छह = B11111100; बाइट सात = B01000110; बाइट आठ = B11111110; बाइट नौ = B11110110; शून्य सेटअप में हम अपने डेटा और घड़ी पिन को शून्य सेटअप () {पिनमोड (घड़ी, आउटपुट) आउटपुट पर सेट करते हैं; // क्लॉक पिन को आउटपुट पिनमोड (डेटा, OUTPUT) बनाएं; // डेटा पिन को एक आउटपुट 3} बनाएं, फिर शून्य लूप में हम प्रत्येक पैटर्न (संख्या) को प्रदर्शित करने के लिए शिफ्टऑट का उपयोग करते हैं, 1/2 सेकंड प्रतीक्षा करें और अगला, 0 से 9 प्रदर्शित करें, क्योंकि यह शून्य लूप फ़ंक्शन में किया जा रहा है यह गिना जाएगा 0-9 और हमेशा के लिए दोहराएं। शून्य लूप () {शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, शून्य); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, एक); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, दो); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, तीन); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, चार); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, पांच); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, छह); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, सात); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, आठ); देरी (500); शिफ्टऑट (डेटा, घड़ी, एलएसबीएफआईआरएसटी, नौ); देरी (500);}

चरण 7: प्रोजेक्ट 3 [पीटी 1]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले

प्रोजेक्ट 3 [पीटी 1]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले
प्रोजेक्ट 3 [पीटी 1]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले
प्रोजेक्ट 3 [पीटी 1]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले
प्रोजेक्ट 3 [पीटी 1]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले

4x4 एलईडी मैट्रिक्स परियोजना काफी अधिक जटिल है, लेकिन यह लगभग सभी निर्माण में है, मैं परफ़ॉर्म पर टांका लगाने का विकल्प चुनता हूं, लेकिन ब्रेडबोर्ड पर इसे दोहराना संभव होना चाहिए, बस बहुत अधिक दूरी पर। सर्किटरी भी इसमें अंतर है कि शिफ्ट रजिस्टर सीधे एलईडी नहीं चला रहा है, इसके बजाय शिफ्ट रजिस्टर आउटपुट को 1Kohm रेसिस्टर के माध्यम से NpN ट्रांजिस्टर के आधार पर भेजा जाता है, जब बिट का आउटपुट अधिक होता है, तो यह पर्याप्त करंट और वोल्टेज को पास करने देता है कलेक्टर और एमिटर के बीच कनेक्शन को स्विच करने के लिए ट्रांजिस्टर, कलेक्टरों को एक "मजबूत" विनियमित 5 वोल्ट से बांधा जाता है। ट्रांजिस्टर के उत्सर्जक 150 ओम प्रतिरोधों से जुड़े होते हैं और प्रतिरोधक एक पंक्ति में 4 एलईडी के एनोड से बंधे होते हैं और पंक्ति को 20ma तक सीमित करता है, हालांकि जब एक समय में केवल 1 एलईडी डिस्प्ले पर चित्र बनाते हैं, और इसलिए पूर्ण चमक के पास (क्योंकि वे पूरी छवि बनाने के लिए वास्तव में तेजी से चालू और बंद होते हैं) 4 पंक्तियाँ और 4 हैं कॉलम, प्रत्येक पंक्ति को एक रोकनेवाला और एक ट्रांजिस्टर मिलता है, प्रत्येक स्तंभ पर एलईडी के कैथोड एक साथ बंधे होते हैं, एक ट्रांजिस्टर के कलेक्टर में चले जाते हैं, जिसका आधार भी शिफ्ट रजिस्टर द्वारा नियंत्रित किया जाता है, और अंत में जमीन से बाहर हो जाता है। योजनाबद्ध www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ-j.webp

चरण 8: प्रोजेक्ट 3 [पीटी 2]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले

प्रोजेक्ट 3 [पीटी 2]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले
प्रोजेक्ट 3 [पीटी 2]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले
प्रोजेक्ट 3 [पीटी 2]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले
प्रोजेक्ट 3 [पीटी 2]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले
प्रोजेक्ट 3 [पीटी 2]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले
प्रोजेक्ट 3 [पीटी 2]: '2 वायर' 4x4 एलईडी मैट्रिक्स डिस्प्ले

शिफ्ट रजिस्टर एक YX प्रारूप में एलईडी के एनोड और कैथोड दोनों को नियंत्रित करता है, निम्नलिखित बिट 1 = कॉलम 1 (दाएं) बिट 2 = कॉलम 2 बिट 3 = कॉलम 3 बिट 4 = कॉलम 4 बिट 5 = पंक्ति 1 (सबसे ऊपरी) बिट देखें। ६ = पंक्ति २बिट ७ = पंक्ति ३बिट ८ = पंक्ति ४ एक चित्र बनाने के लिए ग्राफ़ पेपर पर एक ४x४ वर्ग बनाएं और उसमें भरें जिसे आप प्रदर्शित करना चाहते हैं, इसके बाद एक YX तालिका बनाएं। नीचे आप एक उपमा के लिए मैपिंग देखेंगे, साथ ही 4x4 "पिक्सेल" पर सबसे अच्छा कर सकते हैं प्रत्येक भरे हुए अनुभाग के लिए मैं लिखता हूं कि यह किस कॉलम (वाई) में है, फिर यह किस पंक्ति में है (एक्स) अब खोलें Arduino IDE में _4x4.pde फ़ाइल आप हमारे पुराने 2 दोस्तों को देखेंगे # डेटा 2 परिभाषित करें # घड़ी 3 परिभाषित करें फिर पूर्णांकों की एक सरणी int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; यदि आप इसे मेरे लिखित YX निर्देशांकों की एक सूची के रूप में देखते हैं, तो उन मूल्यों को हाथ से परिवर्तित करने के लिए बट में एक बड़ा दर्द होगा, और हमारे पास एक कंप्यूटर है … इसे करने दें! वहां पर आगे बढ़ना शून्य सेटअप है जहां हम हमारी घड़ी और डेटा पिन आउटपुट शून्य सेटअप () {पिनमोड (घड़ी, आउटपुट); // क्लॉक पिन को आउटपुट पिनमोड (डेटा, OUTPUT) बनाएं; // डेटा पिन को एक आउटपुट 3} और एक भ्रमित दिखने वाला शून्य लूप, चीजों को शुरू करने के लिए हमें कुछ स्थानीय चर घोषित करने की आवश्यकता है शून्य लूप () {इंट वाई; इंट एक्स; बाइट आउट; फिर लूप के लिए, इस लूप को img सरणी में प्रविष्टियों की मात्रा जितनी लंबी होनी चाहिए, इस छवि के लिए मैंने केवल 6 पिक्सेल का उपयोग किया है, जिससे 12 YX निर्देशांक बनाता है। मैं इसे i +=2 का उपयोग करके हर दूसरे नंबर को छोड़ देता हूं, क्योंकि हम प्रति लूप के लिए 2 निर्देशांक पढ़ते हैं (int i = 0; i <12; i += 2) // img सरणी में अंकों की संख्या, इस मामले में १२ { अब हम सरणी में पर Y प्रविष्टि पढ़ते हैं, और एक को उसके मान से घटाते हैं, क्योंकि बाइट्स एक से शुरू नहीं होते हैं, वे शून्य से शुरू होते हैं, लेकिन हम 1 // से गिनते हैं, YX डोरियों की पहली जोड़ी प्राप्त करते हैं वाई = (आईएमजी - 1); // एक घटाएं क्योंकि बिट की गिनती 0 से शुरू होती है, इसके बाद हम सरणी में [i + 1] पर X प्रविष्टि पढ़ते हैं, और उसी कारण X = (img[i+1] - 1 के कारण, उसके मान से एक घटाते हैं।); हमारे पास पिक्सेल के YX मान होने के बाद, हम कुछ बिटवाइज़ या गणित करते हैं और बाईं ओर शिफ्टिंग करते हैं। पहले हमें X मान को पढ़ने की आवश्यकता होती है, और जो कुछ भी इसका मान शिफ्ट होता है, उसे कई स्थानों पर + 4 छोड़ दिया जाता है, इसलिए यदि X 4 है और 4 जोड़ें यह बिट 8 (एमएसबी) है, चार्ट को फिर से देख रहे हैं … बिट 1 = कॉलम 1 (दाएं) बिट 2 = कॉलम 2 बिट 3 = कॉलम 3 बिट 4 = कॉलम 4 बिट 5 = पंक्ति 1 (सबसे ऊपर) बिट 6 = पंक्ति 2 बिट ७ = पंक्ति ३बिट ८ = पंक्ति ४बिट ८ अंतिम पंक्ति है अगला वाई मान भी बाईं ओर स्थानांतरित कर दिया गया है, इस बार केवल अपने आप से, कुछ भी नहीं जोड़ा गया है। अंत में दोनों को २ हाफ बाइट्स के बजाय १ बाइट में एक साथ जोड़ा गया है। (निबल्स), बिटवाइज़ का उपयोग करके या (प्रतीक |) दो बाइट्स लेता है और मूल रूप से उन्हें एक साथ जोड़ता है, मान लें कि X = १०००००००वाई = ००००००००१---------------------- या = 10000001पंक्ति 4 कॉलम 1 आउट = 1 << (X + 4) | 1 << वाई; और अंत में वर्तमान तस्वीर को प्रदर्शित करने के लिए शिफ्ट आउट करें, और ऐसा तब तक करते रहें जब तक हमारे पास सरणी में कोई और डेटा न हो … शिफ्ट रजिस्टर में से इसे पहले भेजें। शिफ्टऑट (डेटा, घड़ी, MSBFIRST, आउट); // बाइट को हमारे रजिस्टर डिले (1) में शिफ्ट करें; // इसे थोड़ा विलंब करें ताकि आपकी आंखों में प्रकाश का एक स्थान छोड़ने का मौका मिले, अपनी खुद की छवियां, और प्रभाव बनाने के लिए स्वतंत्र महसूस करें, 3 नमूना फाइलें हैं, स्माइली चेहरा और एक चेकरबोर्ड (जो धारियों की तरह दिखता है), और अंत में एक यादृच्छिक चमक निर्माता

चरण 9: निष्कर्ष

निष्कर्ष
निष्कर्ष
निष्कर्ष
निष्कर्ष
निष्कर्ष
निष्कर्ष

इस सब के अलावा यह एक बहुत ही आसान छोटी चिप है, और मुझे खुशी है कि मैंने इसे इलेक्ट्रॉनिक्स के एक पुराने टुकड़े से हटा दिया, जो कूड़ेदान में चला गया। इसका उपयोग डिस्प्ले सिस्टम के अलावा अन्य चीजों के लिए भी किया जा सकता है, लेकिन सभी को रोशनी और देखने की त्वरित प्रतिक्रिया पसंद है। जो चल रहा है वह I जैसे दृश्य विचारकों के लिए बेहद मददगार है। कृपया मेरे कोड को भी क्षमा करें, मेरे पास अक्टूबर के तीसरे सप्ताह के बाद से केवल arduino है, और यह एक बहुत बड़ा क्रैश कोर्स रहा है।लेकिन सिस्टम के बारे में यह बहुत अच्छी बात है, अगर आप बैठते हैं और इसके साथ काम करते हैं, तो इसकी साफ-सुथरी विशेषताओं से भरा हुआ है जो कि 8 बिट माइक्रोकंट्रोलर के साथ दुनिया को नियंत्रित करना काफी आसान है। हमेशा की तरह प्रश्नों और टिप्पणियों का स्वागत है, और इसके लिए धन्यवाद पढ़ना, मुझे आशा है कि आपने बहुत कुछ सीखा

सिफारिश की: