विषयसूची:

आईआर-रिमोट कलर गेसिंग गेम: 3 स्टेप्स
आईआर-रिमोट कलर गेसिंग गेम: 3 स्टेप्स

वीडियो: आईआर-रिमोट कलर गेसिंग गेम: 3 स्टेप्स

वीडियो: आईआर-रिमोट कलर गेसिंग गेम: 3 स्टेप्स
वीडियो: This SENSOR DRONE is lit🔥| Buying weird things #2 2024, जुलाई
Anonim
आईआर-रिमोट कलर गेसिंग गेम
आईआर-रिमोट कलर गेसिंग गेम

इस निर्देश में, मैं आपको दिखाऊंगा कि IR-रिमोट का उपयोग करके RGB एलईडी को कैसे नियंत्रित किया जाए, और इससे एक मजेदार गेम बनाया जाए!

चरण 1: आवश्यक भागों

भागों की जरूरत
भागों की जरूरत

इस परियोजना के लिए आपको जिन भागों की आवश्यकता होगी वे हैं:

- arduino one- RGB LED- IR-Sensor

(एलईडी गिनती खेल पर निर्भर करती है, जीवन की मात्रा या) - 2 हरी एलईडी- 1 पीला एलईडी - 1 नारंगी एलईडी- 3 लाल एलईडी

चरण 2: कोड

#शामिल

इंट रेडपिन = 10;

इंट ग्रीनपिन = 6; इंट ब्लूपिन = 5;

इंट लेवेन्सपिन1 = 8;

इंट लेवेन्सपिन२ = ९; इंट लेवेन्सपिन३ = १२;

इंट लेवलपिन1 = 2;

इंट लेवलपिन२ = ३; इंट लेवलपिन३ = ४; इंट लेवलपिन4 = 7;

इंट RECV_PIN = 11;

IRrecv irrecv (RECV_PIN); decode_results परिणाम;

// इनपुट रंग

इंट इनपुट = {-1, -1, -1}; इंट कलर = {-1, -1, -1};

इंट इंडेक्सनंबर = 0;

इंट इंडेक्सकलर = 0;

इंट वार्डे = 0;

इंट रूड = 0;

इंट ग्रोन = 0; इंट ब्लौव = 0;

// रंग उत्पन्न करें

इंट रूडरैंडम = 0; int groenRandom = 0; इंट ब्लौव रैंडम = 0;

// खेल चर

अंतर अंतर = २००;

इंट लेवलनंबर = 1;

इंट लेवल = {-1, -1, -1, -1};

इंट टी = 0;

इंट लेवल1 = 255;

इंट लेवल2 = 0; इंट लेवल3 = 0; इंट लेवल4 = 0;

इंट लाइफ = 3;

इंट लेवेन्स1 = 255; इंट लेवेन्स2 = २५५; इंट लेवेन्स३ = २५५;

इंट रूडगोक = 0;

इंट ग्रोनगोक = 0; इंट ब्लौवगोक = 0;

व्यर्थ व्यवस्था() {

सीरियल.बेगिन (९६००); ircv.enableIRIn (); // रिसीवर पिनमोड (रेडपिन, आउटपुट) शुरू करें; पिनमोड (ग्रीनपिन, आउटपुट); पिनमोड (ब्लूपिन, आउटपुट);

पिनमोड (लेवेन्सपिन 1, आउटपुट);

पिनमोड (लेवेन्सपिन 2, आउटपुट); पिनमोड (लेवेन्सपिन 3, आउटपुट);

}

शून्य लूप () {

if (irrecv.decode(&results)) // रिमोट से सिग्नल प्राप्त करें { Serial.println(results.value, DEC); // प्रत्येक दबाए गए बटन से प्राप्त संकेतों को प्रदर्शित करें Irecv.resume (); // अगला सिग्नल स्विच प्राप्त करें (results.value) {// संकेतों को बटनों पर संख्याओं में बदलें, और बटनों को कार्रवाई असाइन करें

मामला 109562864:

एडवार्डे(1); टूटना;

मामला 109562824:

एडवार्डे(२); टूटना;

मामला 109562856:

एडवार्डे(३); टूटना;

मामला 109562872:

एडवार्डे(४); टूटना;

मामला 109562820:

एडवार्डे(५); टूटना;

मामला 109562852:

एडवार्डे(६); टूटना;

मामला 109562868:

एडवार्डे(7); टूटना;

मामला 109562828:

एडवार्डे(8); टूटना;

मामला १०९५६२८६०:

एडवार्डे (9); टूटना;

मामला 109562876:

एडवार्डे (0); टूटना;

केस १०९५६२८१८: // उड डिंग एंटर/आर CLK

हैंडल इनपुट (); टूटना;

केस १०९५६२८१६: // ऊद डिंग पावर

हैंडल रंग (); टूटना; केस १०९५६२८७८: // उड डिंग कैंसिल/एल सीएलके रीसेट कलर (); टूटना;

केस १०९५६२८६६: //लेज नोप मिडन

यादृच्छिक रंग(); टूटना;

केस १०९५६२८३०: // पिज्लत्जे नार रेच्ट्स

डिस्प्लेएवरीथिंग (); टूटना; केस 109562838: // esc केस 109562822: // AV सोर्स रीसेटएवरीथिंग (); टूटना; }

// रंग को नियंत्रित करने के लिए रिमोट पर बटन असाइन करें: इस तरह, खिलाड़ी देख सकते हैं कि रंग क्या दिखते हैं और उन्हें कैसे संयोजित करना है, // खेल शुरू करने से पहले। स्विच (परिणाम। मूल्य) {केस १०९५६२८४०: rood = २५५; टूटना;

मामला 109562844:

ग्रोएन = 255; टूटना;

मामला 109562850:

ब्लॉव = २५५; टूटना;

मामला 109562836:

रूड = 0; ग्रोएन = 0; ब्लौव = 0; टूटना; }

}

एनालॉगवर्इट (रेडपिन, एब्स (255 - रूड)); // आरजीबी एलईडी को नियंत्रित करना: रिवर्स में, क्योंकि मेरा रिवर्स में वायर्ड है।

एनालॉगवर्इट (ग्रीनपिन, एब्स (255 - ग्रोन)); एनालॉगवर्इट (ब्लूपिन, एब्स (255 - ब्लाउ));

// लाइव एलईडी को नियंत्रित करना

अगर (जीवन == 2){ लेवेन्स1 = 0; } अगर (जीवन == 1){ लेवेन्स2 = 0; } अगर (जीवन == 0){ लेवेन्स3 = 0; } AnalogWrite(levensPin1, levens1); एनालॉगवर्इट (लेवेन्सपिन 2, लेवेन्स 2); एनालॉगवर्इट (लेवेन्सपिन 3, लेवेन्स 3);

// नियंत्रण स्तर एल ई डी

अगर (स्तर संख्या == 1) {स्तर 1 = 255; } अगर (स्तर संख्या == 2) {स्तर 1 = 255; स्तर २ = २५५; } अगर (स्तर संख्या == 3) {स्तर 1 = 255; स्तर २ = २५५; स्तर3 = 255; } अगर (स्तर संख्या == 4) {स्तर 1 = 255; स्तर २ = २५५; स्तर ३ = २५५; स्तर 4 = 255; } एनालॉगवर्इट (लेवलपिन 1, लेवल 1); एनालॉगवर्इट (लेवलपिन 2, लेवल 2); एनालॉगवर्इट (लेवलपिन 3, लेवल 3); एनालॉगवर्इट (लेवलपिन 4, लेवल 4);

}

शून्य एडवार्डे (इंट वैल्यू) {// दबाए गए मूल्य को सूची में जोड़ें

अगर (इंडेक्सनंबर == 3) {

वापसी; }

अगर (इनपुट [इंडेक्सनंबर] == -1) {

इनपुट [इंडेक्सनंबर] = मान; इंडेक्सनंबर++; } }

शून्य हैंडलइनपुट () {// सूची से एक 'वार्ड' (मान) बनाएं

वार्डे = एब्स (इनपुट [0] * 100 + इनपुट [1] * 10 + इनपुट [2]); इनपुट [0] = -1; // रीसेट डे सिग्नल इनपुट [1] = -1; इनपुट [2] = -1;

सूचकांक संख्या = 0;

Serial.print ("वार्डे ओपगेस्लागेन:"); सीरियल.प्रिंट्लन (वार्डे); एडकलर (वार्डे); }

void addColor(int waarde) {// 3 अंकों वाले 'वार्डे' को सूची में जोड़ें

अगर (इंडेक्स कलर == 3) {

वापसी; }

अगर (रंग [सूचकांक रंग] == -1) {

रंग [सूचकांक रंग] = वार्डे; अगर (रंग [सूचकांक]> 255) {रंग [अनुक्रमणिका रंग] = 255; } अनुक्रमणिका रंग++; }

}

शून्य यादृच्छिक रंग () {// प्रकाश को एक यादृच्छिक रंग में बदल दें और इसे चर में सहेजें

रोडरैंडम = यादृच्छिक (0, 255);

groenRandom = यादृच्छिक (0, 255);

ब्लाउरैंडम = यादृच्छिक (0, 255);

रूड = रूडरैंडम;

ग्रोएन = ग्रोन रैंडम; ब्लौव = ब्लौव रैंडम; सीरियल.प्रिंट ("रूड रैंडम ="); Serial.println(roodRandom); सीरियल.प्रिंट ("ग्रोन रैंडम ="); Serial.println(groenRandom); सीरियल.प्रिंट ("ब्लौव रैंडम ="); Serial.println (blauwRandom);

}

शून्य हैंडलकोलर () {// 'वार्डे' को सूची से 'गोक' (अनुमान) चर में बदल दें

रूडगोक = रंग [0]; ग्रोनगोक = रंग [1]; ब्लाउगोक = रंग [२]; // जांचें कि क्या गोक चर वास्तविक यादृच्छिक रंग के साथ बहुत अधिक भिन्न हैं: यदि ऐसा है, तो तीन सेकंड के लिए अनुमान प्रदर्शित करें, हरे रंग को झपकाएं और फिर से रंग बदलें, एक स्तर जोड़ें abd अनुमत अंतर को छोटा करें // यदि नहीं, तो प्रदर्शित करें तीन सेकंड के लिए अनुमान लगाएं, लाल पलकें झपकाएं और एक जीवन काट लें // यदि आप जीवन से बाहर हैं, तो खेल फिर से शुरू होता है अगर (abs((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff){ एनालॉगवर्इट (रेडपिन, एब्स (255 - रूडगोक)); एनालॉगवर्इट (ग्रीनपिन, एब्स (255 - ग्रोनगोक)); एनालॉगवर्इट (ब्लूपिन, एब्स (255 - ब्लौवगोक)); देरी (3000); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 0); एनालॉगवर्इट (ब्लूपिन, 255); देरी (300); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (300); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 0); एनालॉगवर्इट (ब्लूपिन, 255); देरी (300); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (300);

सीरियल.प्रिंट ("रूडगोक =");

सीरियल.प्रिंट्लन (रूडगोक); सीरियल.प्रिंट ("ग्रोनगोक ="); सीरियल.प्रिंट्लन (ग्रोनगोक); सीरियल.प्रिंट ("ब्लौवगोक ="); Serial.println (blauwGok); रीसेट रंग (); यादृच्छिक रंग(); लेवलनंबर++; अंतर - = 50; } और {एनालॉगवाइट (रेडपिन, एब्स (255 - रूडगोक)); एनालॉगवर्इट (ग्रीनपिन, एब्स (255 - ग्रोनगोक)); एनालॉगवर्इट (ब्लूपिन, एब्स (255 - ब्लौवगोक)); देरी (3000); एनालॉगवर्इट (रेडपिन, 0); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (300); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (300); एनालॉगवर्इट (रेडपिन, 0); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (300); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (300); सीरियल.प्रिंट ("रूडगोक ="); सीरियल.प्रिंट्लन (रूडगोक); सीरियल.प्रिंट ("ग्रोनगोक ="); सीरियल.प्रिंट्लन (ग्रोनगोक); सीरियल.प्रिंट ("ब्लौवगोक ="); Serial.println (blauwGok);

रीसेट रंग ();

जीवन--; } अगर (जीवन == 0) {एनालॉगवाइट (रेडपिन, 0); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (100); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (100); एनालॉगवर्इट (रेडपिन, 0); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (100); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (100); एनालॉगवर्इट (रेडपिन, 0); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (100); एनालॉगवर्इट (रेडपिन, 255); एनालॉगवर्इट (ग्रीनपिन, 255); एनालॉगवर्इट (ब्लूपिन, 255); देरी (100); रीसेट सब कुछ (); }

}

शून्य रीसेट रंग () {// रीसेट मानों के लिए उपयोग करें, गलत प्रेस या हर नए अनुमान के लिए (केवल निश्चितता के लिए)

रंग [0] = -1; रंग [1] = -1; रंग [२] = -1;

अनुक्रमणिका संख्या = 0;

सूचकांक रंग = 0; }

शून्य रीसेट सब कुछ () {// खेल को पुनरारंभ करें

रंग [0] = -1; रंग [1] = -1; रंग [२] = -1;

अनुक्रमणिका संख्या = 0;

सूचकांक रंग = 0;

जीवन = ३;

रूड = 0; ग्रोएन = 0; ब्लौव = 0;

रोडरैंडम = 0;

ग्रोन रैंडम = 0; ब्लौव रैंडम = 0;

लेवेन्स1 = 255;

लेवेन्स2 = 255; लेवेन्स3 = 255;

स्तर 1 = 255;

स्तर २ = ०; स्तर3 = 0; स्तर 4 = 0;

स्तर संख्या = 1;

टी = 0;

}

शून्य डिस्प्लेएवरीथिंग () {// सीरियल मॉनिटर पर महत्वपूर्ण जानकारी प्रदर्शित करने के लिए इसका उपयोग करें

सीरियल.प्रिंट ("रूडगोक ="); सीरियल.प्रिंट्लन (रूडगोक); सीरियल.प्रिंट ("ग्रोनगोक ="); सीरियल.प्रिंट्लन (ग्रोनगोक); सीरियल.प्रिंट ("ब्लौवगोक ="); Serial.println (blauwGok); सीरियल.प्रिंट ("रूड रैंडम ="); Serial.println(roodRandom); सीरियल.प्रिंट ("ग्रोन रैंडम ="); Serial.println (groenRandom); सीरियल.प्रिंट ("ब्लौव रैंडम ="); Serial.println (blauwRandom);

सीरियल.प्रिंट ("रूड =");

सीरियल.प्रिंट्लन (रूड); सीरियल.प्रिंट ("ग्रोएन ="); सीरियल.प्रिंट्लन (ग्रोन); सीरियल.प्रिंट ("ब्लौव ="); सीरियल.प्रिंट्लन (ब्लाउ);

Serial.print ("वार्डे ओपगेस्लागेन:");

सीरियल.प्रिंट्लन (वार्डे); }

चरण 3: बिल्ड

निर्माण
निर्माण
निर्माण
निर्माण
निर्माण
निर्माण
निर्माण
निर्माण

आप स्पष्ट रूप से इस परियोजना के लिए एक अच्छा निर्माण चाहते हैं। यह हिस्सा व्याख्या के लिए काफी खुला है, लेकिन इसके साथ ध्यान में रखने के लिए कुछ चीजें हैं: - सामने के पैनल को पतला रखें, ताकि आप अभी भी इसके माध्यम से अपने एलईडी चिपका सकें और आईआर-रिसीवर अभी भी काम करता है

- आर्डिनो और सोल्डर बोर्ड के निर्माण में पर्याप्त जगह रखें

- सुनिश्चित करें कि आर्डिनो की शक्ति के लिए पीठ में एक छेद है

मैंने वायरिंग के लिए एक रफ स्कीम जोड़ी है।

गुड लक और मजा करें!

सिफारिश की: