विषयसूची:

NeoPixels मैट्रिक्स:साँप खेल: ४ कदम
NeoPixels मैट्रिक्स:साँप खेल: ४ कदम

वीडियो: NeoPixels मैट्रिक्स:साँप खेल: ४ कदम

वीडियो: NeoPixels मैट्रिक्स:साँप खेल: ४ कदम
वीडियो: HackadayU: LED Programming with Arduino Class 1 2024, नवंबर
Anonim
NeoPixels मैट्रिक्स:साँप खेल
NeoPixels मैट्रिक्स:साँप खेल

क्या आपको अभी भी याद है कि हम बचपन में अपने गेम बॉक्स या मोबाइल पर सांप का खेल खेलते थे? आज हम 8*8 NeoPixels Matrix के साथ सांप का खेल बनाना सीखेंगे। हम सांप को नियंत्रित करने के लिए Arduino uno को नियंत्रण केंद्र और जॉयस्टिक ब्रेकआउट मॉड्यूल के रूप में चुनते हैं।

चरण 1: घटक सूची:

हार्डवेयर:

1 एक्स फ़्रेडुइनो यूएनओ रेव2.2 MB_EFUNO

1 एक्स फ्लेक्सिबल 64 आरजीबी एलईडी 8 * 8 नियोपिक्सल मैट्रिक्स

1 एक्स जॉयस्टिक ब्रेकआउट मॉड्यूल BKOUT_MD01

3 एक्स गाइड लाइन

सॉफ्टवेयर:

अरुडिनो आईडीई

चरण 2: हार्डवेयर कनेक्शन

D2 को पिन करने के लिए NeoPixels कनेक्ट करें।

जॉयस्टिक ब्रेकआउट मॉड्यूल पर "X", Arduino UNO बोर्ड पर पिन A0 कनेक्ट करें, "Y" पिन A1, "K" कनेक्ट पिन A2 कनेक्ट करें।

चरण 3: प्रोग्रामिंग

पी#शामिल

#define PIN 2 // आउटपुट पिन #define MAX_LED 64 // बीड की मात्रा uint32_t c; इंट ए = 0, संख्या; अहस्ताक्षरित चार हुआन = 0, सीआई = 0; अहस्ताक्षरित चार यू = ४०; // शब्द समूह का फ़ॉन्ट आकार अहस्ताक्षरित चार x = 0; अहस्ताक्षरित चार रंग [3]; अहस्ताक्षरित चार गो = {2, 3, 4, 5, 9, 14, 17, 20, 22, 26, 27, 29, 34, 35, 36, 37, 41, 46, 49, 54, 58, 59, 60, 61}; // २४ अहस्ताक्षरित चार प्रकाश [८] [८] = {{०, १, २, ३, ४, ५, ६, ७}, {१५, १४, १३, १२, ११, १०, ९, ८}, {16, 17, 18, 19, 20, 21, 22, 23}, {31, 30, 29, 28, 27, 26, 25, 24}, {32, 33, 34, 35, 36, 37, 38, 39}, {47, 46, 45, 44, 43, 42, 41, 40}, {48, 49, 50, 51, 52, 53, 54, 55}, {63, 62, 61, 60, 59, ५८, ५७, ५६}, }; अहस्ताक्षरित चार वर्ण [8] = // भेजे जाने वाले शब्द को सेट करें {{0, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, // 0 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, // 1 {0, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 2 {0, 1, 1, 1, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 3 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, // 4 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 5 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 6 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, // 7 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 8 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 9 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0 }, }; अहस्ताक्षरित चार डिस्प्लेकोर [८] [८]; इंट स्पीडएस = ४००; // स्नेक इंट स्कोर की प्रारंभिक गति; // गेम स्कोर इंट xValue; // जॉयस्टिक-एक्स इंट वाईवैल्यू; // जॉयस्टिक-वाई इंट zValue; // जॉयस्टिक-जेड इंट एफएक्स, एफवाई; // भोजन का समन्वय int SX, SY; // सांप के सिर का समन्वय int KEY, K; इंट सक्षम; // गेम चार एसएक्स [६४] को पुनः आरंभ करने में सक्षम करें; // स्नेक बॉडी चार सी का समन्वय [६४]; Adafruit_NeoPixel स्ट्रिप = Adafruit_NeoPixel(MAX_LED, PIN, NEO_RGB + NEO_KHZ800); शून्य रैंडम () {ए: एफएक्स = यादृच्छिक (0, 7); एफवाई = यादृच्छिक (0, 7); for (int i = 0; i <3 + Score; i++) // सांप के शरीर पर भोजन के प्रदर्शन को रोकें {if (FX == sx && FY == sy) goto A; } } void myDelay(unsigned int Time) {// सांप की गति में देरी की अवधि के दौरान, हमें भोजन चमक जैसा कुछ करना होगा और जॉयस्टिक की दिशा को पढ़ना होगा (int t = 1; t 950 && KEY!= 5) { के = 8; } और अगर (yValue <50 && KEY!= 8) {K = 5; } और अगर (xValue 950 && KEY != 4) { K = 6; } } // यहां आप तुलना कर सकते हैं कि कीपैड की दिशा सांप की चाल की दिशा के विपरीत है या नहीं। अगर यह विपरीत है, तो कीपैड को छोड़ दें। /******** *************************************************** *************************************************** *************************************************** ********/ शून्य गेमओवर () {// गेमओवर प्रोग्राम बंद होने के बाद, गेम को पुनरारंभ करने के लिए केंद्रीय बटन दबाएं। अहस्ताक्षरित चार मान, y; रंग [0] = यादृच्छिक (3, 18); // रंग सेट करें। पैरामीटर आरजीबी है, रेंज 0-255 है। रंग [1] = यादृच्छिक (3, 18); रंग [२] = यादृच्छिक (३, १८); सी = पट्टी। रंग (रंग [1], रंग [0], रंग [2]); मूल्य = स्कोर / 10; मूल्य = मूल्य * 4; वाई = 0; के लिए (संख्या = मान; संख्या <मान + 4; संख्या ++) {के लिए (अहस्ताक्षरित चार लंबवत = 0; लंबवत <8; लंबवत ++) {डिस्प्लेकोर [वाई] [ऊर्ध्वाधर] = वर्ण [संख्या] [ऊर्ध्वाधर]; } वाई++; } मान = स्कोर% 10; मूल्य = मूल्य * 4; के लिए (संख्या = मान; संख्या <मान + 4; संख्या ++) {के लिए (अहस्ताक्षरित चार लंबवत = 0; लंबवत <8; लंबवत ++) {डिस्प्लेकोर [वाई] [ऊर्ध्वाधर] = वर्ण [संख्या] [ऊर्ध्वाधर]; } वाई++; } के लिए (अहस्ताक्षरित चार क्षैतिज = 0; क्षैतिज <8; क्षैतिज ++) {के लिए (अहस्ताक्षरित चार लंबवत = 0; लंबवत <8; लंबवत ++) { अगर (डिस्प्लेस्कोर [क्षैतिज] [ऊर्ध्वाधर] == 1) // जज करें कि प्रकाश चालू है। { strip.setPixelColor (प्रकाश [क्षैतिज] [ऊर्ध्वाधर], ग); } और strip.setPixelColor (प्रकाश [क्षैतिज] [ऊर्ध्वाधर], 0); } } स्ट्रिप.शो (); // डेटा देरी भेजें (5000); के = 0; // जॉयस्टिक दिशा sx [0] = 2 रीसेट करें; एसएक्स [1] = 1; एसएक्स [२] = ०; सी [0] = 1; सी [1] = 1; सी [२] = १; // साँप समन्वय स्कोर = 0 रीसेट करें; // रीसेट गेम स्कोर स्पीडएस = ४००; // सांप की प्रारंभिक गति} शून्य सेटअप () {Serial.begin (९६००); // लाइब्रेरी स्ट्रिप को इनिशियलाइज़ करें। शुरू (); // डेटा भेजें। प्रत्येक बिंदु के रंग को 0 के रूप में डिफ़ॉल्ट करें। इसलिए प्रत्येक बिंदु शुरुआत में प्रकाशित नहीं होता है। कपड़े उतारने का प्रदर्शन(); के = 0; // जॉयस्टिक sx [0] = 2 की दिशा रीसेट करें; एसएक्स [1] = 1; एसएक्स [२] = ०; सी [0] = 1; सी [1] = 1; सी [२] = १; // साँप समन्वय स्कोर = 0 रीसेट करें; // गेम स्कोर रीसेट करें रंग [0] = यादृच्छिक (3, 18); // रंग सेट करें। पैरामीटर आरजीबी है, रेंज 0-255 है। रंग [1] = यादृच्छिक (3, 18); रंग [२] = यादृच्छिक (३, १८); सी = पट्टी। रंग (रंग [1], रंग [0], रंग [2]); // हरा लाल नीला // के लिए रंग सेट करें (संख्या = 0; संख्या <24; संख्या ++) {trip.setPixelColor (जाओ [संख्या], सी); } स्ट्रिप.शो ();// डेटा देरी भेजें (2000); यादृच्छिक रूप से(); // भोजन का उत्पादन करें} शून्य मोबाइल () {कुंजी = के; // सांप की हर हरकत एक बार के लिए दिशा बदल देती है। अगर (कुंजी == 8) // सांप ऊपर की ओर गति {के लिए (int i = 2 + स्कोर; i> 0; i--) {sx = sx [i - 1]; सी = एसई [i - 1]; } सी [0] = एसवाई [0] - 1; अगर (sy[0] <0) // सीमा से आगे बढ़ें और दूसरी तरफ जारी रखें sy[0] = 7; } और अगर (कुंजी == 5) // सांप नीचे की ओर गति {के लिए (int i = 2 + स्कोर; i> 0; i--) {sx = sx [i - 1]; सी = एसई [i - 1]; } सी [0] = एसवाई [0] + 1; अगर (sy[0] > 7) // सीमा के पार जाएं और दूसरी तरफ जारी रखें sy[0] = 0; } और अगर (कुंजी == 4) // सांप ने आंदोलन छोड़ दिया {के लिए (int i = 2 + स्कोर; i> 0; i--) {sx = sx [i - 1]; सी = एसई [i - 1]; } एसएक्स [0] = एसएक्स [0] - 1; अगर (एसएक्स [0] <0) // सीमा से परे जाएं और दूसरी तरफ एसएक्स [0] = 7 जारी रखें; } और अगर (कुंजी == 6) // सांप सही गति {के लिए (int i = 2 + स्कोर; i> 0; i--) {sx = sx [i - 1]; सी = एसई [i - 1]; } एसएक्स [0] = एसएक्स [0] + 1; अगर (sx[0] > 7) // सीमा के पार जाएं और दूसरी तरफ sx[0] = 0 जारी रखें; } // बटन के साथ सांप के शरीर को ले जाएं } शून्य डिस्प्ले () { के लिए (संख्या = 0; संख्या <64; संख्या ++) // स्क्रीन साफ़ करें {trip.setPixelColor (संख्या, 0); } कपड़े उतारने का प्रदर्शन(); रंग [0] = ४०; // रंग सेट करें। पैरामीटर आर जी बी है, रेंज 0-255 है। रंग [1] = 0; रंग [२] = ०; सी = पट्टी। रंग (रंग [1], रंग [0], रंग [2]); // हरा लाल नीला // रंग x = प्रकाश सेट करें [FX] [वित्त वर्ष]; // भोजन पट्टी प्रदर्शित करें। सेट पिक्सेल रंग (एक्स, सी); रंग [0] = यादृच्छिक (3, 18); // रंग सेट करें। पैरामीटर आर जी बी है, रेंज 0-255 है। रंग [1] = यादृच्छिक (3, 18); रंग [२] = यादृच्छिक (३, १८); सी = पट्टी। रंग (रंग [1], रंग [0], रंग [2]); // हरा लाल नीला // के लिए रंग सेट करें (int i = 2 + स्कोर; i> 0; i--) // सांप का शरीर प्रदर्शित करें {x = प्रकाश [sx [sy ; स्ट्रिप.सेट पिक्सेल रंग (एक्स, सी); } रंग [0] = 0; // रंग सेट करें। पैरामीटर आर जी बी, रेंज 0-255 है। रंग [1] = ४०; रंग [२] = ०; सी = पट्टी। रंग (रंग [1], रंग [0], रंग [2]); // हरा लाल नीला // रंग x = प्रकाश सेट करें [sx [0] [sy [0]; // स्नेक हेड स्ट्रिप प्रदर्शित करें। सेट पिक्सेलकलर (एक्स, सी); स्ट्रिप.शो (); // डेटा भेजें} शून्य लूप () {मोबाइल (); myDelay (स्पीडएस); // भीतर() देरी का समय है। प्रदर्शित करता है (); एसएक्स = एसएक्स [0]; एसवाई = एसवाई [0]; // सांप के सिर का समन्वय प्राप्त करें (int i = 1; i <= 2 + स्कोर; i ++) {if (SX == sx && SY == sy ) गेमओवर (); } // जज करें कि क्या सांप के सिर ने उसके शरीर को छुआ है। अगर छुआ है, तो GameOver को अग्रेषित करें। अगर (एसवाई == वित्तीय वर्ष && एसएक्स == एफएक्स) {रैंडम (); स्कोर ++; रंग [0] = ४०; // रंग सेट करें। पैरामीटर आर जी बी है, रेंज 0-255 है। रंग [1] = 0; रंग [२] = ०; सी = पट्टी। रंग (रंग [1], रंग [0], रंग [2]); // हरा लाल नीला // रंग x = प्रकाश सेट करें [FX] [वित्त वर्ष]; // खाद्य पट्टी प्रदर्शित करें। सेट पिक्सेल रंग (एक्स, सी); स्ट्रिप.शो (); // डेटा भेजें अगर (!(स्कोर% 5)) {// स्कोर के अनुसार सांप की गति तेज करें। खाए गए प्रत्येक 5 खाद्य पदार्थ, 100ms की गति बढ़ाएं। गतिएस = गतिएस - 50; अगर (स्पीडएस <150) // नीचे की सीमा 200ms है। यदि गति 200ms से कम है, तो गति 200ms रहती है। स्पीडएस = १५०; } } // जज करें कि क्या खाना खाया जाता है। अगर सांप ने खाना खाया, तो प्लस स्कोर और भोजन को बेतरतीब ढंग से पुन: उत्पन्न करता है। }

प्रयोग परिणाम

चरण 4: प्रयोग परिणाम

सापेक्ष रीडिंग:

फ्रीक्सबॉट ब्लूटूथ कार

Arduino के साथ 8*8 NeoPixels मैट्रिक्स पर पहला मनका जलाएं

माइक्रो: बिट एक्सपेरिमेंट 05: RGB LED - Elecfreaks Mirco: बिट स्टार्टर किट कोर्स

शुक्रवार उत्पाद पोस्ट: एलईडी संगीत आवृत्ति स्पेक्ट्रम प्रदर्शन सोल्डरिंग किट

स्मार्ट लाइट बनाने के लिए ElecFreaks माइक्रो: बिट टिंकर किट का उपयोग करें

सिफारिश की: