- आवश्यक सामग्री
- जॉयस्टिक मॉड्यूल को समझना:
- सर्किट आरेख:
- जॉयस्टिक की जगह के लिए प्रोग्रामिंग:
- सिमुलेशन देखें:
- हार्डवेयर और कार्य:
इनपुट डिवाइस किसी भी इलेक्ट्रॉनिक्स प्रोजेक्ट में महत्वपूर्ण भूमिका निभाते हैं। ये इनपुट डिवाइस उपयोगकर्ता को डिजिटल दुनिया के साथ बातचीत करने में मदद करते हैं। एक इनपुट डिवाइस एक पुश बटन के रूप में या टच स्क्रीन के रूप में जटिल के रूप में सरल हो सकता है; यह परियोजना की आवश्यकता के आधार पर भिन्न होता है। इस ट्यूटोरियल में हम यह जानने जा रहे हैं कि हमारे PIC माइक्रोकंट्रोलर के साथ जॉयस्टिक को कैसे इंटरफ़ेस किया जाए, जॉयस्टिक डिजिटल दुनिया के साथ बातचीत करने का एक अच्छा तरीका है और लगभग सभी ने अपने किशोरावस्था की उम्र में वीडियो गेम खेलने के लिए इस्तेमाल किया होगा।
जॉयस्टिक एक परिष्कृत उपकरण प्रतीत हो सकता है, लेकिन यह वास्तव में सिर्फ दो पोटेंशियोमीटर और एक पुश बटन का संयोजन है। इसलिए किसी भी MCU के साथ इंटरफ़ेस करना भी बहुत आसान है बशर्ते हम उस MCU के ADC फीचर का उपयोग करना जानते हों। हम पहले ही जान चुके हैं कि ADC को PIC के साथ कैसे उपयोग किया जाता है, इसलिए यह सिर्फ जॉयस्टिक को बदलने के लिए एक काम होगा। जो लोग पिकेट के लिए नए हैं, उन्हें उपरोक्त एडीसी परियोजना के साथ-साथ एलईडी ब्लिंकिंग सीक्वेंस प्रोजेक्ट को सीखने की सलाह दी जाती है ताकि प्रोजेक्ट को समझना आसान हो सके।
आवश्यक सामग्री
- प्रोग्रामिंग के लिए PicKit 3
- जॉय स्टिक मॉड्यूल
- PIC16F877A आईसी
- 40 - पिन आईसी धारक
- परफ़ेक्ट बोर्ड
- 20 मेगाहर्ट्ज क्रिस्टल ओएससी
- बर्गस्टिक पिंस
- २२० ९ istor मीटर
- 5-किसी भी रंग के एल.ई.डी.
- 1 सोल्डरिंग किट
- आईसी 7805
- 12 वी एडाप्टर
- तारों को जोड़ना
- ब्रेड बोर्ड
जॉयस्टिक मॉड्यूल को समझना:
जॉयस्टिक विभिन्न आकारों और आकारों में उपलब्ध हैं। एक ठेठ जॉयस्टिक मॉड्यूल नीचे दिए गए आंकड़े में दिखाया गया है। एक जॉयस्टिक एक पोटेंशियोमीटर और पुश बटन के अलावा कुछ भी नहीं है जो एक स्मार्ट मैकेनिकल व्यवस्था पर लगाया गया है। पोटेंशियोमीटर का उपयोग जॉयस्टिक के एक्स और वाई आंदोलन का ट्रैक रखने के लिए किया जाता है और अगर जॉयस्टिक को दबाया जाता है तो बटन का उपयोग किया जाता है। दोनों पोटेंशियोमीटर एक एनालॉग वोल्टेज का उत्पादन करते हैं जो जॉयस्टिक की स्थिति पर निर्भर करता है। और हम कुछ माइक्रोकंट्रोलर का उपयोग करके इन वोल्टेज परिवर्तनों की व्याख्या करके आंदोलन की दिशा प्राप्त कर सकते हैं। पहले हमने एवीआर के साथ जॉयस्टिक, अरुडिनो और रास्पबेरी पाई के साथ जॉयस्टिक का हस्तक्षेप किया।
किसी भी सेंसर या मॉड्यूल को माइक्रोकंट्रोलर के साथ रखने से पहले यह जानना महत्वपूर्ण है कि यह कैसे कार्य करता है। यहां हमारे जॉयस्टिक में 5 आउटपुट पिन हैं, जिनमें से दो पावर के लिए हैं और तीन डेटा के लिए हैं। मॉड्यूल को 5 वी के साथ संचालित किया जाना चाहिए। डेटा पिन को VRX, VRY और SW नाम दिया गया है।
शब्द "वीआरएक्स" एक्स-अक्ष पर परिवर्तनीय वोल्टेज के लिए है और शब्द "वीआरवाई" वाई-अक्ष में चर वोल्टेज के लिए है और "एसडब्ल्यू" स्विच के लिए खड़ा है।
इसलिए जब हम वीआरएक्स पर जॉयस्टिक को बाएं या दाएं स्थानांतरित करते हैं तो वोल्टेज अलग-अलग होगा और जब हम इसे ऊपर या नीचे करेंगे तो वीआरवाई अलग-अलग होगा। इसी तरह जब हम इसे तिरछे ढंग से आगे बढ़ाते हैं तो हम दोनों वीआरएक्स और वीआरवाई अलग-अलग होंगे। जब हम स्विच दबाते हैं तो SW पिन जमीन से जुड़ा होगा। नीचे दिए गए आंकड़े आपको आउटपुट मानों को बेहतर ढंग से समझने में मदद करेंगे
सर्किट आरेख:
अब जब हम जानते हैं कि जॉय स्टिक कैसे काम करता है, तो हम इस निष्कर्ष पर पहुंच सकते हैं कि जॉयस्टिक मॉड्यूल के सभी तीन डेटा पिन को पढ़ने के लिए हमें दो एडीसी पिन और एक डिजिटल इनपुट पिन की आवश्यकता होगी। पूरा सर्किट चित्र नीचे चित्र में दिखाया गया है
जैसा कि आप सर्किट आरेख में देख सकते हैं, जॉयस्टिक के बजाय हमने दो पोटेंशियोमीटर आरवी 1 और आरवी 3 का उपयोग एनालॉग वोल्टेज इनपुट और स्विच के लिए एक लॉजिक इनपुट के रूप में किया है। आप पिन नामों से मिलान करने और तदनुसार अपने कनेक्शन बनाने के लिए बैंगनी रंग में लिखे लेबल का अनुसरण कर सकते हैं।
ध्यान दें कि एनालॉग पिन चैनल A0 और A1 से जुड़े हैं और डिजिटल स्विच RB0 से जुड़ा है। हमारे पास आउटपुट के रूप में 5 एलईडी लाइटें भी होंगी, ताकि जॉयस्टिक को स्थानांतरित करने की दिशा के आधार पर हम एक चमक सकें। तो ये आउटपुट पिन RC0 से RC4 तक PORT C से जुड़े हैं। एक बार जब हमने अपने सर्किट आरेख को रोक दिया है तो हम प्रोग्रामिंग के साथ आगे बढ़ सकते हैं, फिर इस सर्किट पर प्रोग्राम का अनुकरण कर सकते हैं और फिर ब्रेडबोर्ड पर सर्किट का निर्माण कर सकते हैं और फिर प्रोग्राम को हार्डवेयर पर अपलोड कर सकते हैं। उपरोक्त कनेक्शन बनाने के बाद आपको मेरा विचार बताने के लिए नीचे दिखाया गया है
जॉयस्टिक की जगह के लिए प्रोग्रामिंग:
PIC के साथ जॉयस्टिक इंटरफ़ेस करने का कार्यक्रम सरल और सीधे आगे है। हम पहले से ही जानते हैं कि जॉयस्टिक किस पिन से जुड़ा हुआ है और उनका कार्य क्या है, इसलिए हमें बस पिन से एनालॉग वोल्टेज को पढ़ना होगा और आउटपुट एलईडी को तदनुसार नियंत्रित करना होगा।
ऐसा करने का पूरा कार्यक्रम इस दस्तावेज़ के अंत में दिया गया है, लेकिन चीजों को समझाने के लिए मैं नीचे छोटे सार्थक स्निपेट में कोड को तोड़ रहा हूं।
हमेशा की तरह कॉन्फ़िगरेशन बिट्स सेट करके प्रोग्राम शुरू किया गया है, हम कॉन्फ़िगरेशन बिट्स सेट करने के बारे में ज्यादा चर्चा नहीं करने जा रहे हैं क्योंकि हमने इसे पहले ही एलईडी ब्लिंकिंग प्रोजेक्ट में सीखा है और यह इस प्रोजेक्ट के लिए भी ऐसा ही है। एक बार कॉन्फ़िगरेशन बिट्स सेट होने के बाद हमें अपने PIC में ADC मॉड्यूल का उपयोग करने के लिए ADC फ़ंक्शन को परिभाषित करना होगा। इन फ़ंक्शन को PIC ट्यूटोरियल के साथ एडीसी का उपयोग करने के तरीके में भी सीखा गया था। उसके बाद, हमें यह घोषित करना होगा कि कौन से पिन इनपुट हैं और जो आउटपुट पिन हैं। यहाँ LED PORTC से जुड़ा है इसलिए वे आउटपुट पिन हैं और जोस्टिक का स्विच पिन एक डिजिटल इनपुट पिन है। तो हम निम्नलिखित पंक्तियों का उपयोग उसी को घोषित करने के लिए करते हैं:
// ***** I / O कॉन्फ़िगरेशन **** // TRISC = 0X00; // PORT C का उपयोग आउटपुट पोर्ट PORTC = 0X00 के रूप में किया जाता है ; // MAke सभी पिन कम TRISB0 = 1; // RB0 का उपयोग इनपुट के रूप में किया जाता है । *** I / O कॉन्फ़िगरेशन का अंत ** ///
एडीसी पिन इनपुट के रूप में परिभाषित करने की आवश्यकता नहीं पिंस, क्योंकि वे जब एडीसी समारोह यह इनपुट पिन के रूप में आवंटित किया जाएगा इस्तेमाल करते हैं। एक बार पिन परिभाषित होने के बाद, हम ADC_initialize फ़ंक्शन को कॉल कर सकते हैं जिसे हमने पहले परिभाषित किया था। यह फ़ंक्शन आवश्यक ADC रजिस्टरों को सेट करेगा और ADC मॉड्यूल तैयार करेगा।
ADC_Initialize (); // ADC मॉड्यूल को कॉन्फ़िगर करें
अब, हम लूप करते हुए अपने अनंत में कदम रखते हैं । इस लूप के अंदर हमें वीआरएक्स, वीआरवाई और एसडब्ल्यू के मूल्यों की निगरानी करनी होगी और उन मूल्यों के आधार पर हमें लीड के आउटपुट को नियंत्रित करना होगा । हम नीचे की पंक्तियों का उपयोग करके VRX और VRY के अनुरूप वोल्टेज को पढ़कर निगरानी प्रक्रिया शुरू कर सकते हैं
int joy_X = (ADC_Read (0)); // जॉयस्टिक इंट खुशी_वाई = (ADC_Read (1)) का एक्स-एक्सिस पढ़ें; // जॉयस्टिक के वाई-एक्सिस पढ़ें
यह लाइन क्रमशः वैरिएबल joy_X और joy_Y में VRX और VRY के मूल्य को बचाएगा । फ़ंक्शन ADC_Read (0) का अर्थ है कि हम चैनल 0 से ADC मान पढ़ रहे हैं जो पिन A0 है। हमने A0 और A1 को पिन करने के लिए VRX और VRY को कनेक्ट किया है और इसलिए हम 0 और 1 से पढ़ते हैं।
यदि आप हमारे ADC ट्यूटोरियल से याद कर सकते हैं, तो हम जानते हैं कि हम एनालॉग वोल्टेज PIC को डिजिटल डिवाइस के रूप में पढ़ते हैं, इसे 0 से 1023 तक पढ़ा जाएगा। यह मान जॉयस्टिक मॉड्यूल की स्थिति पर निर्भर करता है। जॉयस्टिक की प्रत्येक स्थिति के लिए आप किस मूल्य की अपेक्षा कर सकते हैं, यह जानने के लिए आप ऊपर दिए गए लेबल आरेख का उपयोग कर सकते हैं।
यहाँ मैंने 200 की सीमा मान को निम्न सीमा के रूप में और ऊपरी सीमा के रूप में 800 के मान का उपयोग किया है । आप अपनी इच्छानुसार कुछ भी उपयोग कर सकते हैं। तो चलो इन मूल्यों का उपयोग करें और तदनुसार एलईडी चमक शुरू करें । ऐसा करने के लिए हमें IF_ लूप का उपयोग करके पूर्व-परिभाषित मूल्यों के साथ joy_X के मूल्य की तुलना करनी होगी और नीचे दिखाए गए अनुसार एलईडी पिन को उच्च या निम्न बनाना होगा। टिप्पणी लाइनें आपको बेहतर समझने में मदद करेंगी
if (joy_X <200) // खुशी बढ़ गई {RC0 = 0; RC1 = 1;} // चमक ऊपरी एलईडी और अगर (खुशी_X> 800) // खुशी नीचे चला गया {RC0 = 1; RC1 = 0;} // ग्लो लोअर LED LED // अगर नहीं चले तो {RC0 = 0; RC1 = 0;} // दोनों एलईडी को बंद करें
हम इसी तरह Y- अक्ष के मूल्य के लिए भी ऐसा ही कर सकते हैं। हमें बस चर joy_X को joy_Y से बदलना होगा और नीचे दिखाए गए अनुसार अगले दो एलईडी पिन को भी नियंत्रित करना होगा। ध्यान दें कि जब जॉयस्टिक को स्थानांतरित नहीं किया जाता है तो हम दोनों एलईडी लाइट बंद कर देते हैं।
if (joy_Y <200) // आनन्द लेफ्ट लेफ्ट {RC2 = 0; RC3 = 1;} // ग्लो छोड़ दिया एलईडी बाकी अगर (joy_Y> 800) // खुशी स्थानांतरित सही {RC2 = 1; आरसी 3 = 0;} // ग्लो राइट एलईडी और // अगर स्थानांतरित नहीं किया गया {आरसी 2 = 0; RC3 = 0;} // दोनों एलईडी बंद करें
अब हमारे पास करने के लिए एक और अंतिम चीज है, अगर हमें दबाया गया है तो हमें स्विच को जांचना होगा । स्विच पिन RB0 से जुड़ा हुआ है, इसलिए हम फिर से लूप का उपयोग कर सकते हैं और यदि यह चालू है तो जाँच करें। यदि इसे दबाया जाता है, तो हम एलईडी को चालू करेंगे ताकि यह इंगित किया जा सके कि स्विच दबाया गया है।
if (RB0 == 1) // अगर Joy को RC4 = 1 दबाया जाए; // ग्लो मीडियम LED LED RC4 = 0; // मध्य एलईडी
सिमुलेशन देखें:
प्रोटीन सॉफ्टवेयर का उपयोग करके पूरी परियोजना को सिम्युलेटेड किया जा सकता है। एक बार जब आप प्रोग्राम लिख लेते हैं तो कोड संकलित करते हैं और सिमुलेशन के हेक्स कोड को सर्किट से जोड़ते हैं। फिर आपको पोटेंशियोमीटर की स्थिति के अनुसार एलईडी लाइट्स को चमकते हुए देखना चाहिए। सिमुलेशन नीचे दिखाया गया है:
हार्डवेयर और कार्य:
सिमुलेशन का उपयोग करके कोड को सत्यापित करने के बाद, हम एक ब्रेड बोर्ड पर सर्किट का निर्माण कर सकते हैं। यदि आप पीआईसी ट्यूटोरियल का अनुसरण कर रहे हैं, तो आपने देखा होगा कि हम उसी परफ़ॉर्म बोर्ड का उपयोग करते हैं जिसमें पीआईसी और 7805 सर्किट हैं। यदि आप भी एक बनाने में रुचि रखते हैं ताकि आप इसे अपने सभी PIC प्रोजेक्ट्स के साथ उपयोग करें तो एक पूर्ण बोर्ड पर सर्किट को मिलाप करें। या आप एक ब्रेडबोर्ड पर भी पूरा सर्किट बना सकते हैं। एक बार हार्डवेयर हो जाने के बाद यह कुछ इस तरह होगा।
अब PICkit3 का उपयोग करके PIC माइक्रोकंट्रोलर को कोड अपलोड करें। आप मार्गदर्शन के लिए एलईडी ब्लिंक परियोजना का उल्लेख कर सकते हैं। जैसे ही कार्यक्रम अपलोड किया जाता है, आपको पीली बत्ती जाने की सूचना देनी चाहिए। अब जॉयस्टिक का उपयोग करें और घुंडी को अलग-अलग करें, जॉयस्टिक की प्रत्येक दिशा के लिए आपको संबंधित एलईडी के उच्च होने की सूचना होगी। जब बीच में स्विच दबाया जाता है, तो यह बीच में एलईडी बंद कर देगा।
यह काम सिर्फ एक उदाहरण है, आप इसे शीर्ष पर कई दिलचस्प परियोजनाओं का निर्माण कर सकते हैं। इस पृष्ठ के अंत में दिए गए वीडियो में परियोजना का पूरा काम भी पाया जा सकता है ।
आशा है कि आप इस परियोजना को समझ गए हैं और इसे बनाने में मज़ा आया है, अगर आपको ऐसा करने में कोई परेशानी हो तो नीचे टिप्पणी अनुभाग पर इसे पोस्ट करने में मदद करें या सहायता प्राप्त करने के लिए इसे मंचों पर लिखें।