विषयसूची:

64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन: 12 कदम (चित्रों के साथ)
64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन: 12 कदम (चित्रों के साथ)

वीडियो: 64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन: 12 कदम (चित्रों के साथ)

वीडियो: 64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन: 12 कदम (चित्रों के साथ)
वीडियो: Maker Monday - Adding text to Tetris Animation library 2024, नवंबर
Anonim
64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन
64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन
64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन
64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन
64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन
64 पिक्सेल आरजीबी एलईडी डिस्प्ले - एक और Arduino क्लोन

यह डिस्प्ले 8x8 RGB LED मैट्रिक्स पर आधारित है। परीक्षण उद्देश्यों के लिए इसे 4 शिफ्ट रजिस्टरों का उपयोग करके एक मानक Arduino बोर्ड (Diecimila) से जोड़ा गया था। इसे काम करने के बाद मैंने इसे एक फैबेड पीसीबी पर अनुमति दी। शिफ्ट रजिस्टर 8-बिट चौड़े हैं और एसपीआई प्रोटोकॉल के साथ आसानी से जुड़े हुए हैं। पल्स चौड़ाई मॉडुलन का उपयोग रंगों को मिलाने के लिए किया जाता है, उस पर और बाद में। एमसीयू की रैम का हिस्सा छवि को पकड़ने के लिए फ्रेमबफर के रूप में उपयोग किया जाता है। वीडियो रैम को पृष्ठभूमि में एक इंटरप्ट रूटीन द्वारा पार्स किया जाता है, इसलिए उपयोगकर्ता पीसी से बात करने, बटन पढ़ने और पोटेंशियोमीटर जैसे अन्य उपयोगी काम कर सकता है। "Arduino" के बारे में अधिक जानकारी: www.arduino.cc

चरण 1: रंगों को मिलाने के लिए पल्स चौड़ाई मॉडुलन

रंगों के मिश्रण के लिए पल्स चौड़ाई मॉडुलन
रंगों के मिश्रण के लिए पल्स चौड़ाई मॉडुलन

पल्स चौड़ाई मोडू - क्या? पल्स चौड़ाई मॉडुलन अनिवार्य रूप से बिजली के उपकरण को बिजली चालू और बंद कर रहा है। एक अवधि के अंतराल में लिए गए वर्ग-तरंग फ़ंक्शन के गणितीय औसत से प्रयोग करने योग्य शक्ति का परिणाम होता है। फ़ंक्शन जितनी देर तक ON स्थिति में रहता है, आपको उतनी ही अधिक शक्ति मिलती है। पीडब्लूएम का एसी रोशनी पर एक डिमर के रूप में एलईडी की चमक पर समान प्रभाव पड़ता है। आगे का कार्य एक सस्ते और आसान तरीके से 64 आरजीबी एलईडीएस (= 192 सिंगल एलईडी!) की चमक को व्यक्तिगत रूप से नियंत्रित करना है, ताकि कोई भी पूरा प्राप्त कर सके रंगों का स्पेक्ट्रम। अधिमानतः कोई झिलमिलाहट या अन्य परेशान करने वाले प्रभाव नहीं होने चाहिए। मानव आंख द्वारा प्रदर्शित चमक की गैर-रेखीय धारणा को यहां ध्यान में नहीं रखा जाएगा (उदाहरण के लिए 10% और 20% चमक के बीच का अंतर 90% और 100% के बीच की तुलना में "बड़ा" लगता है)। छवि (1) के कार्य सिद्धांत को दर्शाती है पीडब्लूएम एल्गोरिथ्म। मान लें कि एलईडी की चमक के लिए कोड को 7 का मान दिया गया है (0, 0)। इसके अलावा यह जानता है कि चमक में अधिकतम एन चरण हैं। कोड चमक के सभी संभावित स्तरों के लिए एन लूप चलाता है और सभी पंक्तियों में प्रत्येक एलईडी की सेवा के लिए सभी आवश्यक लूप चलाता है। यदि ब्राइटनेस लूप में लूप काउंटर x 7 से छोटा है, तो एलईडी चालू है। यदि यह 7 से बड़ा है, तो एलईडी बंद है। सभी एल ई डी, ब्राइटनेस लेवल और बेस कलर्स (आरजीबी) के लिए यह बहुत जल्दी करना, प्रत्येक एलईडी को वांछित रंग दिखाने के लिए व्यक्तिगत रूप से समायोजित किया जा सकता है। ऑसिलोस्कोप के साथ माप से पता चलता है कि डिस्प्ले रीफ्रेश कोड में लगभग 50% CPU समय लगता है। बाकी का उपयोग पीसी के साथ धारावाहिक संचार करने, बटन पढ़ने, RFID रीडर से बात करने, I भेजने के लिए किया जा सकता है2अन्य मॉड्यूल के लिए सी डेटा…

चरण 2: शिफ्ट रजिस्टर और एलईडी से बात करना

शिफ्ट रजिस्टर और एलईडी से बात कर रहे हैं
शिफ्ट रजिस्टर और एलईडी से बात कर रहे हैं
शिफ्ट रजिस्टर और एलईडी से बात कर रहे हैं
शिफ्ट रजिस्टर और एलईडी से बात कर रहे हैं

एक शिफ्ट रजिस्टर एक ऐसा उपकरण है जो डेटा को क्रमिक रूप से लोड करने और समानांतर आउटपुट की अनुमति देता है। उपयुक्त चिप के साथ विपरीत ऑपरेशन भी संभव है। Arduino वेबसाइट पर शिफ्ट रजिस्टर पर एक अच्छा ट्यूटोरियल है। एलईडी 74HC595 प्रकार के 8-बिट शिफ्ट रजिस्टरों द्वारा संचालित होते हैं। प्रत्येक पोर्ट लगभग 25mA करंट का स्रोत या सिंक कर सकता है। सिंक या स्रोत प्रति चिप कुल धारा 70mA से अधिक नहीं होनी चाहिए। ये चिप्स बेहद सस्ते हैं, इसलिए प्रति पीस लगभग 40 सेंट से अधिक का भुगतान न करें। चूंकि एल ई डी में एक घातीय वर्तमान/वोल्टेज विशेषता होती है, इसलिए वर्तमान सीमित प्रतिरोधी होने की आवश्यकता होती है। ओम के नियम का उपयोग करना: आर = (वी - वीएफ) / आईआर = सीमित प्रतिरोधी, वी = 5 वी, वीएफ = एलईडी का आगे वोल्टेज, मैं = वांछित वर्तमान लाल एल ई डी लगभग 1.8V का आगे वोल्टेज है, नीले और हरे रंग की सीमा 2.5V से 3.5V तक है। इसे निर्धारित करने के लिए एक साधारण मल्टीमीटर का उपयोग करें। उचित रंग प्रजनन के लिए किसी को कुछ चीजों को ध्यान में रखना चाहिए: मानव आंख की वर्णक्रमीय संवेदनशीलता (लाल/नीला: खराब, हरा: अच्छा), एक निश्चित तरंग दैर्ध्य और वर्तमान में एलईडी की दक्षता। व्यवहार में एक व्यक्ति केवल 3 पोटेंशियोमीटर लेता है और उन्हें तब तक समायोजित करता है जब तक कि एलईडी उचित सफेद रोशनी न दिखा दे। बेशक अधिकतम एलईडी करंट को पार नहीं किया जाना चाहिए। यहां यह भी महत्वपूर्ण है कि पंक्तियों को चलाने वाले शिफ्ट रजिस्टर में 3x8 एलईडी को करंट की आपूर्ति होनी चाहिए, इसलिए बेहतर है कि करंट को बहुत ऊपर न धकेलें। मैं सभी एलईडी के लिए 270Ohm के प्रतिरोधों को सीमित करने में सफल रहा, लेकिन यह निश्चित रूप से एलईडी मैट्रिक्स के निर्माण पर निर्भर करता है। शिफ्ट रजिस्टरों को SPI सीरियल के साथ जोड़ा जाता है। SPI = सीरियल पेरिफेरल इंटरफ़ेस (छवि (1))। पीसी पर सीरियल पोर्ट (एसिंक्रोनस, नो क्लॉक सिग्नल) के विपरीत, SPI को क्लॉक लाइन (SRCLK) की आवश्यकता होती है। फिर डेटा वैध होने पर डिवाइस को बताने वाली सिग्नल लाइन होती है (चिप चयन/लच/आरसीएलके)। अंत में दो डेटा लाइनें हैं, एक को MOSI (मास्टर आउट स्लेव इन) कहा जाता है, दूसरे को MISO (मास्टर इन स्लेव आउट) कहा जाता है। SPI का उपयोग I. की तरह ही एकीकृत परिपथों को इंटरफ़ेस करने के लिए किया जाता है2C. इस परियोजना को MOSI, SRCLK और RCLK की आवश्यकता है। इसके अतिरिक्त सक्षम लाइन (जी) का भी उपयोग किया जाता है। RCLK लाइन को LOW (छवि (2)) पर खींचकर एक SPI चक्र शुरू किया जाता है। MCU अपना डेटा MOSI लाइन पर भेजता है। इसकी तार्किक स्थिति को SRCLK लाइन के राइजिंग एज पर शिफ्ट रजिस्टर द्वारा सैंपल किया जाता है। RCLK लाइन को वापस हाई पर खींचकर चक्र को समाप्त किया जाता है। अब डेटा आउटपुट पर उपलब्ध है।

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

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

चित्र (१) दिखाता है कि शिफ्ट रजिस्टरों को कैसे तार-तार किया जाता है। वे डेज़ी-जंजीर हैं, इसलिए डेटा को इस श्रृंखला में और इसके माध्यम से भी स्थानांतरित किया जा सकता है। इसलिए अधिक शिफ्ट रजिस्टर जोड़ना आसान है।

छवि (2) एमसीयू, कनेक्टर, क्वार्ट्ज के साथ शेष योजनाबद्ध दिखाती है … संलग्न पीडीएफ फाइल में प्रिंटिंग के लिए सर्वोत्तम कार्य शामिल हैं।

चरण 4: सी ++ स्रोत कोड

सी++ सोर्स कोड
सी++ सोर्स कोड
सी++ सोर्स कोड
सी++ सोर्स कोड
सी++ सोर्स कोड
सी++ सोर्स कोड

सी/सी++ में आमतौर पर किसी को कोडिंग करने से पहले कार्यों को प्रोटोटाइप करना पड़ता है। }Arduino IDE को इस चरण की आवश्यकता नहीं है, क्योंकि फ़ंक्शन प्रोटोटाइप स्वचालित रूप से उत्पन्न होते हैं। इसलिए फंक्शन प्रोटोटाइप यहां दिखाए गए कोड में दिखाई नहीं देंगे। इमेज (1): सेटअप () फंक्शनइमेज (2): spi_transfer() ATmega168 चिप के हार्डवेयर SPI का उपयोग करके (तेजी से चलता है) इमेज (3): फ्रेमबफर कोड का उपयोग करके एक टाइमर1 ओवरफ्लो इंटरप्ट। कोड के टुकड़े जो शुरुआती लोगों के लिए थोड़ा गूढ़ रूप है जैसे जबकि(!(SPSR & (1<<SPIF))) {} सीधे MCU के रजिस्टरों का उपयोग करें। यह उदाहरण शब्दों में है: "जबकि एसपीआईएफ-बिट रजिस्टर में एसपीएसआर सेट नहीं है, कुछ भी न करें"। मैं केवल इस बात पर जोर देना चाहता हूं कि मानक परियोजनाओं के लिए हार्डवेयर से इतनी निकटता से इन चीजों से निपटना वास्तव में आवश्यक नहीं है। शुरुआती लोगों को इससे डरना नहीं चाहिए।

चरण 5: समाप्त गैजेट

समाप्त गैजेट
समाप्त गैजेट
समाप्त गैजेट
समाप्त गैजेट
समाप्त गैजेट
समाप्त गैजेट

सभी समस्याओं को हल करने और कोड चलाने के बाद, मुझे बस एक पीसीबी लेआउट बनाना था और उसे एक फैब हाउस में भेजना था। यह बहुत साफ दिखता है:-) छवि (1): पूरी तरह से आबादी वाला नियंत्रक बोर्ड छवि (2): नंगे पीसीबी के सामने की तरफ छवि (2): पीछे की तरफ ATmega168/328 चिप और 5V/GND के PORTC और PORTD को तोड़ने वाले कनेक्टर हैं. इन बंदरगाहों में सीरियल RX, TX लाइनें, I. शामिल हैं2सी लाइन, डिजिटल आई/ओ लाइन और 7 एडीसी लाइनें। यह बोर्ड के पीछे ढालों को ढेर करने के लिए है। स्पेसिंग परफ़बोर्ड (0.1in) का उपयोग करने के लिए उपयुक्त है। बूटलोडर को ICSP हेडर (adafruit के USBtinyISP के साथ काम करता है) का उपयोग करके फ्लैश किया जा सकता है। जैसे ही यह किया जाता है, बस एक मानक FTDI USB/TTL सीरियल एडेप्टर या इसी तरह का उपयोग करें। मैंने एक ऑटो-रीसेट-अक्षम जम्पर भी जोड़ा है। मैंने एक छोटी पर्ल स्क्रिप्ट भी तैयार की है (मेरा ब्लॉग देखें), जो एफटीडीआई केबल्स के साथ ऑटो-रीसेट को सक्षम बनाता है जो आमतौर पर बॉक्स से बाहर काम नहीं करता है (आरटीएस बनाम डीटीआर लाइन)। यह लिनक्स पर काम करता है, शायद मैक पर। मेरे ब्लॉग पर मुद्रित सर्किट बोर्ड और कुछ DIY किट उपलब्ध हैं। एसएमडी सोल्डरिंग की आवश्यकता है! एलईडी मैट्रिसेस के लिए निर्देश और स्रोत बनाने के लिए पीडीएफ फाइलें देखें।

चरण 6: आवेदन: पर्ल का उपयोग कर लिनक्स के लिए सीपीयू लोड मॉनिटर

यह इतिहास की साजिश के साथ एक बहुत ही बुनियादी लोड मॉनिटर है। यह एक पर्ल स्क्रिप्ट पर आधारित है जो iostat का उपयोग करके प्रत्येक 1s पर सिस्टम के "लोड औसत" को एकत्रित करता है। डेटा एक सरणी में संग्रहीत किया जाता है जिसे प्रत्येक अद्यतन पर स्थानांतरित किया जाता है। सूची के शीर्ष पर नया डेटा जोड़ा जाता है, सबसे पुरानी प्रविष्टि को धक्का दिया जाता है। अधिक विस्तृत जानकारी और डाउनलोड (कोड…) मेरे ब्लॉग पर उपलब्ध हैं।

चरण 7: आवेदन: I²C. का उपयोग करके अन्य मॉड्यूल से बात करना

आवेदन: I²C. का उपयोग करके अन्य मॉड्यूल से बात करना
आवेदन: I²C. का उपयोग करके अन्य मॉड्यूल से बात करना

यह केवल सिद्धांत का प्रमाण है और इस कार्य के लिए अब तक का सबसे सरल समाधान नहीं है। I. का उपयोग करना2सी 127 "दास" बोर्डों को सीधे संबोधित करने की अनुमति देता है। यहां वीडियो में दाईं ओर का बोर्ड "मास्टर" है (जो सभी स्थानान्तरण शुरू करता है), बायां बोर्ड गुलाम है (डेटा की प्रतीक्षा कर रहा है)। मैं2सी को 2 सिग्नल लाइनों और सामान्य बिजली लाइनों (+, -, एसडीए, एससीएल) की जरूरत है। चूंकि यह एक बस है, सभी डिवाइस समानांतर में इससे जुड़े हुए हैं।

चरण 8: आवेदन: "गेम क्यूब":-)

आवेदन
आवेदन

बस एक सनकी विचार। यह परिचय पृष्ठ पर दिखाए गए लकड़ी के बाड़े में भी फिट बैठता है। इसके पिछले हिस्से में ५ बटन हैं जिनका उपयोग साधारण गेम खेलने के लिए किया जा सकता है। अंत ?

चरण 9: मैट्रिक्स पर चित्र / एनिमेशन प्रदर्शित करना - त्वरित हैक

मैट्रिक्स पर चित्र / एनिमेशन प्रदर्शित करना - त्वरित हैक
मैट्रिक्स पर चित्र / एनिमेशन प्रदर्शित करना - त्वरित हैक
मैट्रिक्स पर चित्र / एनिमेशन प्रदर्शित करना - त्वरित हैक
मैट्रिक्स पर चित्र / एनिमेशन प्रदर्शित करना - त्वरित हैक
मैट्रिक्स पर चित्र / एनिमेशन प्रदर्शित करना - त्वरित हैक
मैट्रिक्स पर चित्र / एनिमेशन प्रदर्शित करना - त्वरित हैक
मैट्रिक्स पर छवियाँ / एनिमेशन प्रदर्शित करना - त्वरित हैक
मैट्रिक्स पर छवियाँ / एनिमेशन प्रदर्शित करना - त्वरित हैक

तो इसमें केवल 8x8 पिक्सेल और कुछ रंग उपलब्ध हैं। पहले Gimp जैसी किसी चीज़ का उपयोग करके अपनी पसंदीदा छवि को ठीक 8x8 पिक्सेल तक स्केल करें और इसे ".ppm" कच्चे प्रारूप (ASCII नहीं) के रूप में सहेजें। पीपीएम को पर्ल स्क्रिप्ट में पढ़ना और संसाधित करना आसान है। ImageMagick और कमांड लाइन टूल "कन्वर्ट" का उपयोग करना ठीक से काम नहीं करेगा। नया arduino कोड अपलोड करें, फिर नियंत्रक पर अपलोड करने के लिए पर्ल स्क्रिप्ट का उपयोग करें। झिलमिलाहट एलईडी रीफ्रेश और मेरे कैमरे की फ्रेम दर का सिर्फ एक मेल नहीं है। कोड को थोड़ा अपडेट करने के बाद, यह काफी ज़िप्पी चलता है। जैसा कि आप देखते हैं, सभी छवियों को सीरियल पर लाइव स्थानांतरित किया जाता है। लंबे एनिमेशन को बाहरी ईईपीरोम में संग्रहीत किया जा सकता है जैसे कि यह विभिन्न स्पोक-पीओवी बोर्डों में किया जाता है।

चरण 10: संग्रहीत एनिमेशन का इंटरएक्टिव नियंत्रण

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

चरण 11: लाइव वीडियो दिखा रहा है

पर्ल स्क्रिप्ट और कुछ मॉड्यूल का उपयोग करने से X11 सिस्टम पर अर्ध लाइव वीडियो दिखाना काफी आसान हो जाता है। यह लिनक्स पर कोडित था और मैक पर भी काम कर सकता है। यह इस तरह काम करता है: - माउस कर्सर की स्थिति प्राप्त करें- कर्सर पर केंद्रित एनएक्सएन पिक्सेल के एक बॉक्स को कैप्चर करें- छवि को 8x8 पिक्सेल तक स्केल करें- इसे एलईडी बोर्ड पर भेजें- दोहराना

चरण 12: अधिक प्रकाश लगभग निःशुल्क

अधिक प्रकाश लगभग निःशुल्क
अधिक प्रकाश लगभग निःशुल्क

केवल दो चरणों के साथ चमक को थोड़ा बढ़ाया जा सकता है। 270Ω प्रतिरोधों को 169Ω वाले से बदलें और IC5 पर एक और 74HC595 शिफ्ट रजिस्टर पिगीबैक करें।

सिफारिश की: