فهرست مطالب:

IR-Remote Remote Color Game: 3 Step
IR-Remote Remote Color Game: 3 Step

تصویری: IR-Remote Remote Color Game: 3 Step

تصویری: IR-Remote Remote Color Game: 3 Step
تصویری: car 48 LED Multicolour Interior Strip Light with Sound Active Function & remote | car fancy light 2024, دسامبر
Anonim
بازی IR-Remote Color Guessing
بازی IR-Remote Color Guessing

در این دستورالعمل ، من به شما نشان خواهم داد که چگونه یک رهبری RGB را با استفاده از ریموت IR کنترل کنید و از آن یک بازی سرگرم کننده بسازید!

مرحله 1: قطعات مورد نیاز

قطعات مورد نیاز
قطعات مورد نیاز

قطعات مورد نیاز برای این پروژه عبارتند از:

- arduino one- RGB Led- IR-Sensor

(شمارش led بستگی به بازی ، میزان زندگی یا)- 2 عدد led سبز- 1 led زرد- 1 led نارنجی- 3 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 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؛

سطح intNumber = 1 ؛

سطح int = {-1 ، -1 ، -1 ، -1} ؛

int t = 0 ؛

سطح int1 = 255 ؛

سطح int2 = 0 ؛ سطح int3 = 0 ؛ سطح int4 = 0 ؛

int lives = 3؛

int levens1 = 255 ؛ int levens2 = 255 ؛ int levens3 = 255 ؛

int roodGok = 0؛

int groenGok = 0؛ int blauwGok = 0؛

void setup () {

Serial.begin (9600)؛ irrecv.enableIRIn ()؛ // شروع pinMode گیرنده (redPin ، OUTPUT) ؛ pinMode (greenPin ، OUTPUT) ؛ pinMode (bluePin ، OUTPUT) ؛

pinMode (levensPin1 ، OUTPUT) ؛

pinMode (levensPin2 ، OUTPUT) ؛ pinMode (levensPin3 ، OUTPUT) ؛

}

حلقه خالی () {

if (irrecv.decode (& results)) // دریافت سیگنال ها از راه دور {Serial.println (results.value، DEC) ؛ // نمایش سیگنال های دریافت شده از هر دکمه فشرده irrecv.resume ()؛ // دریافت سوئیچ سیگنال بعدی (results.value) {// سیگنال ها را به اعداد روی دکمه ها تبدیل کنید و اقدامات را به دکمه ها اختصاص دهید

مورد 109562864:

addWaarde (1) ؛ زنگ تفريح؛

مورد 109562824:

addWaarde (2) ؛ زنگ تفريح؛

مورد 109562856:

addWaarde (3) ؛ زنگ تفريح؛

مورد 109562872:

addWaarde (4) ؛ زنگ تفريح؛

مورد 109562820:

addWaarde (5) ؛ زنگ تفريح؛

مورد 109562852:

addWaarde (6) ؛ زنگ تفريح؛

مورد 109562868:

addWaarde (7) ؛ زنگ تفريح؛

مورد 109562828:

addWaarde (8) ؛ زنگ تفريح؛

مورد 109562860:

addWaarde (9) ؛ زنگ تفريح؛

مورد 109562876:

addWaarde (0) ؛ زنگ تفريح؛

مورد 109562818: // عود دینگ enter/R CLK

handleInput ()؛ زنگ تفريح؛

مورد 109562816: // قدرت دینگ عود

handleColor ()؛ زنگ تفريح؛ case 109562878: // عود دینگ لغو/L CLK resetColor ()؛ زنگ تفريح؛

case 109562866: // lege knop midden

رنگ تصادفی()؛ زنگ تفريح؛

مورد 109562830: // pijltje naar rechts

displayEverything ()؛ زنگ تفريح؛ case 109562838: // esc case 109562822: // منبع AV resetEverything ()؛ زنگ تفريح؛ }

// اختصاص دکمه های کنترل از راه دور برای کنترل رنگ: به این ترتیب ، بازیکنان می توانند ببینند رنگها چگونه هستند و چگونه آنها را ترکیب کنید ،

// قبل از شروع بازی سوئیچ (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 led: معکوس ، زیرا سیم من معکوس است.

analogWrite (greenPin ، abs (255 - groen)) ؛ analogWrite (bluePin ، abs (255 - blauw)) ؛

// کنترل led های زنده

if (lives == 2) {levens1 = 0؛ } if (lives == 1) {levens2 = 0؛ } if (lives == 0) {levens3 = 0؛ } analogWrite (levensPin1، levens1)؛ analogWrite (levensPin2 ، levens2) ؛ analogWrite (levensPin3 ، levens3) ؛

// کنترل led های سطح

if (levelNumber == 1) {level1 = 255؛ } if (levelNumber == 2) {level1 = 255؛ سطح 2 = 255 ؛ } if (levelNumber == 3) {level1 = 255؛ سطح 2 = 255 ؛ سطح 3 = 255 ؛ } if (levelNumber == 4) {level1 = 255؛ سطح 2 = 255 ؛ سطح 3 = 255 ؛ سطح 4 = 255 ؛ } analogWrite (levelPin1 ، level1) ؛ analogWrite (levelPin2 ، level2) ؛ analogWrite (levelPin3 ، level3) ؛ analogWrite (levelPin4 ، level4) ؛

}

void addWaarde (مقدار int) {// مقدار فشرده را به لیست اضافه کنید

if (indexNumber == 3) {

برگشت؛ }

if (ورودی [indexNumber] == -1) {

ورودی [indexNumber] = مقدار ؛ indexNumber ++؛ }}

void handleInput () {// "waarde" (value) را از لیست خارج کنید

waarde = abs (ورودی [0] * 100 + ورودی [1] * 10 + ورودی [2]) ؛ ورودی [0] = -1 ؛ // تنظیم مجدد ورودی signalen [1] = -1؛ ورودی [2] = -1 ؛

indexNumber = 0؛

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

void addColor (int waarde) {// 'warde' 3 رقمی را به یک لیست اضافه کنید

if (indexColor == 3) {

برگشت؛ }

if (رنگ [indexColor] == -1) {

رنگ [indexColor] = warde؛ if (رنگ [indexColor]> 255) {رنگ [indexColor] = 255 ؛ } indexColor ++؛ }

}

void randomColor () {// نور را به رنگی تصادفی تبدیل کرده و آن را در متغیرها ذخیره کنید

roodRandom = تصادفی (0 ، 255) ؛

groenRandom = تصادفی (0 ، 255) ؛

blauwRandom = تصادفی (0 ، 255) ؛

rood = roodRandom؛

groen = groenRandom؛ blauw = blauwRandom؛ Serial.print ("roodRandom =")؛ Serial.println (roodRandom)؛ Serial.print ("groenRandom =")؛ Serial.println (groenRandom)؛ Serial.print ("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) ؛

Serial.print ("roodGok =")؛

Serial.println (roodGok) ؛ Serial.print ("groenGok =")؛ Serial.println (groenGok) ؛ Serial.print ("blauwGok =")؛ Serial.println (blauwGok) ؛ resetColor ()؛ رنگ تصادفی()؛ levelNumber ++؛ diff -= 50 ؛ } else {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) ؛ Serial.print ("roodGok =")؛ Serial.println (roodGok) ؛ Serial.print ("groenGok =")؛ Serial.println (groenGok) ؛ Serial.print ("blauwGok =")؛ Serial.println (blauwGok) ؛

resetColor ()؛

زندگی می کند-- ؛ } if (lives == 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) ؛ resetEverything ()؛ }

}

void 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 ؛

levelNumber = 1 ؛

t = 0 ؛

}

void displayEverything () {// از این برای نمایش اطلاعات مهم در مانیتور سریال استفاده کنید

Serial.print ("roodGok =")؛ Serial.println (roodGok) ؛ Serial.print ("groenGok =")؛ Serial.println (groenGok) ؛ Serial.print ("blauwGok =")؛ Serial.println (blauwGok) ؛ Serial.print ("roodRandom =")؛ Serial.println (roodRandom)؛ Serial.print ("groenRandom =")؛ Serial.println (groenRandom)؛ Serial.print ("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 (warde)؛ }

مرحله 3: ساختن

ساختن
ساختن
ساختن
ساختن
ساختن
ساختن
ساختن
ساختن

شما بدیهی است که برای این پروژه یک ساختار زیبا می خواهید. این قسمت کاملاً قابل تفسیر است ، اما مواردی وجود دارد که باید در این مورد به آنها توجه کنید:

- فضای کافی را در بدنه برای آردوینو و تخته لحیم نگه دارید

- مطمئن شوید که در پشت یک سوراخ برای قدرت آردوینو وجود دارد

من یک طرح خشن برای سیم کشی اضافه کرده ام.

موفق باشی و خوش بگذره!

توصیه شده: