فهرست مطالب:
تصویری: IR-Remote Remote Color Game: 3 Step
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
در این دستورالعمل ، من به شما نشان خواهم داد که چگونه یک رهبری 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: ساختن
شما بدیهی است که برای این پروژه یک ساختار زیبا می خواهید. این قسمت کاملاً قابل تفسیر است ، اما مواردی وجود دارد که باید در این مورد به آنها توجه کنید:
- فضای کافی را در بدنه برای آردوینو و تخته لحیم نگه دارید
- مطمئن شوید که در پشت یک سوراخ برای قدرت آردوینو وجود دارد
من یک طرح خشن برای سیم کشی اضافه کرده ام.
موفق باشی و خوش بگذره!
توصیه شده:
Octarine: a Color Matching Game with WS2812 RGB LED: 6 Step
Octarine: a Color Matching Game With WS2812 RGB LED: Octarine ، رنگ جادو. زنده و درخشان بود و رنگدانه بی چون و چرا تخیل بود ، زیرا هر کجا که ظاهر می شد نشانه این بود که ماده صرفاً خدمتگزار قوای ذهن جادویی است. افسونگر بود
My DIY Steampunk Operation Game، Arduino Based: 9 Step (همراه با تصاویر)
بازی DIY Steampunk Operation Operation ، مبتنی بر آردوینو: این پروژه نسبتاً گسترده است. این به ابزارهای زیادی یا دانش قبلی نیاز ندارد ، اما به بسیاری از افراد (از جمله من) در بسیاری از بخشهای مختلف ساخت آموزش می دهد! مانند اسیر کردن با Arduino ، چند کار با Arduino
Retro External Drive Game Boy: 3 Step
Retro External Drive Game Boy: Dans cet article je vous présente mon disque dur externe unique au monde (du moins à ma connaissance). Tout a commencé lorsque que la carte d'interface USB-SATA de mon disque dur externe est tombé en panne. Après un hin temps passé sur cette c
Setup Waveshare Game Hat برای Recalbox و Kodi: 4 Step
Setup Waveshare Game Hat برای Recalbox و Kodi: کلاه بازی waveshare با تبدیل آن به ماشین تمشک Pi 3B یا 3B+ با تبدیل آن به دستگاه بازی یکپارچهسازی با سیستمعامل و ایستگاه ویدیویی Kodi ، افزودنی مناسبی است. اگرچه کلاه بازی waveshare دارای تصاویر و درایورهای یکپارچهسازی با سیستمعامل قابل بارگیری است ، اما ابزار زیادی وجود ندارد
کیف عالی iPod Touch (نسل اول) Game Boy Case Color: 5 Step
قاب رنگی فوق العاده IPod Touch (نسل اول) Game Boy: این یک کیف آی پاد است که از رنگ قدیمی GB ساخته شده است. همانطور که می بینید ، هنوز دقیقاً شبیه یک بازی بازی در جلو است ، اما در پشت ، یک آی پاد وجود دارد! خوب است اگر نمی خواهید آیپاد شما به سرقت برود ، زیرا شبیه یک گیمبوی قدیمی و جک است