2009-07-15 9 views
5

को नियंत्रित करने में समस्याएं मैंने व्यक्तिगत एल ई डी (आरजीबी मैट्रिक्स नहीं) के लोड को नियंत्रित करने के लिए अभी Rainbowduino खरीदा है। अब तक सभी दस्तावेज आरजीबी सरणी को नियंत्रित करने की दिशा में लक्षित हैं जो नहीं है जो मैं कर रहा हूं।रेनबाउडुइनो

यदि आप रेनबाउडुइनो से अपरिचित हैं तो यह Arduino क्लोन है जिसमें 120 एमए के 24 निरंतर वर्तमान चैनल, 500 एमए के 8 सुपर सोर्स ड्राइवर चैनल और 5 वी -12 वी डीसी से विस्तृत आउटपुट वोल्टेज अनुकूलन है। एल ई डी ड्राइविंग के लिए बिल्कुल सही। उत्पाद वेबपृष्ठ यहां है: http://www.seeedstudio.com/blog/?page_id=187

मैंने 16 एल ई डी कनेक्ट किए हैं और प्रत्येक को digitalWrite() के साथ व्यक्तिगत रूप से चालू और बंद करने में सक्षम होना चाहते हैं। मैंने बोर्ड में कुछ डेमो कोड अपलोड कर लिया है जो वास्तव में काम नहीं कर रहा है। मैंने काम किया है कि 8 ड्राइवर स्रोत चैनल पिन 3-11 पर digitalWrite() के साथ आसानी से नियंत्रित किए जा सकते हैं। हालांकि अन्य 24 सिंक चैनलों को नियंत्रित करना अधिक कठिन है। जाहिर है, वे 3 शिफ्ट रजिस्टरों (एक प्रत्येक) द्वारा नियंत्रित होते हैं जिन्हें मैं केवल shiftOut के साथ एक्सेस कर सकता हूं। मुझे नहीं पता कि यह कैसे काम करता है। क्या कोई मुझे सही दिशा में इंगित करने में मदद कर सकता है?

आधा एल ई डी ब्लू 1-8 में तारित किया जाता है और दूसरा आधा ग्रीन 1-8 में वायर्ड किया जाता है। सकारात्मक पैर VCC1-2 में वायर्ड होते हैं जिन्हें उच्च पर सेट किया गया है। मुझे विश्वास है कि सर्किट सही ढंग से वायर्ड हो गया है, यह प्रोग्रामिंग है जिसमें मुझे समस्याएं हैं।

मैंने रेनबॉडुइनो के साथ भेजे गए नमूना कोड को देखा है, लेकिन मैं इसका एहसास नहीं कर सकता। मैं इस समस्या को कैसे ठीक करुं?

+0

अब तक मेरी सर्किट की एक तस्वीर: http://farm3.static.flickr.com/2436/3716019895_99b95b30c6_b.jpg इसके अलावा, रेनबाउडुइनो नमूना स्केच का एक लिंक है: http://www.seeedstudio.com/depot/images/product/RaibowduinoCMD_Bata.rar – James

+0

"ए 3 शिफ्ट रजिस्टर" से आपका क्या मतलब है? – unwind

+0

जो कुछ मुझे किसी और ने बताया था, मुझे लगता है कि यह एक 3 बिट शिफ्ट रजिस्टर है। – James

उत्तर

3

मल्टीप्लेक्स (या डी-मल्टीप्लेक्स, आपके दृष्टिकोण के आधार पर) में एक शिफ्ट रजिस्टर का उपयोग डिजिटल इलेक्ट्रॉनिक्स में इनपुट/आउटपुट बहुत आम है।

असल में, आप डिज़ाइन में एक और चिप (शिफ्ट रजिस्टर) शामिल करने के लिए अपने नियंत्रक पर बचत पिन का व्यापार करते हैं।

इस मामले में, रजिस्टर एक सीरियल-टू-समांतर कनवर्टर के रूप में काम करता है; इसमें सीरियल इनपुट लाइन है, जिसे आपके सीपीयू से बिट्स से खिलाया जाता है। इसमें 8 समानांतर आउटपुट भी हैं, जो 8-बिट मेमोरी से जुड़े होते हैं जो सीपीयू से क्रमशः लोड होते हैं। इसका उपयोग करके, आप एक पिन पर डेटा के 8 बिट्स (आमतौर पर घड़ी के लिए एक पिन) "शिफ्ट आउट" कर सकते हैं, जिसे शिफ्ट रजिस्टर में संग्रहीत किया जाता है और समानांतर में 8 एल ई डी ड्राइव कर सकता है।

इस विशेष मामले में, आपको यह पता लगाना होगा कि कौन सी एवीआर पोर्ट शिफ्ट रजिस्टरों को पिन करता है (एमबीआई5168 निरंतर-वर्तमान सिंक ड्राइवरों में शिफ्ट रजिस्ट्रार होते हैं, यहां से जुड़े होते हैं)। उन्हें आउटपुट की एक जोड़ी, डेटा के लिए एक और घड़ी के लिए एक जंजीर होना चाहिए। एक बार जब आप उन पिनों को जानते हैं, तो आप उन्हें ShiftOut कमांड का उपयोग करके स्वयं ड्राइव करने में सक्षम होना चाहिए।

थोड़ा आगे खुदाई, this sample "sketch" निम्नलिखित परिभाषा, फ़ाइल "Rainbow.h" कहा जाता है में शामिल हैं:

//MBI5168 
#define SH_DIR_OE DDRC 
#define SH_DIR_SDI DDRC 
#define SH_DIR_CLK DDRC 
#define SH_DIR_LE DDRC 

#define SH_BIT_OE 0x08 
#define SH_BIT_SDI 0x01 
#define SH_BIT_CLK 0x02 
#define SH_BIT_LE 0x04 

#define SH_PORT_OE PORTC 
#define SH_PORT_SDI PORTC 
#define SH_PORT_CLK PORTC 
#define SH_PORT_LE PORTC 

इस कोर्स की कुल डिजिटल "अफवाह" (मैं डिवाइस के स्वामी नहीं है, मैंने कभी भी किसी भी प्रकार की * डुनोनो पर प्रोग्राम नहीं किया है), लेकिन मैं कहूंगा कि यह कण-स्पूइंग बुलेट डिलीवरी सिस्टम है जिसे आप ढूंढ रहे हैं।

मैं तो इस तरह की व्याख्या:

  • PORTC एक पारी रजिस्टरों से जुड़ा है, सभी नियंत्रण पिंस PORTC में हैं।
  • चार पिन समर्पित हैं (ऊपर वर्णित आशावादी दो के बजाय)।
  • घड़ी पिन PORTC है: 2 और डेटा PORTC है: 1।
+0

धन्यवाद, मैं शिफ्ट रजिस्टरों की मूल बातें से परिचित हूं, लेकिन मुझे नहीं पता कि कौन से 2 बंदरगाह (डेटा पिन और घड़ी पिन) मुझे प्रत्येक चैनल के लिए उपयोग करने की आवश्यकता है। – James

+0

बहुत धन्यवाद फिर से खोलें। मैंने आपके जवाब का उपयोग कल शामबोडुइनो को नमूना कोड के साथ किया था (यहां: http://www.seeedstudio.com/blog/?p=512) और अब यह पूरी तरह से काम कर रहा है। यहां वीडियो: http://www.youtube.com/watch?v=t9m28RFg14E – James

2

प्रत्येक एकल एलईडी को नियंत्रित करना काफी महंगा है, पंक्तियों में सोचना बेहतर है, जबकि प्रत्येक एलईडी रंग थोड़ा सा प्रस्तुत किया जाता है, इसलिए यह 8 बिट्स x 3 रंग (लाल, हरा, नीला) होता है। मैं जिसे आप आसानी से प्रत्येक पंक्ति या फ्रेम स्थापित करने के लिए अनुमति देता है एक छोटा सा Rainbowduino पुस्तकालय लिखा है:

Read my blog post on that

+1

आह, एक और मेरा Rainbowduino संपादक देखें: mtXcontrol भी: http://www.rngtng.com/mtXcontrol – RngTng