Агуулгын хүснэгт:

IR-Remote Color Guessing Game: 3 алхам
IR-Remote Color Guessing Game: 3 алхам

Видео: IR-Remote Color Guessing Game: 3 алхам

Видео: IR-Remote Color Guessing Game: 3 алхам
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Арваннэгдүгээр
Anonim
IR-Remote Color Guessing тоглоом
IR-Remote Color Guessing тоглоом

Энэхүү зааварчилгаанд би IR алсын удирдлага ашиглан RGB удирдамжийг хэрхэн хянах, үүнээс хөгжилтэй тоглоом хийхийг танд үзүүлэх болно.

Алхам 1: Шаардлагатай эд анги

Шаардлагатай эд ангиуд
Шаардлагатай эд ангиуд

Энэхүү төслийн хувьд танд дараахь хэсгүүд хэрэгтэй болно.

- arduino one- RGB Led- IR мэдрэгч

(жолоодлогын тоо нь тоглоом, амь наснаас хамаарна)- 2 ногоон гэрэл- 1 шар LED- 1 улбар шар LED- 3 улаан гэрэл

Алхам 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 түвшин1 = 255;

int түвшин2 = 0; int түвшин3 = 0; int түвшин4 = 0;

int life = 3;

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

int roodGok = 0;

int groenGok = 0; int blauwGok = 0;

хүчингүй тохиргоо () {

Цуваа эхлэх (9600); irrecv.enableIRIn (); // хүлээн авагчийн pinMode -ийг эхлүүлэх (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);

pinMode (levensPin1, OUTPUT);

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

}

void loop () {

хэрэв (irrecv.decode (& үр дүн)) // алсын зайнаас дохио хүлээн авах {Serial.println (results.value, DEC); // дарагдсан товчлуур бүрээс ирсэн дохиог харуулна irrecv.resume (); // дараагийн дохио шилжүүлэгчийг хүлээн авна (үр дүн. утга) {// дохиог товчлуур дээрх тоонууд болгон хувиргаж, товчлууруудад үйлдэл оноож өгнө үү

тохиолдол 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: // oud ding enter/R CLK

handleInput (); завсарлага;

кейс 109562816: // oud ding power

handleColor (); завсарлага; тохиолдол 109562878: // oud ding цуцлах/L CLK resetColor (); завсарлага;

тохиолдол 109562866: // lege knop midden

randomColor (); завсарлага;

тохиолдол 109562830: // pijltje naar rechts

displayEverything (); завсарлага; тохиолдол 109562838: // esc тохиолдол 109562822: // AV эх үүсвэрийг дахин тохируулахEverything (); завсарлага; }

// өнгийг хянахын тулд алсын удирдлага дээрх товчлууруудыг оноож өг: ингэснээр тоглогчид өнгөнүүд хэрхэн харагдахыг, тэдгээрийг хэрхэн яаж хослуулахыг харах боломжтой болно.

// тоглоом эхлэхээс өмнө. switch (results.value) {тохиолдол 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));

// амьд LED -ийг хянах

хэрэв (амьдардаг == 2) {levens1 = 0; } хэрэв (амьдардаг == 1) {levens2 = 0; } хэрэв (амьдардаг == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);

// түвшний гэрлийг хянах

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 value) {// дарагдсан утгыг жагсаалтад нэмнэ

хэрэв (indexNumber == 3) {

буцах; }

if (оролт [indexNumber] == -1) {

оролт [indexNumber] = утга; indexNumber ++; }}

void handleInput () {// жагсаалтаас 'waarde' (утга) гаргах

waarde = abs (оролт [0] * 100 + оролт [1] * 10 + оролт [2]); оролт [0] = -1; // дохионы оролтыг дахин тохируулах [1] = -1; оролт [2] = -1;

indexNumber = 0;

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

void addColor (int waarde) {// 3 оронтой 'waarde' -г жагсаалтад нэмнэ үү

хэрэв (indexColor == 3) {

буцах; }

хэрэв (өнгө [indexColor] == -1) {

өнгө [indexColor] = бүдүүлэг; if (color [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }

}

void randomColor () {// гэрлийг санамсаргүй өнгө болгож хувьсагч хэлбэрээр хадгална

roodRandom = санамсаргүй (0, 255);

groenRandom = санамсаргүй (0, 255);

blauwRandom = санамсаргүй (0, 255);

rood = roodRandom;

groen = groenRandom; blauw = blauw Санамсаргүй; 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 хувьсагчид хэт их ялгаатай байгаа эсэхийг шалгаарай: хэрэв тийм бол тааварыг гурван секундын турш харуул, ногоон анивчих, өнгийг дахин өөрчлөх, зөвшөөрөгдсөн ялгааг багасгахын тулд abd түвшинг нэмнэ үү. Гурван секундын турш таамаглаж, улаан анивчиж, амьдралаа хас. 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 (); randomColor (); LevelNumber ++; ялгаа -= 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); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);

resetColor ();

амьдрал-; } if (амьдардаг == 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); бүх зүйлийг дахин тохируулах (); }

}

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 (waarde); }

Алхам 3: Бүтээх

Бүтээх
Бүтээх
Бүтээх
Бүтээх
Бүтээх
Бүтээх
Бүтээх
Бүтээх

Та энэ төсөлд зориулж сайхан барилга барихыг хүсч байгаа нь ойлгомжтой. Энэ хэсэг нь тайлбарлахад нэлээд нээлттэй боловч зарим зүйлийг анхаарах хэрэгтэй: урд самбарыг нимгэн байлга

- Ардуино болон гагнуурын самбар барихад хангалттай зай үлдээ

- ардуиногийн хүчийг хангахын тулд ар талд нь нүх байгаа эсэхийг шалгаарай

Би утас холбох бүдүүлэг схемийг нэмсэн.

Амжилт хүсье, хөгжилтэй байгаарай!

Зөвлөмж болгож буй: