विषयसूची:

Arduino और Touchpad Tic Tac Toe: 8 कदम (चित्रों के साथ)
Arduino और Touchpad Tic Tac Toe: 8 कदम (चित्रों के साथ)

वीडियो: Arduino और Touchpad Tic Tac Toe: 8 कदम (चित्रों के साथ)

वीडियो: Arduino और Touchpad Tic Tac Toe: 8 कदम (चित्रों के साथ)
वीडियो: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, नवंबर
Anonim
Arduino और Touchpad Tic Tac Toe
Arduino और Touchpad Tic Tac Toe

या, इनपुट और आउटपुट मल्टीप्लेक्सिंग में एक अभ्यास, और बिट्स के साथ काम करना। और Arduino प्रतियोगिता के लिए एक सबमिशन।

यह एक टिक टीएसी को पैर की अंगुली के खेल का एक कार्यान्वयन है जिसमें डिस्प्ले के लिए 3x3 रंग के एलईडी का उपयोग किया जाता है, एक साधारण प्रतिरोधक टचपैड, और एक Arduino सब कुछ एक साथ टाई करने के लिए। यह देखने के लिए कि यह कैसे काम करता है, वीडियो देखें: इस परियोजना के लिए क्या आवश्यक है: पुर्जे और उपभोग्य वस्तुएं एक पूर्ण बोर्ड (या स्ट्रिप बोर्ड) नौ द्विरंग एलईडी, सामान्य कैथोड नौ समान प्रतिरोधक, 100-220 ओम रेंज में छह समान प्रतिरोधक, में 10kohm - 500kohm रेंज एक सिंगल पोल, डबल थ्रो स्विच हेडर पिन का एक गुच्छा बिजली के तार का एक गुच्छा पारदर्शी ऐक्रेलिक की एक छोटी चौकोर शीट, ~ 1 मिमी मोटी, किनारे पर 8 सेमी चिपचिपा टेप साफ़ करें हीट श्रिंक्स (वैकल्पिक) उपरोक्त सभी काफी सामान्य वस्तुएं हैं, कुल लागत USD$20 से अधिक नहीं होनी चाहिए। उपकरण एक Arduino सेटअप (Arduino Duemilanove, Arduino IDE, कंप्यूटर, USB केबल) सामान्य विद्युत उपकरण (मल्टीमीटर, सोल्डर सोल्डर गन, वायर स्निप्स, वायर कटर) Arduino से संबंधित सब कुछ हो सकता है https://www.arduino.cc पर पाया गया। निर्माण के साथ!

चरण 1: एलईडी मैट्रिक्स को तार देना

एलईडी मैट्रिक्स को तार देना
एलईडी मैट्रिक्स को तार देना
एलईडी मैट्रिक्स को तार देना
एलईडी मैट्रिक्स को तार देना

एक एलईडी से प्रकाश के लिए, इसके दोनों लीड को जोड़ा जाना चाहिए। अगर हम 18 एल ई डी (9 लाल, 9 हरे) में से प्रत्येक को पिन की एक जोड़ी समर्पित करते हैं, तो हम जल्दी से Arduino पर पिन से बाहर निकल जाएंगे। हालांकि, मल्टीप्लेक्सिंग के साथ, हम केवल 9 पिन के साथ सभी एल ई डी को संबोधित करने में सक्षम होंगे! ऐसा करने के लिए, एल ई डी को क्रॉसबार फैशन में तारित किया जाता है, जैसा कि पहले आंकड़े में दिखाया गया है। एल ई डी को थ्री के कॉलम में समूहीकृत किया जाता है, और उनके कैथोड को छक्कों की पंक्तियों में समूहीकृत किया जाता है। एक विशेष एनोड लाइन को उच्च और एक विशेष कैथोड लाइन को कम करके, और अन्य सभी एनोड और कैथोड लाइनों पर एक उच्च प्रतिबाधा होने से, हम कर सकते हैं चुनें कि हम कौन सी एलईडी जलाना चाहते हैं, क्योंकि वर्तमान में केवल एक ही संभावित पथ ले सकता है। उदाहरण के लिए, दूसरे आंकड़े में, हरे रंग की एनोड 1 लाइन ऊंची और कैथोड 1 लाइन कम सेट करना, नीचे बाईं ओर हरी एलईडी रोशनी. इस मामले में वर्तमान पथ नीले रंग में दिखाया गया है। लेकिन क्या होगा यदि आप अलग-अलग लाइनों पर एक से अधिक एलईडी जलाना चाहते हैं? हम इसे प्राप्त करने के लिए दूरदृष्टि की दृढ़ता का उपयोग करेंगे। बहुत जल्दी एलईडी लाइनों के जोड़े का चयन करके, यह भ्रम देता है कि सभी चयनित एल ई डी एक ही समय में जलाए जाते हैं।

चरण 2: एलईडी मैट्रिक्स लेआउट

एलईडी मैट्रिक्स लेआउट
एलईडी मैट्रिक्स लेआउट
एलईडी मैट्रिक्स लेआउट
एलईडी मैट्रिक्स लेआउट

नीचे दिए गए सर्किट आरेख से पता चलता है कि एल ई डी भौतिक रूप से कैसे वायर्ड होते हैं (जी 1-जी 9: हरी एल ई डी, आर 1-आर 9: लाल एलईडी)। यह आरेख एकल लाल और हरे रंग की एल ई डी के लिए है, यदि आप उभयलिंगी सामान्य कैथोड लाल/हरे एल ई डी का उपयोग कर रहे हैं, तो प्रति लाल/हरे रंग की जोड़ी में केवल एक कैथोड पैर है जिसे आपको तार करना है। लाल और हरे रंग की एनोड लाइनें पीडब्लूएम पिन में जाती हैं Arduino (डुमिलानोव पर पिन 3, 5, 6, 9, 10, 11), ताकि हम बाद में लुप्त होने जैसे प्रभाव डाल सकें। कैथोड लाइनें पिन 4, 7 और 8 में जाती हैं। कैथोड और एनोड लाइनों में से प्रत्येक में सुरक्षा के लिए 100 ओम प्रतिरोधक होते हैं।

चरण 3: एलईडी मैट्रिक्स को संबोधित करना

टिक टीएसी को पैर की अंगुली कोड के लिए, हमें एल ई डी के बारे में निम्नलिखित जानकारी संग्रहीत करने में सक्षम होने की आवश्यकता होगी: - एक एलईडी जलाया जाता है या नहीं - अगर जलाया जाता है, चाहे वह लाल हो या हरा ऐसा करने का एक तरीका राज्य को स्टोर करना है 9-सेल सरणी में, राज्य का प्रतिनिधित्व करने के लिए तीन अंकों का उपयोग करके (0 = बंद, 1 = लाल चालू, 2 = हरा चालू)। हर बार हमें एलईडी की स्थिति की जांच करने की आवश्यकता होती है, उदाहरण के लिए, यह जांचने के लिए कि क्या जीत की स्थिति है, हमें सरणी के माध्यम से साइकिल चलाने की आवश्यकता होगी। यह एक व्यावहारिक तरीका है, लेकिन बल्कि भद्दा है। नौ बिट्स के दो समूहों का उपयोग करने के लिए एक अधिक सुव्यवस्थित तरीका होगा। नौ बिट्स का पहला समूह एलईडी की ऑन-ऑफ स्थिति को संग्रहीत करता है, और नौ बिट्स का दूसरा समूह रंग को संग्रहीत करता है। फिर, एलईडी राज्यों में हेरफेर करना बस थोड़ा सा अंकगणित और स्थानांतरण का मामला बन जाता है। यहाँ एक काम किया उदाहरण है। मान लें कि हम अपने टिक टीएसी को पैर की अंगुली ग्रिड को रेखांकन करते हैं, और पहले 1s और 0s का उपयोग ऑन-ऑफ स्थिति का प्रतिनिधित्व करने के लिए करते हैं (1 चालू है, 0 बंद है): 000 000 = मैट्रिक्स नीचे बाईं ओर एलईडी लिट 100 100 010 = विकर्ण के साथ मैट्रिक्स एल ई डी जलाया 001 यदि हम नीचे बाईं ओर से कोशिकाओं की गणना करते हैं, तो हम उपरोक्त अभ्यावेदन को बिट्स की एक श्रृंखला के रूप में लिख सकते हैं। पहले मामले में, यह 100000000 होगा, और दूसरे मामले में, यह 001010100 होगा। अगर हम इन्हें द्विआधारी प्रतिनिधित्व के रूप में सोचते हैं, तो बिट्स की प्रत्येक श्रृंखला को एक ही संख्या में संघनित किया जा सकता है (पहले मामले में 256, 84 दूसरे मामले में)। तो मैट्रिक्स की स्थिति को स्टोर करने के लिए एक सरणी का उपयोग करने के बजाय, हम केवल एक नंबर का उपयोग कर सकते हैं! इसी तरह, हम उसी तरह एलईडी के रंग का प्रतिनिधित्व कर सकते हैं (1 लाल है, 0 हरा है)। आइए पहले मान लें कि सभी एल ई डी जलाए गए हैं (इसलिए ऑन-ऑफ स्थिति 511 द्वारा दर्शायी जाती है)। नीचे दिया गया मैट्रिक्स तब एल ई डी की रंग स्थिति का प्रतिनिधित्व करेगा: 010 हरा, लाल, हरा 101 लाल, हरा, लाल 010 हरा, लाल, हरा अब, एलईडी मैट्रिक्स प्रदर्शित करते समय, हमें बस प्रत्येक बिट के माध्यम से चक्र करना होगा, पहले ऑन-ऑफ़ अवस्था में, और फिर रंग अवस्था में। उदाहरण के लिए, मान लें कि हमारी ऑन-ऑफ स्थिति 100100100 है, और रंग स्थिति 010101010 है। एलईडी मैट्रिक्स को रोशन करने के लिए यहां हमारा एल्गोरिदम है: चरण 1। बाइनरी 1 (यानी बिट) के साथ ऑन-ऑफ स्थिति का थोड़ा सा जोड़ करें मास्किंग)। चरण 2. यदि यह सत्य है, तो एलईडी जलती है। अब एक बाइनरी 1 के साथ रंग स्थिति का थोड़ा सा जोड़ करें। चरण 3. यदि यह सच है, तो लाल एलईडी को रोशन करें। यदि यह गलत है, तो हरे रंग की एलईडी जलाएं। चरण 4. ऑन-ऑफ स्थिति और रंग स्थिति दोनों को एक बिट दाईं ओर (यानी बिट शिफ्टिंग) शिफ्ट करें। चरण 5. चरण 1 - 4 को तब तक दोहराएं जब तक कि सभी नौ बिट्स पढ़ न जाएं। ध्यान दें कि हम मैट्रिक्स को पीछे की ओर भर रहे हैं - हम सेल 9 से शुरू करते हैं, फिर सेल 1 पर वापस जाते हैं। साथ ही, ऑन-ऑफ और कलर स्टेट्स को एक हस्ताक्षरित पूर्णांक प्रकार के बजाय एक अहस्ताक्षरित पूर्णांक प्रकार (शब्द) के रूप में संग्रहीत किया जाता है। ऐसा इसलिए है क्योंकि बिट शिफ्टिंग में, अगर हम सावधान नहीं हैं, तो हम अनजाने में वेरिएबल के साइन को बदल सकते हैं। संलग्न एलईडी मैट्रिक्स को रोशन करने के लिए कोड है।

चरण 4: टच पैड का निर्माण

टच पैड का निर्माण
टच पैड का निर्माण
टच पैड का निर्माण
टच पैड का निर्माण
टच पैड का निर्माण
टच पैड का निर्माण
टच पैड का निर्माण
टच पैड का निर्माण

टचपैड का निर्माण पतली ऐक्रेलिक की एक शीट से किया गया है, जो एलईडी मैट्रिक्स पर ओवरले करने के लिए काफी बड़ा है। फिर, स्पष्ट टेप का उपयोग करके, ऐक्रेलिक शीट पर पंक्ति और स्तंभ तारों को टेप करें। चौराहों पर तारों के बीच इंसुलेटिंग स्पेसर के रूप में क्लियर टेप का भी उपयोग किया जाता है। टेप के चिपचिपे हिस्से पर फिंगर ग्रीस को जाने से रोकने के लिए साफ उपकरणों का उपयोग करना सुनिश्चित करें। फ़िंगरप्रिंट के दाग न केवल बदसूरत दिखते हैं, बल्कि टेप को कम चिपचिपा बनाते हैं। प्रत्येक पंक्ति के एक छोर को ट्रिम करें, और दूसरे छोर को एक लंबे तार से मिलाएं। कनेक्टर्स पर टांका लगाने से पहले, तारों के साथ एक अवरोधक को इन-लाइन मिलाएं। यहां उपयोग किए जाने वाले प्रतिरोधक 674k हैं, लेकिन 10k और 1M के बीच कोई भी मान ठीक होना चाहिए। Arduino के कनेक्शन 6 एनालॉग पिन का उपयोग करके बनाए जाते हैं, जिसमें पिन 14-16 वायर ग्रिड पंक्तियों से जुड़े होते हैं, और पिन 17-19 से जुड़े होते हैं स्तंभ।

चरण 5: टच पैड - यह कैसे काम करता है

टच पैड - यह कैसे काम करता है
टच पैड - यह कैसे काम करता है
टच पैड - यह कैसे काम करता है
टच पैड - यह कैसे काम करता है

जिस तरह हमने न्यूनतम पिन के साथ एक एलईडी मैट्रिक्स स्थापित करने के लिए एक क्रॉसबार मल्टीप्लेक्सर का उपयोग किया था, हम टच सेंसर सरणी स्थापित करने के लिए एक समान क्रॉसबार मल्टीप्लेक्सर का उपयोग कर सकते हैं, जिसका उपयोग हम एलईडी को सक्रिय करने के लिए कर सकते हैं। इस टच पैड की अवधारणा सरल है। यह अनिवार्य रूप से एक वायर ग्रिड है, जिसमें तीन नंगे तार पंक्तियों में चलते हैं, और तीन नंगे तार पंक्तियों के ऊपर स्तंभों में चलते हैं। प्रत्येक चौराहे के बिंदु पर इन्सुलेशन का एक छोटा वर्ग होता है जो दो तारों को छूने से रोकता है। चौराहे को छूने वाली एक उंगली दोनों तारों के साथ संपर्क बनाएगी, जिसके परिणामस्वरूप दो तारों के बीच एक विशाल, लेकिन सीमित प्रतिरोध होगा। एक छोटा करंट, लेकिन पता लगाने योग्य, करंट को एक तार से दूसरे तार तक, उंगली के माध्यम से प्रवाहित करने के लिए बनाया जा सकता है। यह निर्धारित करने के लिए कि कौन सा चौराहा दबाया गया था, निम्न विधि का उपयोग किया गया था: चरण 1: सभी कॉलम लाइनों को OUTPUT LOW पर सेट करें। चरण 2: आंतरिक पुलअप सक्रिय होने के साथ, पंक्ति पंक्तियों को INPUT पर सेट करें। चरण 3: प्रत्येक पंक्ति पंक्ति पर एक एनालॉग रीड लें, जब तक कि मान किसी दिए गए थ्रेशोल्ड से कम न हो जाए। यह आपको बताता है कि दबाया हुआ चौराहा किस पंक्ति में है। चरण 4: चरण 1-3 दोहराएं, लेकिन अब कॉलम इनपुट के रूप में और पंक्तियों को आउटपुट के रूप में। यह आपको बताता है कि दबाया हुआ चौराहा कौन सा कॉलम है। शोर के प्रभाव को कम करने के लिए, कई रीडिंग ली जाती हैं और फिर औसत किया जाता है। तब औसत परिणाम की तुलना थ्रेशोल्ड से की जाती है। चूंकि यह विधि केवल थ्रेशोल्ड के विरुद्ध जाँच करती है, यह एक साथ प्रेस का पता लगाने के लिए उपयुक्त नहीं है। हालांकि, चूंकि टिक टीएसी को पैर की अंगुली बारी-बारी से आगे बढ़ती है, इसलिए एक प्रेस पढ़ना पर्याप्त है। संलग्न एक स्केच है जिसमें दिखाया गया है कि टचपैड कैसे काम करता है। एलईडी मैट्रिक्स के साथ, बिट्स का उपयोग यह दर्शाने के लिए किया जाता है कि किस चौराहे को दबाया गया था।

चरण 6: सब कुछ एक साथ रखना

सब कुछ एक साथ रखना
सब कुछ एक साथ रखना

अब जब सभी व्यक्तिगत घटक हो गए हैं, तो उन सभी को एक साथ रखने का समय आ गया है। एलईडी मैट्रिक्स पर वायर ग्रिड को ओवरले करें। आपको एलईडी मैट्रिक्स कोड में पिन नंबरिंग को वायर ग्रिड सेंसर के साथ सिंक्रनाइज़ करने के लिए पुन: व्यवस्थित करने की आवश्यकता हो सकती है। वायर ग्रिड को अपनी पसंद के फास्टनिंग्स या एडहेसिव्स के साथ सुरक्षित करें, और एक अच्छे प्लेइंग बोर्ड पर चिपका दें। पिन 12 और Arduino के ग्राउंड के बीच एक स्विच जोड़ें। यह स्विच 2 प्लेयर मोड और 1 प्लेयर मोड (बनाम माइक्रोकंट्रोलर) के बीच टॉगल करना है।

चरण 7: प्रोग्रामिंग टिक टीएसी को पैर की अंगुली

खेल के लिए कोड संलग्न है। आइए पहले टिक टीएसी को पैर की अंगुली के खेल को दो खिलाड़ी मोड में इसके विभिन्न चरणों में विभाजित करें: चरण 1: खिलाड़ी ए एक चौराहे को छूकर एक खाली सेल को चुनता है। चरण 2: उस सेल के लिए एलईडी रंग ए के साथ रोशनी करता है। चरण 3: यह देखने के लिए जांचें कि प्लेयर ए जीता है या नहीं। चरण 4: प्लेयर बी एक खाली सेल चुनता है। चरण 5: उस सेल के लिए एलईडी रंग बी के साथ रोशनी करता है चरण 6: यह देखने के लिए जांचें कि क्या खिलाड़ी बी जीता है। चरण 7: जीत की स्थिति होने तक 1-6 दोहराएं, या यदि सभी कक्ष भरे हुए हैं। कक्षों को पढ़ना: प्रोग्राम ग्रिड को पढ़ने और एलईडी मैट्रिक्स प्रदर्शित करने के बीच लूप करता है. जब तक ग्रिड सेंसर गैर-शून्य मान दर्ज नहीं करता है, तब तक यह लूप जारी रहेगा। जब एक चौराहे को दबाया जाता है, तो दबाया गया चर दबाए गए सेल की स्थिति को संग्रहीत करता है। यह जांचना कि क्या सेल खाली है: जब एक स्थिति रीडिंग प्राप्त की जाती है (चर दबाया जाता है), इसकी तुलना वर्तमान सेल स्थिति (चर ग्रिडऑनऑफ में संग्रहीत) के साथ की जाती है। थोड़ा सा जोड़ का उपयोग करना। यदि दबाया गया सेल भरा नहीं है, तो एलईडी को रोशन करने के लिए आगे बढ़ें, अन्यथा कोशिकाओं को पढ़ने के लिए वापस आएं। रंगों को टॉगल करना: एक बूलियन चर, टर्न, का उपयोग यह रिकॉर्ड करने के लिए किया जाता है कि यह किसकी बारी है। जब सेल चुना जाता है तो एलईडी रंग चुना जाता है, इस चर द्वारा निर्धारित किया जाता है, जो हर बार सेल चुने जाने पर वैकल्पिक होता है। जीत की स्थिति की जांच करना: केवल 8 संभावित जीत स्थितियां हैं, और इन्हें एक सरणी में शब्द चर के रूप में संग्रहीत किया जाता है (winArray) खिलाड़ी के भरे हुए सेल पदों की तुलना जीत की स्थिति से करने के लिए दो बिटवाइज जोड़ का उपयोग किया जाता है। यदि कोई मैच है, तो प्रोग्राम एक जीत रूटीन प्रदर्शित करता है, जिसके बाद यह एक नया गेम शुरू करता है। ड्रॉ की स्थिति के लिए जाँच करना: जब नौ मोड़ दर्ज किए गए हैं और अभी भी कोई जीत की स्थिति नहीं है, तो गेम ड्रॉ है। फिर एल ई डी फीके पड़ जाते हैं और एक नया गेम शुरू हो जाता है। एक खिलाड़ी मोड पर स्विच करना: यदि स्विच चालू स्थिति में है, तो प्रोग्राम एक प्लेयर मोड में चला जाता है, जिसमें मानव खिलाड़ी पहले शुरू होता है। मानव खिलाड़ी की बारी के अंत में, प्रोग्राम बस एक यादृच्छिक सेल चुनता है। जाहिर है, यह सबसे चतुर रणनीति नहीं है!

चरण 8: टिप्पणियां और आगे के सुधार

यहां एक वीडियो एक खिलाड़ी मोड दिखा रहा है, जिसमें कार्यक्रम पूरी तरह से यादृच्छिक चाल चल रहा है: यहां दिखाया गया कार्यक्रम केवल एक न्यूनतम, नंगे हड्डियों का संस्करण है। इसके साथ कई अन्य चीजें की जा सकती हैं: 1) एक बार में तीन एलईडी जलाना वर्तमान कोड एक बार में केवल एक एलईडी प्रदर्शित करता है। हालांकि, यहां दिखाए गए तारों के साथ, एक ही समय में एक कैथोड लाइन से जुड़े सभी एल ई डी को रोशन करना संभव है। इसलिए, सभी नौ स्थितियों के माध्यम से साइकिल चलाने के बजाय, आपको केवल तीन कैथोड लाइनों के माध्यम से साइकिल चलाने की आवश्यकता है। 2) एलईडी प्रदर्शित करने के लिए इंटरप्ट का उपयोग करें एलईडी डिस्प्ले रूटीन और प्रसंस्करण की मात्रा के आधार पर, एलईडी कुछ डिग्री दिखा सकते हैं टिमटिमाता हुआ इंटरप्ट्स का उपयोग करके, एल ई डी के समय को ठीक से नियंत्रित किया जा सकता है और एक आसान प्रदर्शन की ओर ले जाएगा। 3) एक स्मार्ट कंप्यूटर प्लेयर वर्तमान कोड केवल कुछ केबी लेता है, एक स्मार्ट कंप्यूटर टिक टैक के कार्यान्वयन के लिए काफी कुछ और छोड़ देता है पैर की अंगुली का खिलाड़ी।आशा है कि आपको इस निर्देश को पढ़ने में उतना ही मज़ा आया जितना मुझे इस पर काम करने में मज़ा आया!

सिफारिश की: