সুচিপত্র:

আইআর-রিমোট কালার গেসিং গেম: 3 ধাপ
আইআর-রিমোট কালার গেসিং গেম: 3 ধাপ

ভিডিও: আইআর-রিমোট কালার গেসিং গেম: 3 ধাপ

ভিডিও: আইআর-রিমোট কালার গেসিং গেম: 3 ধাপ
ভিডিও: TV/AC Remote অরিজিনাল রিমোট এর পাইকারী দাম জানুন। TV/ AC Remote price in BD। Led tv price in BD 2024, সেপ্টেম্বর
Anonim
আইআর-রিমোট কালার গেসিং গেম
আইআর-রিমোট কালার গেসিং গেম

এই নির্দেশে, আমি আপনাকে দেখাবো কিভাবে একটি আইআর-রিমোট ব্যবহার করে একটি আরজিবি নেতৃত্বকে নিয়ন্ত্রণ করা যায় এবং এটি থেকে একটি মজার খেলা তৈরি করা যায়!

ধাপ 1: যন্ত্রাংশ প্রয়োজন

যন্ত্রাংশ প্রয়োজন
যন্ত্রাংশ প্রয়োজন

এই প্রকল্পের জন্য আপনার যে অংশগুলির প্রয়োজন হবে তা হল:

- আরডুইনো ওয়ান- আরজিবি LED- আইআর-সেন্সর

(নেতৃত্ব গণনা খেলা, জীবনের পরিমাণ বা) উপর নির্ভর করে

ধাপ 2: কোড

#অন্তর্ভুক্ত

int redPin = 10;

int greenPin = 6; int bluePin = 5;

int levensPin1 = 8;

int levensPin2 = 9; int levensPin3 = 12;

int levelPin1 = 2;

int levelPin2 = 3; int levelPin3 = 4; int levelPin4 = 7;

int RECV_PIN = 11;

IRrecv irrecv (RECV_PIN); decode_results ফলাফল;

// ইনপুট রং

int ইনপুট = {-1, -1, -1}; int রঙ = {-1, -1, -1};

int indexNumber = 0;

int indexColor = 0;

int waarde = 0;

int rood = 0;

int groen = 0; int blauw = 0;

// রং তৈরি করুন

int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;

// গেম ভেরিয়েবল

int diff = 200;

int levelNumber = 1;

int স্তর = {-1, -1, -1, -1};

int t = 0;

int level1 = 255;

int level2 = 0; int level3 = 0; int level4 = 0;

int জীবন = 3;

int levens1 = 255; int levens2 = 255; int levens3 = 255;

int roodGok = 0;

int groenGok = 0; int blauwGok = 0;

অকার্যকর সেটআপ() {

Serial.begin (9600); irrecv.enableIRIn (); // রিসিভার পিনমোড শুরু করুন (রেডপিন, আউটপুট); পিনমোড (গ্রীনপিন, আউটপুট); পিনমোড (নীলপিন, আউটপুট);

pinMode (levensPin1, OUTPUT);

pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);

}

অকার্যকর লুপ () {

যদি (irrecv.decode (& results)) // দূরবর্তী থেকে সংকেত পান {Serial.println (results.value, DEC); // প্রতিটি চাপানো বোতাম irrecv.resume () থেকে প্রাপ্ত সংকেত প্রদর্শন করুন; // পরবর্তী সিগন্যাল সুইচ পান (results.value) {// সিগন্যালগুলিকে বোতামে সংখ্যায় পরিণত করুন এবং বোতামে অ্যাকশন বরাদ্দ করুন

কেস 109562864:

অ্যাডওয়ার্ড (1); বিরতি;

কেস 109562824:

অ্যাডওয়ার্ড (2); বিরতি;

কেস 109562856:

অ্যাডওয়ার্ড (3); বিরতি;

কেস 109562872:

অ্যাডওয়ার্ড (4); বিরতি;

কেস 109562820:

অ্যাডওয়ার্ড (5); বিরতি;

কেস 109562852:

অ্যাডওয়ার্ড (6); বিরতি;

কেস 109562868:

অ্যাডওয়ার্ড (7); বিরতি;

কেস 109562828:

অ্যাডওয়ার্ড (8); বিরতি;

কেস 109562860:

অ্যাডওয়ার্ড (9); বিরতি;

কেস 109562876:

অ্যাডওয়ার্ড (0); বিরতি;

কেস 109562818: // oud ding enter/R CLK

handleInput (); বিরতি;

কেস 109562816: // আউড ডিং পাওয়ার

হ্যান্ডেল কালার (); বিরতি; কেস 109562878: // আউড ডিং বাতিল/এল সিএলকে রিসেট কালার (); বিরতি;

কেস 109562866: // lege knop midden

এলোমেলো রং(); বিরতি;

কেস 109562830: // pijltje naar rechts

displayEverything (); বিরতি; কেস 109562838: // esc কেস 109562822: // এভি সোর্স রিসেট সবকিছু (); বিরতি; }

// রঙ নিয়ন্ত্রণের জন্য রিমোটে বোতাম বরাদ্দ করুন: এইভাবে, খেলোয়াড়রা দেখতে পারে যে রঙগুলি কেমন দেখাচ্ছে এবং কীভাবে তাদের একত্রিত করা যায়, // খেলা শুরুর আগে। সুইচ (results.value) {case 109562840: rood = 255; বিরতি;

কেস 109562844:

groen = 255; বিরতি;

কেস 109562850:

blauw = 255; বিরতি;

কেস 109562836:

rood = 0; groen = 0; blauw = 0; বিরতি; }

}

analogWrite (redPin, abs (255 - rood)); // নিয়ন্ত্রণ RGB নেতৃত্বে: বিপরীত, কারণ আমার বিপরীত তারের হয়।

analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));

// লাইভ এলইডি নিয়ন্ত্রণ

যদি (জীবন == 2) {levens1 = 0; } যদি (জীবন == 1) {levens2 = 0; } যদি (জীবন == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);

// নিয়ন্ত্রণ স্তর এলইডি

যদি (levelNumber == 1) {level1 = 255; } যদি (levelNumber == 2) {level1 = 255; স্তর 2 = 255; } যদি (levelNumber == 3) {level1 = 255; স্তর 2 = 255; স্তর 3 = 255; } যদি (levelNumber == 4) {level1 = 255; স্তর 2 = 255; স্তর 3 = 255; স্তর 4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);

}

অকার্যকর addWaarde (int মান) {// তালিকায় চাপানো মান যোগ করুন

যদি (indexNumber == 3) {

প্রত্যাবর্তন; }

যদি (ইনপুট [indexNumber] == -1) {

ইনপুট [indexNumber] = মান; indexNumber ++; }}

void handleInput () {// তালিকা থেকে একটি 'ওয়ার্ডে' (মান) তৈরি করুন

waarde = abs (ইনপুট [0] * 100 + ইনপুট [1] * 10 + ইনপুট [2]); ইনপুট [0] = -1; // সিগন্যাল ইনপুট রিসেট করুন [1] = -1; ইনপুট [2] = -1;

indexNumber = 0;

Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }

void addColor (int waarde) {// একটি তালিকায় 3-অঙ্কের 'ওয়ার্ডে' যোগ করুন

যদি (indexColor == 3) {

প্রত্যাবর্তন; }

যদি (রঙ [indexColor] == -1) {

রঙ [indexColor] = waarde; যদি (color [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }

}

void randomColor () {// আলোকে এলোমেলো রঙে পরিণত করুন এবং ভেরিয়েবলে সংরক্ষণ করুন

roodRandom = এলোমেলো (0, 255);

groenRandom = এলোমেলো (0, 255);

blauwRandom = এলোমেলো (0, 255);

rood = roodRandom;

groen = groenRandom; blauw = blauwRandom; সিরিয়াল.প্রিন্ট ("roodRandom ="); Serial.println (roodRandom); সিরিয়াল.প্রিন্ট ("groenRandom ="); Serial.println (groenRandom); সিরিয়াল.প্রিন্ট ("blauwRandom ="); Serial.println (blauwRandom);

}

void handleColor () {// তালিকা থেকে 'waarde' কে 'Gok' (অনুমান) ভেরিয়েবলে পরিণত করুন

roodGok = রঙ [0]; groenGok = রঙ [1]; blauwGok = রঙ [2]; // যাচাই করুন Gok ভেরিয়েবলগুলি আসল এলোমেলো রঙের সাথে খুব বেশি পার্থক্য করে কিনা: যদি তা হয় তবে অনুমানটি তিন সেকেন্ডের জন্য প্রদর্শন করুন, সবুজ ঝলকান এবং আবার রঙ পরিবর্তন করুন, একটি লেভেল যোগ করুন এবং অনুমোদিত পার্থক্যটি ছোট করুন // যদি না হয় তবে প্রদর্শন করুন তিন সেকেন্ডের জন্য অনুমান করুন, লাল জ্বলুন এবং একটি জীবন কেটে ফেলুন // যদি আপনি জীবনের বাইরে থাকেন, তাহলে খেলা আবার শুরু হবে যদি (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); বিলম্ব (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); বিলম্ব (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); বিলম্ব (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (300);

সিরিয়াল.প্রিন্ট ("roodGok =");

Serial.println (roodGok); সিরিয়াল.প্রিন্ট ("groenGok ="); Serial.println (groenGok); সিরিয়াল.প্রিন্ট ("blauwGok ="); Serial.println (blauwGok); resetColor (); এলোমেলো রং(); levelNumber ++; diff -= 50; } অন্য {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); বিলম্ব (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (300); সিরিয়াল.প্রিন্ট ("roodGok ="); Serial.println (roodGok); সিরিয়াল.প্রিন্ট ("groenGok ="); Serial.println (groenGok); সিরিয়াল.প্রিন্ট ("blauwGok ="); Serial.println (blauwGok);

resetColor ();

জীবন--; } যদি (জীবন == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); বিলম্ব (100); সবকিছু পুনরায় সেট করুন (); }

}

অকার্যকর resetColor () {// রিসেট মানগুলির জন্য ব্যবহার করুন, একটি ভুল প্রেস বা প্রতিটি নতুন অনুমানের জন্য (শুধু নিশ্চিততার জন্য)

রঙ [0] = -1; রঙ [1] = -1; রঙ [2] = -1;

indexNumber = 0;

indexColor = 0; }

void resetEverything () {// গেমটি পুনরায় চালু করুন

রঙ [0] = -1; রঙ [1] = -1; রঙ [2] = -1;

indexNumber = 0;

indexColor = 0;

জীবন = 3;

rood = 0; groen = 0; blauw = 0;

roodRandom = 0;

groenRandom = 0; blauwRandom = 0;

levens1 = 255;

levens2 = 255; levens3 = 255;

স্তর 1 = 255;

স্তর 2 = 0; স্তর 3 = 0; স্তর 4 = 0;

স্তর সংখ্যা = 1;

t = 0;

}

void displayEverything () {// সিরিয়াল মনিটরে গুরুত্বপূর্ণ তথ্য প্রদর্শন করতে এটি ব্যবহার করুন

সিরিয়াল.প্রিন্ট ("roodGok ="); Serial.println (roodGok); সিরিয়াল.প্রিন্ট ("groenGok ="); Serial.println (groenGok); সিরিয়াল.প্রিন্ট ("blauwGok ="); Serial.println (blauwGok); সিরিয়াল.প্রিন্ট ("roodRandom ="); Serial.println (roodRandom); সিরিয়াল.প্রিন্ট ("groenRandom ="); Serial.println (groenRandom); সিরিয়াল.প্রিন্ট ("blauwRandom ="); Serial.println (blauwRandom);

Serial.print ("rood =");

Serial.println (rood); Serial.print ("groen ="); Serial.println (groen); Serial.print ("blauw ="); Serial.println (blauw);

Serial.print ("waarde opgeslagen:");

Serial.println (waarde); }

ধাপ 3: নির্মাণ

নির্মাণ
নির্মাণ
নির্মাণ
নির্মাণ
নির্মাণ
নির্মাণ
নির্মাণ
নির্মাণ

আপনি অবশ্যই এই প্রকল্পের জন্য একটি সুন্দর নির্মাণ চান। এই অংশটি ব্যাখ্যার জন্য বেশ উন্মুক্ত, তবে এর সাথে কিছু বিষয় মনে রাখা দরকার: - সামনের প্যানেলটি পাতলা রাখুন, যাতে আপনি এখনও এর মাধ্যমে আপনার লেডগুলি আটকে রাখতে পারেন এবং আইআর -রিসিভার এখনও কাজ করে

- আরডুইনো এবং সোল্ডার বোর্ডের জন্য বিল্ডে পর্যাপ্ত জায়গা রাখুন

- আরডুইনো শক্তির জন্য পিছনে একটি গর্ত আছে তা নিশ্চিত করুন

আমি তারের জন্য একটি রুক্ষ স্কিম যোগ করেছি।

গুড লাক এবং মজা আছে!

প্রস্তাবিত: