विषयसूची:

Arduino: पिनबॉल मशीन: 8 कदम (चित्रों के साथ)
Arduino: पिनबॉल मशीन: 8 कदम (चित्रों के साथ)

वीडियो: Arduino: पिनबॉल मशीन: 8 कदम (चित्रों के साथ)

वीडियो: Arduino: पिनबॉल मशीन: 8 कदम (चित्रों के साथ)
वीडियो: Rokr Pinball : Gameplay ! 🎮😊 2024, जून
Anonim
Image
Image

जैसा कि मैंने हमेशा पिनबॉल मशीनों और इलेक्ट्रॉनिक्स दोनों से प्यार किया है, मैंने अपनी खुद की पिनबॉल मशीन बनाने का फैसला किया। मैंने प्रोग्रामिंग और इलेक्ट्रॉनिक्स के लिए Arduino को चुना, क्योंकि यह एक अत्यधिक सुलभ प्लेटफॉर्म है जो कॉम्पैक्ट और उपयोग में आसान दोनों है।

इस गाइड में मैं अपनी विकास प्रक्रिया की व्याख्या करूंगा, ताकि शायद आप में से कोई एक उत्साही कुछ समान बना सके।

चरण 1: केस का निर्माण

केस का निर्माण
केस का निर्माण

आइए पिनबॉल मशीन के मामले से शुरुआत करते हैं। मैंने काफी सरल निर्माण किया। मैंने नीचे की प्लेट को देखा, और दीवार के टुकड़ों को जोड़ने के लिए कोनों में लकड़ी के 4 छोटे खंभों का इस्तेमाल किया। आपके केस का आकार आपकी अपनी पसंद है, मैंने इसे एक मूल पिनबॉल मशीन से थोड़ा छोटा बनाना चुना क्योंकि मैं जगह भरने के लिए कोई सुपर शानदार अतिरिक्त जोड़ने की योजना नहीं बना रहा था। मैंने मामले को यथासंभव स्थिर बनाने के लिए स्क्रू और गोंद दोनों का उपयोग किया। पीठ पर मैंने दो पैरों के लिए फर्श के टुकड़े में दो छेद ड्रिल किए जो पिनबॉल मशीन को प्रतिष्ठित झुकाव देंगे। फिर से, पैरों की ऊंचाई आप पर निर्भर है। आप पैर जितना लंबा करेंगे, गेंद उतनी ही तेजी से लुढ़केगी (नीचे की ओर)।

चरण 2: फ्लिपर मैकेनिक का निर्माण

फ्लिपर मैकेनिक का निर्माण
फ्लिपर मैकेनिक का निर्माण

जैसा कि मैं इस परियोजना की लागत को सीमित करना चाहता था, मैंने इलेक्ट्रॉनिक के बजाय पूरी तरह से यांत्रिक फ्लिपर्स बनाने का फैसला किया। यदि आप इलेक्ट्रॉनिक फ़्लिपर्स में रुचि रखते हैं, तो आप एक ऐसे निर्माण का उपयोग कर सकते हैं जो कुछ हद तक समान है, लेकिन इसके साथ एक तथाकथित 'सोलेनॉइड' जुड़ा हुआ है (फ़्लिपर्स को नियंत्रित करने के लिए पर्याप्त शक्ति वाले सोलेनॉइड मेरे लिए बहुत महंगे थे)।

मैंने दोनों फ्लिपर्स के पिवट पॉइंट के लिए नीचे में दो छेद ड्रिल करके शुरू किया। मैंने छेदों को (मेरी राय में) एक-दूसरे के बहुत करीब से ड्रिल किया, और इससे खेल अंत में थोड़ा आसान हो गया। इसलिए सावधान रहें कि फ्लिपर्स को एक-दूसरे के बहुत करीब न रखें, जब तक कि आप गेमप्ले की आसान शैली नहीं चाहते।

मैंने फ़्लिपर होल के समानांतर दोनों ओर की दीवारों में दो छेद भी ड्रिल किए। इन छेदों का उपयोग दो फ्लिपर बटन के लिए किया जाना है।

मैंने फ़्लिपर्स को मूल स्थिति में वापस खींचने के लिए स्प्रिंग्स का उपयोग किया, और फ़्लिपर्स और बटनों के बीच एक पिवोटिंग निर्माण किया ताकि बटन दबाए जाने पर उन्हें घुमाया जा सके। स्प्रिंग्स को फ़्लिपर्स को बहुत दूर खींचने से रोकने के लिए, मैंने फ़्लिपर्स को उनकी मूल स्थिति में रखने के लिए दो स्क्रू लगाए।

चरण 3: दीवारों को रखना

दीवारों को रखना
दीवारों को रखना

मैंने पिनबॉल को फ़्लिपर्स की ओर पुनर्निर्देशित करने के लिए कुछ दीवारें रखीं। वे बनाने में बहुत आसान हैं। बस मामले के तल में 3 छेद ड्रिल करें, और तीन लकड़ी के पिनों में धक्का दें। पिन के चारों ओर एक रबर बैंड लपेटें और आपका काम हो गया।

चरण 4: स्कोर ब्लॉक जोड़ना

स्कोर ब्लॉक जोड़ना
स्कोर ब्लॉक जोड़ना
स्कोर ब्लॉक जोड़ना
स्कोर ब्लॉक जोड़ना

स्कोर ब्लॉक पिनबॉल मशीन के सबसे महत्वपूर्ण भागों में से एक हैं, इसलिए सुनिश्चित करें कि आप इस भाग को सही तरीके से करते हैं। मैंने अपनी पिनबॉल मशीन के लिए तीन स्कोर ब्लॉक बनाए, लेकिन फिर से यह सब आप पर निर्भर है।

मैंने झाड़ू के एक छोटे टुकड़े को देखा और उसके चारों ओर तांबे के तार लपेटे। Arduino इस तांबे के तार को लगातार 5V से बिजली देगा। मैंने गेंद के साथ बेहतर संपर्क के लिए चार पेन स्प्रिंग्स को साइड में मिलाया।

जिस तरह से स्कोर ब्लॉक काम करता है, वह यह है कि गेंद एक सर्किट को पूरा करती है जो Arduino पर एक इनपुट पिन की ओर ले जाती है। तो मैंने जो किया वह मामले के तल पर टेप एल्यूमीनियम पन्नी था (कॉपर को छूना नहीं) और पन्नी को Arduino पर एक पिन तक तार देना। जब भी गेंद तांबे और एल्यूमीनियम दोनों से टकराती है, तो सर्किट पूरा हो जाता है और Arduino को एक संकेत प्राप्त होगा।

मैंने एल्यूमीनियम पन्नी का उपयोग करके सभी स्कोर ब्लॉकों को एक साथ जोड़ा, लेकिन ध्यान रखें कि चिपचिपा पक्ष बिजली का संचालन नहीं करता है।

चरण 5: गेम ओवर कॉन्टैक्ट जोड़ना

संपर्क पर गेम जोड़ना
संपर्क पर गेम जोड़ना

पिनबॉल मशीन के निचले भाग में, फ़्लिपर्स के बीच में, मैंने संपर्क पर एक गेम जोड़ा। जब भी गेंद इस संपर्क से टकराती है, खिलाड़ी एक गेंद खो देगा। मैंने जो निर्माण किया है वह स्कोर ब्लॉक के समान ही है। केवल यहाँ मैंने दो स्क्रू का उपयोग किया, और फिर से तल पर एल्यूमीनियम पन्नी का एक टुकड़ा।

चरण 6: केबल छेद ड्रिलिंग

केबल छेद ड्रिलिंग
केबल छेद ड्रिलिंग
केबल छेद ड्रिलिंग
केबल छेद ड्रिलिंग
केबल छेद ड्रिलिंग
केबल छेद ड्रिलिंग

इससे पहले कि हम Arduino तक सब कुछ वायर करना शुरू करें, हमें पहले केबलों के लिए कुछ छेद ड्रिल करने होंगे। मैंने एल्यूमीनियम पन्नी के दोनों टुकड़ों के माध्यम से एक छेद ड्रिल किया, इसलिए एल्यूमीनियम पन्नी में एक छेद स्कोर ब्लॉक के पास, और संपर्क पर खेल के पास एल्यूमीनियम पन्नी में एक छेद।

इसके अलावा, मैंने अतिरिक्त बॉल गेट सर्वो की ओर जाने वाली केबल के लिए, दीवारों के बीच में, नीचे बाईं ओर एक छेद भी ड्रिल किया।

एलसीडी से जुड़े केबल के लिए नीचे की तरफ एक छेद भी होना चाहिए।

चरण 7: वायरिंग सब कुछ ऊपर

वायरिंग सब कुछ ऊपर
वायरिंग सब कुछ ऊपर
वायरिंग सब कुछ ऊपर
वायरिंग सब कुछ ऊपर

मैंने यह योजनाबद्ध तरीके से बेहतर अवलोकन किया कि सभी केबलों को कहाँ जाना चाहिए। क्रॉस वे बिंदु हैं जहां केबल कनेक्ट होते हैं। मैंने सब कुछ थोड़ा और स्थिर और विश्वसनीय बनाने के लिए जितना संभव हो सके मिलाप करने की कोशिश की। वायरिंग में कुछ समय लगेगा, लेकिन यह हो जाने के बाद आप लगभग वहां हैं!

चरण 8: कोड अपलोड करना

अपनी पिनबॉल मशीन को जीवंत बनाने के लिए अपने Arduino पर निम्न कोड अपलोड करें!

// LCD के लिए लाइब्रेरी शामिल करें

#शामिल करें #शामिल करें

// एलसीडी डेटा पिन को इनिशियलाइज़ करें

लिक्विड क्रिस्टल एलसीडी (7, 8, 9, 10, 11, 12);

// एक सर्वो बनाएं

सर्वो बॉलगेट सर्वो;

// हमारे द्वारा उपयोग किए जा रहे पिन के लिए वेरिएबल बनाएं

इंट गेमओवरपिन = 6; इंट स्कोरपिन = 5; इंट स्पीकरपिन = 4; इंट बॉलगेटसर्वोपिन = 3;

// पिनबॉल मशीन के लिए गेमप्ले वैरिएबल को इनिशियलाइज़ करें

इंट स्कोर = 0; इंट हाईस्कोर = ५००; बूल हाईस्कोररीच्ड = झूठा; इंट बॉल्स = 3; इंट गेमओवर टाइमर = 0; int gameoverTimerDuration = १००; बूल गेमओवर ट्रिगर = झूठा;

// इस कोड को पहले फ्रेम में एक बार चलाएं

शून्य सेटअप () {// पिन के लिए पिनमोड सेट करें जिसे हम पिनमोड (गेमओवरपिन, इनपुट) का उपयोग कर रहे हैं; पिनमोड (स्कोरपिन, इनपुट);

// चौड़ाई और ऊंचाई देकर एलसीडी को इनिशियलाइज़ करें

LCD.begin (16, 2);

// बॉल गेट सर्वो को उपयुक्त पिन में संलग्न करें

ballGateServo.attach(ballGateServoPin);

// गेट सर्वो को प्रारंभिक स्थिति में रीसेट करें

बॉलगेट सर्वो.लिखें (0); }

// इस कोड को हर एक फ्रेम में चलाएं

शून्य लूप () {// पिन इनपुट कैप्चर करें int gameoverState = digitalRead (gameoverPin); इंट स्कोरस्टेट = डिजिटलरेड (स्कोरपिन);

// इनपुट प्राप्त होने पर स्कोर में जोड़ें

अगर (स्कोरस्टेट) {टोन (स्पीकरपिन, 1000); स्कोर += 10; } और {नोटोन(4); }

// यदि गेमओवर पिट चालू हो जाता है तो गेंदों से घटाएं

अगर (गेमओवरस्टेट और! गेमओवर ट्रिगर) {गेंदें - = 1; गेमओवर ट्रिगर = सच; गेमओवर टाइमर = गेमओवर टाइमर अवधि; }

// गेमओवर टाइमर शुरू करें जैसे ही गेंद गेमओवर संपर्क को छू नहीं रही है

अगर (! गेमओवरस्टेट) {अगर (गेमओवर टाइमर> = 1) {गेमओवर टाइमर - = 1; } और {गेमओवर ट्रिगर = झूठा; } }

// गेमओवर टेक्स्ट को एलसीडी पर ब्लिंक करें और स्कोर और गेंदों को रीसेट करें

अगर (गेंद <= 0) {lcd.setCursor(0, 0); के लिए (int i = 5; i>= 1; i--) {lcd.clear(); देरी (250); LCD.print ("गेम ओवर"); LCD.setCursor(0, 1); LCD.print ("फिर से कोशिश करें?"); देरी (250); } LCD.clear (); स्कोर = 0; बॉलगेट सर्वो.लिखें (0); हाईस्कोररीच्ड = झूठा; गेंदें = 3; }

अगर (स्कोर> हाईस्कोर और !हाईस्कोररीच्ड) {

LCD.setCursor(0, 0); के लिए (int i = 5; i >= 1; i--) {lcd.clear(); देरी (250); LCD.print ("नया हाईस्कोर"); LCD.setCursor(0, 1); LCD.print ("अचानक मौत!"); देरी (250); } LCD.clear (); गेंद = 1; बॉलगेट सर्वो.राइट (120); हाईस्कोर = स्कोर; हाईस्कोररीच्ड = सच; }

// यदि वर्तमान स्कोर अधिक है तो हाईस्कोर अपडेट करें

अगर (स्कोर> हाईस्कोर) {हाईस्कोर = स्कोर; }

// कर्सर को लाइन 0. पर सेट करें

LCD.setCursor(0, 0); // एलसीडी पर करंट (हाई) स्कोर प्रिंट करें अगर (स्कोर <= 0) {lcd.print ("हाईस्कोर:" + स्ट्रिंग (हाईस्कोर) + ""); } और {lcd.print ("स्कोर:" + स्ट्रिंग (स्कोर) + ""); }

// कर्सर को लाइन 1 पर सेट करें

LCD.setCursor(0, 1);

// गेंदों की वर्तमान मात्रा को एलसीडी पर प्रिंट करें

LCD.print ("बॉल्स:" + स्ट्रिंग (बॉल्स)); }

सिफारिश की: