- आवश्यक सामग्री:
- सर्किट आरेख:
- प्रोग्रामिंग स्पष्टीकरण:
- निमिष एलईडी अनुक्रम के लिए हार्डवेयर सेटअप:
- अपलोड करना और काम करना:
यह ट्यूटोरियल के अनुक्रम का दूसरा ट्यूटोरियल है जिसमें हम Energia IDE का उपयोग करके टेक्सास इंस्ट्रूमेंट्स से MSP430G2 लॉन्चपैड सीख रहे हैं । अंतिम ब्लिंक एलईडी ट्यूटोरियल में हमने लॉन्चपैड डेवलपमेंट बोर्ड और एनर्जिया आईडीई के लिए अपना स्वयं का परिचय दिया, हमने अपना पहला कार्यक्रम भी अपलोड किया, जो नियमित अंतराल पर एलईडी को ब्लिंक करने के लिए है।
इस ट्यूटोरियल में हम सीखेंगे कि स्विच जैसे इनपुट डिवाइस की स्थिति को पढ़ने के लिए डिजिटल रीड एंड डिजिटल राइट विकल्प का उपयोग कैसे करें और एलईडी जैसे कई आउटपुट को नियंत्रित करें। इस ट्यूटोरियल के अंत में आपने डिजिटल इनपुट और आउटपुट के साथ काम करना सीख लिया होगा, जिसका उपयोग कई डिजिटल सेंसर जैसे IR सेंसर, पीआईआर सेंसर आदि को इंटरफेस करने के लिए किया जा सकता है और साथ ही एलईडी, बजर आदि जैसे आउटपुट को चालू या बंद करना भी दिलचस्प लगता है। सही!!? आएँ शुरू करें।
आवश्यक सामग्री:
- MSP430G2 लॉन्चपैड
- किसी भी रंग का एलईडी - 8
- स्विच - 2
- 1k रेसिस्टर - 8
- तारों को जोड़ना
सर्किट आरेख:
हमारे पिछले ट्यूटोरियल में, हमने देखा कि लॉन्च पैड स्वयं दो एलईडी और बोर्ड पर एक स्विच के साथ आता है। लेकिन इस ट्यूटोरियल में हमें इससे ज्यादा की जरूरत होगी, क्योंकि हम एक बटन दबाने पर आठ एलईडी लाइट्स को एक क्रम में चमकाने की योजना बना रहे हैं । हम उस क्रम को भी बदल देंगे जब एक और बटन दबाया जाता है ताकि वह दिलचस्प हो सके। इसलिए हमें 8 एलईडी लाइट और दो स्विच के साथ एक सर्किट बनाना होगा, पूरा सर्किट आरेख नीचे पाया जा सकता है।
यहां 8 एलईडी आउटपुट हैं और दो स्विच इनपुट हैं। हम इन्हें बोर्ड पर किसी भी I / O पिन से जोड़ सकते हैं लेकिन मैंने LRD को पिन P1.0 से P2.1 से जोड़ा है और क्रमशः ऊपर दिखाए गए अनुसार P2.4 और P2.3 को पिन 1 और 2 पर स्विच किया है।
एलईडी के सभी कैथोड पिन जमीन से जुड़े होते हैं और एनोड पिन एक रेज़र के माध्यम से I / O पिंस से जुड़ा होता है। इस रोकनेवाला को करंट लिमिटिंग रोकनेवाला कहा जाता है, यह प्रतिरोधक MSP430 के लिए अनिवार्य नहीं है क्योंकि यह I / O पिन का अधिकतम करंट स्रोत केवल 6mA है और पिन पर वोल्टेज केवल 3.6V है। हालाँकि इनका उपयोग करना एक अच्छा अभ्यास है। जब इनमें से कोई भी डिजिटल पिन हाई जाएगा तो संबंधित एलईडी चालू हो जाएगी। यदि आप पिछले ट्यूटोरियल एलईडी प्रोग्राम को याद कर सकते हैं, तो आपको याद होगा कि digitalWrite (LED_pin_name, HIGH) एलईडी चमक बनाएगा और digitalWrite (LED_pin_name, LOW) एलईडी का रुख करेगा।
स्विच इनपुट डिवाइस हैं, स्विच का एक सिरा ग्राउंड टर्मिनल से जुड़ा है और दूसरा डिजिटल पिन P2.3 और P2.4 से जुड़ा है। इसका मतलब यह है कि जब भी हम स्विच को दबाएंगे I / O पिन (2.3 या 2.4) ग्राउंड हो जाएगा और अगर बटन नहीं दबाया जाता है तो उसे फ्री छोड़ दिया जाएगा। आइए देखें कि प्रोग्रामिंग करते समय हम इस व्यवस्था का उपयोग कैसे कर सकते हैं।
प्रोग्रामिंग स्पष्टीकरण:
जब स्विच 1 दबाया जाता है और तब स्विच 2 दबाया जाता है तो अनुक्रम को बदलना पड़ता है, तब प्रोग्राम को 8 एलईडी को अनुक्रम तरीके से नियंत्रित करना लिखा जाता है। पूरा कार्यक्रम और प्रदर्शन वीडियो इस पेज के नीचे पाया जा सकता है। इसके आगे मैं प्रोग्राम लाइन को लाइन से समझाऊंगा ताकि आप इसे आसानी से समझ सकें।
हमेशा की तरह हमें शून्य सेटअप () फ़ंक्शन के साथ शुरू करना चाहिए जिसके अंदर हम उन पिनों की घोषणा करेंगे जिनका हम उपयोग कर रहे हैं इनपुट या आउटपुट पिन। हमारे कार्यक्रम में 8 एलईडी पिन आउटपुट हैं और 2 स्विच इनपुट हैं। ये 8 एलइडी P1.0 से P2.1 तक जुड़े हुए हैं जो कि बोर्ड पर पिन नंबर 2 से 9 है। फिर स्विच को पी 2.3 और पिन 2.4 से जोड़ा जाता है जो क्रमशः पिन नंबर 11 और 12 है। इसलिए हमने निम्नलिखित को शून्य सेटअप में घोषित किया है ()
शून्य सेटअप () {के लिए (int i = 2; मैं <= 9; मैं ++) {pinMode (i, OUTMUT); } (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } पिनमोड (11, INPUT_PULLUP); पिनमोड (12, INPUT_PULLUP); }
जैसा कि हम जानते हैं कि पिनमोड () फ़ंक्शन पिन को आउटपुट या इनपुट घोषित करता है और डिजिटलवर्ट () फ़ंक्शन इसे उच्च (चालू) या निम्न (ऑफ) बनाता है। हमने लाइनों के लिए संख्या को कम करने के लिए इस घोषणा को बनाने के लिए लूप के लिए उपयोग किया है । चर "i" को लूप के लिए 2 से 9 तक बढ़ाया जाएगा और प्रत्येक वेतन वृद्धि के लिए फ़ंक्शन को निष्पादित किया जाएगा। एक और बात जो आपको भ्रमित कर सकती है वह है " INPUT_PULLUP " शब्द । पिन को केवल फ़ंक्शन पिनमोड (Pin_name, INPUT) कहकर इनपुट के रूप में घोषित किया जा सकता है , लेकिन यहां हमने INPUT के बजाय INPUT_PULLUP का उपयोग किया है और उन दोनों में एक ध्यान देने योग्य परिवर्तन है।
जब हम किसी भी माइक्रोकंट्रोलर पिन का उपयोग कर रहे हैं, तो पिन या तो कम या उच्च से जुड़ा होना चाहिए। इस स्थिति में पिन 11 और 12 उस स्विच से जुड़ा होता है जिसे दबाने पर जमीन से जोड़ा जाएगा। लेकिन जब स्विच को दबाया नहीं जाता है तो पिन किसी भी चीज से जुड़ा नहीं होता है इस स्थिति को फ्लोटिंग पिन कहा जाता है और यह माइक्रोकंट्रोलर के लिए खराब है। तो इससे बचने के लिए हम या तो एक पुल-अप या पुल-डाउन रेसिस्टर का उपयोग पिन को एक स्थिति में रखने के लिए करते हैं जब वह तैरता है। में MSP430G2553 Microcontroller मैं / हे पिंस एक पुल-अप बाधा में निर्मित है । यह उपयोग करने के लिए कि हमें जो कुछ करना है, वह घोषणा के दौरान INPUT के बजाय INPUT_PULLUP है, जैसे कि w ने ऊपर किया है।
अब शून्य लूप () फ़ंक्शन में कदम देता है। इस फ़ंक्शन में जो कुछ भी लिखा गया है उसे हमेशा के लिए निष्पादित किया जाएगा। हमारे कार्यक्रम का पहला चरण यह जांचना है कि क्या स्विच दबाया गया है और अगर दबाया जाए तो हमें अनुक्रम में एलईडी को ब्लिंक करना शुरू करना चाहिए। यह जांचने के लिए कि क्या बटन दबाया गया है, निम्न पंक्ति का उपयोग किया जाता है
अगर (digitalRead (12) == कम)
यहाँ नया फ़ंक्शन digitalRead () फंक्शन है, यह फ़ंक्शन एक डिजिटल पिन की स्थिति को पढ़ेगा और हाई (1) को लौटाएगा जब पिन को कुछ वोल्टेज मिल रहा होगा और पिन के कम होने पर कम LOW (0) को लौटाएगा । हमारे हार्डवेयर में, पिन केवल तभी दबाया जाएगा जब हम बटन दबाएंगे अन्यथा यह उच्च होगा क्योंकि हमने एक पुल-अप रोकनेवाला का उपयोग किया है। इसलिए यदि बटन दबाया गया था, तो हम यह जांचने के लिए कि क्या कथन का उपयोग करें।
बटन दबाते ही हम अनंत (1) लूप में आ जाते हैं। यह वह जगह है जहां हम अनुक्रम में एलईडी को ब्लिंक करना शुरू करते हैं। एक अनंत जबकि लूप नीचे दिखाया गया है और लूप के अंदर जो कुछ भी लिखा गया है, वह एक ब्रेक तक हमेशा के लिए चलेगा; कथन का उपयोग किया जाता है।
whiel (1) {}
अनंत के अंदर जब हम दूसरे स्विच की स्थिति की जांच करते हैं जो पिन 11 से जुड़ा होता है ।
यदि यह स्विच दबाया जाता है तो हम एक विशेष क्रम में एलईडी को ब्लिंक करते हैं और हम इसे दूसरे अनुक्रम में ब्लिंक करेंगे।
if (digitalRead (11) == LOW) {के लिए (int i = 2; मैं <= 9; i ++) {digitalWrite (i, HIGH); देरी (100); } (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
अनुक्रम में एलईडी को पलक झपकने के लिए हम फिर से लूप के लिए उपयोग करते हैं, लेकिन इस बार हम देरी (100) फ़ंक्शन का उपयोग करके 100 मिलीसेकंड की एक छोटी सी देरी का उपयोग करते हैं ताकि हम एलईडी को उच्च होने की सूचना दे सकें। एक बार में केवल एक एलईडी चमक बनाने के लिए हम सभी एलईडी को बंद करने के लिए लूप के लिए एक और का उपयोग करते हैं। इसलिए हम कुछ समय के लिए एक प्रतीक्षा की ओर मुड़ते हैं और फिर सभी एलईडी को बंद कर देते हैं और फिर कुछ समय के लिए एलईडी प्रतीक्षा में गणना चालू करते हैं और चक्र जारी रहता है। लेकिन यह सब तब तक होगा जब तक दूसरा स्विच दबाया नहीं जाता।
यदि दूसरा स्विच दबाया जाता है तो हम अनुक्रम को बदलते हैं, प्रोग्राम कमोबेश उसी उम्मीद के अनुरूप होगा जिस पर एलईडी चालू है। नीचे दी गई लाइनों को एक नज़र लेने की कोशिश की गई है और पता लगाया गया है कि क्या बदला गया है।
और {के लिए (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); देरी (100); } (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
हां, लूप के लिए बदल दिया गया है। पहले हमने नंबर 2 से चमकने के लिए एलईडी बनाया था और 9. तक सभी तरह से। लेकिन अब हम नंबर 9 से शुरू करने जा रहे हैं और सभी तरह से घटते हैं। 2. इस तरह से हम नोटिस कर सकते हैं कि स्विच दबाया गया है या नहीं।
निमिष एलईडी अनुक्रम के लिए हार्डवेयर सेटअप:
सभी सिद्धांत और सॉफ्टवेयर भाग के लिए पर्याप्त है। आइए, कुछ घटकों को प्राप्त करें और देखें कि यह कार्यक्रम कैसे कार्य करता है। सर्किट बहुत सरल है और इसलिए इसे आसानी से ब्रेडबोर्ड पर बनाया जा सकता है। लेकिन मैंने एलईडी और स्विच को पूर्ण बोर्ड पर टांका लगाया है ताकि यह साफ दिखे। मेरे द्वारा सोल्डर किया गया पूर्ण बोर्ड नीचे दिखाया गया है।
जैसा कि आप देख सकते हैं कि हमारे पास कनेक्टर पिंस के रूप में एलईडी और स्विच के आउटपुट पिंस हैं। अब हमारे पास MSP430 लॉन्चपैड बोर्ड को एल ई डी और स्विच से कनेक्ट करने के लिए महिला कनेक्टर तारों के लिए महिला का उपयोग है जैसा कि नीचे दी गई तस्वीर में दिखाया गया है।
अपलोड करना और काम करना:
एक बार जब आप हार्डवेयर के साथ हो जाते हैं, तो बस आप MSP430 बोर्ड को अपने कंप्यूटर से कनेक्ट करें और एनर्जिया आईडीई खोलें और इस पेज के अंत में दिए गए प्रोग्राम का उपयोग करें। सुनिश्चित करें कि सही बोर्ड और COM पोर्ट एनर्जिया आईडीई में चुने गए हैं और अपलोड बटन पर क्लिक करें। कार्यक्रम को सफलतापूर्वक संकलित किया जाना चाहिए और एक बार अपलोड होने के बाद "अपलोड किया जाएगा " दिखाई देगा ।
अब बोर्ड पर बटन 1 दबाएं और नीचे दिखाए गए अनुसार एलईडी को अनुक्रम में प्रकाश करना चाहिए
अनुक्रम बदल रहा है या नहीं, यह जांचने के लिए आप दूसरा बटन भी पकड़ सकते हैं । परियोजना का पूरा काम नीचे दिए गए वीडियो में दिखाया गया है । यदि आप परिणामों से संतुष्ट हैं तो आप कोड में कुछ बदलाव करने की कोशिश कर सकते हैं जैसे कि अनुक्रम को बदलते समय में देरी करना आदि। इससे आपको बेहतर सीखने और समझने में मदद मिलेगी।
आशा है कि आपने ट्यूटोरियल को समझ लिया है और इसके साथ कुछ उपयोगी सीखा है। यदि आपको किसी समस्या का सामना करना पड़ा हो, तो कृपया टिप्पणी अनुभाग में प्रश्न पोस्ट करने या मंचों का उपयोग करने के लिए स्वतंत्र महसूस करें। आइए एक अन्य ट्यूटोरियल में मिलते हैं जहां सीखेंगे कि हमारे MSP30 लॉन्च पैड का उपयोग करके एनालॉग वोल्टेज कैसे पढ़ें।