Sisukord:

IR-kaugvärvimäng: 3 sammu
IR-kaugvärvimäng: 3 sammu

Video: IR-kaugvärvimäng: 3 sammu

Video: IR-kaugvärvimäng: 3 sammu
Video: Сериал - "Сваты" (1-й сезон 1-я серия) фильм комедия для всей семьи 2024, Juuli
Anonim
IR-kaugvärvide arvatav mäng
IR-kaugvärvide arvatav mäng

Selles juhendis näitan teile, kuidas IR-kaugjuhtimispuldi abil RGB-d juhtida ja sellest lõbusat mängu teha!

Samm: vajalikud osad

Vajalikud osad
Vajalikud osad

Selle projekti jaoks vajalikud osad on järgmised:

- arduino one- RGB LED-IR-andur

(ledide arv sõltub mängust, elude arvust või)- 2 rohelist LED-i- 1 kollane LED- 1 oranž LED- 3 punast LED-i

2. samm: kood

#kaasake

int redPin = 10;

int rohelinePin = 6; int bluePin = 5;

int levensPin1 = 8;

int levensPin2 = 9; int levensPin3 = 12;

int tasePin1 = 2;

int tasePin2 = 3; int tasePin3 = 4; int tasePin4 = 7;

int RECV_PIN = 11;

IRrecv irrecv (RECV_PIN); decode_results tulemused;

// sisesta värvid

int sisend = {-1, -1, -1}; int värv = {-1, -1, -1};

int indeksNumber = 0;

int indeksVärv = 0;

int waarde = 0;

int rood = 0;

int groen = 0; int blauw = 0;

// genereerige värve

int roodJuhuslik = 0; int groenJuhuslik = 0; int blauwRandom = 0;

// mängu muutujad

int erinevus = 200;

int levelNumber = 1;

int tase = {-1, -1, -1, -1};

int t = 0;

int tase1 = 255;

int tase2 = 0; int tase3 = 0; int tase4 = 0;

int elu = 3;

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

int roodGok = 0;

int groenGok = 0; int blauwGok = 0;

tühine seadistus () {

Seriaalne algus (9600); irrecv.enableIRIn (); // käivita vastuvõtja pinMode (redPin, OUTPUT); pinMode (rohelinePin, VÄLJUND); pinMode (bluePin, OUTPUT);

pinMode (levensPin1, OUTPUT);

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

}

void loop () {

if (irrecv.decode (& results)) // võtavad vastu signaale kaugjuhtimispuldilt {Serial.println (results.value, DEC); // kuvab igalt vajutatud nupult saadud signaale irrecv.resume (); // järgmise signaalilüliti vastuvõtmine (results.value) {// muutke signaalid nuppudel olevateks numbriteks ja määrake nuppudele toimingud

juhtum 109562864:

addWaarde (1); murda;

juhtum 109562824:

addWaarde (2); murda;

juhtum 109562856:

addWaarde (3); murda;

juhtum 109562872:

addWaarde (4); murda;

juhtum 109562820:

addWaarde (5); murda;

juhtum 109562852:

addWaarde (6); murda;

juhtum 109562868:

addWaarde (7); murda;

juhtum 109562828:

addWaarde (8); murda;

juhtum 109562860:

addWaarde (9); murda;

juhtum 109562876:

addWaarde (0); murda;

juhtum 109562818: // oud ding enter/R CLK

handleInput (); murda;

juhtum 109562816: // oud ding power

käepideVärv (); murda; juhtum 109562878: // oud ding cancel/L CLK resetColor (); murda;

juhtum 109562866: // lege knop midden

randomColor (); murda;

juhtum 109562830: // pijltje naar rechts

kuvaKõik (); murda; case 109562838: // esc case 109562822: // AV source resetEverything (); murda; }

// määrake värvide juhtimiseks kaugjuhtimispuldi nupud: nii saavad mängijad näha, millised värvid välja näevad ja kuidas neid kombineerida, // enne mängu alustamist. lüliti (tulemused.väärtus) {juht 109562840: rood = 255; murda;

juhtum 109562844:

groen = 255; murda;

juhtum 109562850:

blauw = 255; murda;

juhtum 109562836:

rood = 0; groen = 0; blauw = 0; murda; }

}

analogWrite (redPin, abs (255 - rood)); // RGB ledi juhtimine: tagurpidi, sest minu oma on juhtmega tagurpidi.

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

// reaalajas LED -ide juhtimine

kui (elab == 2) {levens1 = 0; } kui (elab == 1) {levens2 = 0; } kui (elab == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);

// taseme LED -ide juhtimine

kui (levelNumber == 1) {level1 = 255; } kui (levelNumber == 2) {level1 = 255; tase2 = 255; } kui (levelNumber == 3) {level1 = 255; tase2 = 255; tase3 = 255; } kui (levelNumber == 4) {level1 = 255; tase2 = 255; tase3 = 255; tase4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);

}

void addWaarde (int väärtus) {// lisage loendisse pressitud väärtus

kui (indeksiNumber == 3) {

tagasipöördumine; }

kui (sisend [indeksiNumber] == -1) {

input [indexNumber] = väärtus; indeksNumber ++; }}

void handleInput () {// tehke loendist „waarde” (väärtus)

waarde = abs (sisend [0] * 100 + sisend [1] * 10 + sisend [2]); sisend [0] = -1; // signale sisendi lähtestamine [1] = -1; sisend [2] = -1;

indeksiNumber = 0;

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

void addColor (int waarde) {// lisage loendisse 3-kohaline Waarde

kui (indexColor == 3) {

tagasipöördumine; }

if (värv [indexColor] == -1) {

värv [indeksvärv] = waarde; if (värv [indeksivärv]> 255) {värv [indeksivärv] = 255; } indexVärv ++; }

}

void randomColor () {// pane valgus juhuslikuks värviks ja salvesta see muutujateks

roodJuhuslik = juhuslik (0, 255);

groenRandom = juhuslik (0, 255);

blauwRandom = juhuslik (0, 255);

rood = roodJuhuslik;

groen = groenJuhuslik; blauw = blauwJuhuslik; Serial.print ("roodRandom ="); Serial.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);

}

void handleColor () {// muuda loendist „waarde” muutujateks „Gok” (arvan)

roodGok = värv [0]; groenGok = värv [1]; blauwGok = värv [2]; // kontrollige, kas Goki muutujad erinevad tegeliku juhusliku värviga liiga palju: kui nii, siis näidake oletust kolm sekundit, vilgutage roheliselt ja muutke uuesti värvi, lisage tase ja tehke lubatud erinevus väiksemaks // kui ei, kuvage arvake kolm sekundit, vilgutage punaselt ja lahutage elu // kui olete elust väljas, algab mäng uuesti, kui (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); viivitus (3000); analogWrite (redPin, 255); analogWrite (rohelinePin, 0); analogWrite (bluePin, 255); viivitus (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (300); analogWrite (redPin, 255); analogWrite (rohelinePin, 0); analogWrite (bluePin, 255); viivitus (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (300);

Serial.print ("roodGok =");

Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); levelNumber ++; erinevus -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); viivitus (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);

resetColor ();

elab-; } kui (elab == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viivitus (100); resetEverything (); }

}

void resetColor () {// kasutatakse väärtuste lähtestamiseks, vale vajutuse või iga uue oletuse jaoks (lihtsalt kindluse huvides)

värv [0] = -1; värv [1] = -1; värv [2] = -1;

indeksiNumber = 0;

indeksVärv = 0; }

void resetEverything () {// taaskäivitage mäng

värv [0] = -1; värv [1] = -1; värv [2] = -1;

indeksiNumber = 0;

indeksVärv = 0;

elu = 3;

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

roodJuhuslik = 0;

groenJuhuslik = 0; blauwJuhuslik = 0;

levens1 = 255;

levens2 = 255; levens3 = 255;

tase1 = 255;

tase2 = 0; tase3 = 0; tase4 = 0;

levelNumber = 1;

t = 0;

}

void displayEverything () {// kasutage seda olulise teabe kuvamiseks jadamonitoril

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);

Seeria.print ("rood =");

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

Serial.print ("waarde opgeslagen:");

Serial.println (waarde); }

3. samm: ehitage

Ehitamine
Ehitamine
Ehitamine
Ehitamine
Ehitamine
Ehitamine
Ehitamine
Ehitamine

Ilmselgelt soovite selle projekti jaoks kena ehitust. see osa on tõlgendamiseks üsna avatud, kuid siin tuleb meeles pidada mõningaid asju: - hoidke esipaneel õhukesena, nii et saate oma LED -id ikkagi läbi torgata ja IR -vastuvõtja töötab endiselt

- jätke ehitises piisavalt ruumi arduino ja jootelaua jaoks

- veenduge, et tagaküljel on auk arduino võimsuse jaoks

Lisasin juhtmestiku jaoks umbkaudse skeemi.

Õnn kaasa ja toredat olemist!

Soovitan: