Isi kandungan:
Video: Permainan Meneka Warna IR-Jauh: 3 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Dalam arahan ini, saya akan menunjukkan kepada anda cara mengendalikan led RGB menggunakan remote IR, dan membuat permainan yang menyeronokkan!
Langkah 1: Bahagian Diperlukan
Bahagian yang anda perlukan untuk projek ini adalah:
- arduino one- RGB Led- IR-Sensor
(kiraan led bergantung pada permainan, jumlah nyawa atau) - 2 led hijau - 1 led kuning - 1 led oren - 3 led merah
Langkah 2: Kod
#sertakan
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
tahap intPin1 = 2;
tahap intPin2 = 3; tahap intPin3 = 4; tahap intPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); keputusan decode_results;
// warna input
int input = {-1, -1, -1}; int warna = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// menjana warna
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// pemboleh ubah permainan
int diff = 200;
int levelNumber = 1;
tahap int = {-1, -1, -1, -1};
int t = 0;
tahap int1 = 255;
tahap int2 = 0; tahap int3 = 0; tahap int4 = 0;
kehidupan int = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
batal persediaan () {
Serial.begin (9600); irrecv.enableIRIn (); // mulakan penerima pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
gelung kosong () {
if (irrecv.decode (& results)) // menerima isyarat dari jarak jauh {Serial.println (results.value, DEC); // paparkan isyarat yang diterima dari setiap butang yang ditekan irrecv.resume (); // terima suis isyarat seterusnya (hasil. nilai) {// ubah isyarat menjadi nombor pada butang, dan tetapkan tindakan ke butang
kes 109562864:
tambahWaarde (1); rehat;
kes 109562824:
tambahWaarde (2); rehat;
kes 109562856:
tambahWaarde (3); rehat;
kes 109562872:
tambahWaarde (4); rehat;
kes 109562820:
tambahWaarde (5); rehat;
kes 109562852:
tambahWaarde (6); rehat;
kes 109562868:
tambahWaarde (7); rehat;
kes 109562828:
tambahWaarde (8); rehat;
kes 109562860:
tambahWaarde (9); rehat;
kes 109562876:
tambahWaarde (0); rehat;
kes 109562818: // oud ding enter / R CLK
handleInput (); rehat;
kes 109562816: // oud ding power
pemegangColor (); rehat; kes 109562878: // oud ding cancel / L CLK resetColor (); rehat;
kes 109562866: // lege knop tersembunyi
rawakColor (); rehat;
kes 109562830: // pijltje naar rechts
paparanSemuanya (); rehat; kes 109562838: // esc kasus 109562822: // sumber semula AV set Semuanya (); rehat; }
// tetapkan butang pada alat kawalan jauh untuk mengawal warna: dengan cara ini, pemain dapat melihat seperti apa warna dan bagaimana menggabungkannya, // sebelum memulakan permainan. beralih (hasil. nilai) {kes 109562840: rood = 255; rehat;
kes 109562844:
groen = 255; rehat;
kes 109562850:
blauw = 255; rehat;
kes 109562836:
rood = 0; groen = 0; blauw = 0; rehat; }
}
analogWrite (redPin, abs (255 - rood)); // mengawal led RGB: secara terbalik, kerana saya dikendalikan secara terbalik.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// mengawal led langsung
jika (hidup == 2) {levens1 = 0; } jika (hidup == 1) {levens2 = 0; } jika (hidup == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// mengawal tahap led
jika (levelNumber == 1) {level1 = 255; } jika (levelNumber == 2) {level1 = 255; tahap2 = 255; } jika (levelNumber == 3) {level1 = 255; tahap2 = 255; tahap3 = 255; } jika (levelNumber == 4) {level1 = 255; tahap2 = 255; tahap3 = 255; tahap4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
batal addWaarde (nilai int) {// tambah nilai ditekan ke senarai
jika (indexNumber == 3) {
kembali; }
jika (masukan [indexNumber] == -1) {
input [indexNumber] = nilai; indexNumber ++; }}
void handleInput () {// buat 'waarde' (nilai) dari senarai
waarde = abs (input [0] * 100 + input [1] * 10 + input [2]); input [0] = -1; // tetapkan semula input signalen [1] = -1; input [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
batal addColor (int waarde) {// tambahkan 'waarde' 3 digit ke senarai
jika (indexColor == 3) {
kembali; }
jika (warna [indexColor] == -1) {
warna [indexColor] = waarde; jika (warna [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// menjadikan cahaya bertukar warna secara rawak dan simpan dalam pemboleh ubah
roodRandom = rawak (0, 255);
groenRandom = rawak (0, 255);
blauwRandom = rawak (0, 255);
rood = roodRawak;
groen = groenRawak; blauw = blauwRawak; Serial.print ("roodRandom ="); Serial.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
}
void handleColor () {// ubah 'waarde' dari senarai menjadi pemboleh ubah 'Gok' (tekaan)
roodGok = warna [0]; groenGok = warna [1]; blauwGok = warna [2]; // periksa sama ada pemboleh ubah Gok terlalu banyak berbeza dengan warna rawak sebenar: jika ya, paparkan tekaan selama tiga saat, berkedip hijau dan ubah warnanya lagi, tambahkan aras abd membuat perbezaan yang dibenarkan lebih kecil // jika tidak, paparkan kira selama tiga saat, berkedip merah dan tolak hidup // jika anda kehabisan nyawa, permainan dimulakan lagi jika (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); kelewatan (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); kelewatan (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); kelewatan (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); rawakColor (); levelNumber ++; perbezaan - = 50; } lain {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); kelewatan (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
nyawa--; } if (lives == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kelewatan (100); tetapkan semulaSemuanya (); }
}
void resetColor () {// gunakan untuk menetapkan semula nilai, untuk tekan yang salah atau setiap tekaan baru (hanya untuk kepastian)
warna [0] = -1; warna [1] = -1; warna [2] = -1;
indexNumber = 0;
indexColor = 0; }
batal resetEverything () {// mulakan semula permainan
warna [0] = -1; warna [1] = -1; warna [2] = -1;
indexNumber = 0;
indexColor = 0;
nyawa = 3;
rood = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
tahap1 = 255;
tahap2 = 0; tahap3 = 0; tahap4 = 0;
levelNumber = 1;
t = 0;
}
batal paparanSemuanya () {// gunakan ini untuk memaparkan maklumat penting pada monitor bersiri
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); }
Langkah 3: Bina
Anda tentu mahukan pembinaan yang bagus untuk projek ini. bahagian ini cukup terbuka untuk ditafsirkan, tetapi ada beberapa perkara yang perlu diingat dengan ini: - pastikan panel depan tetap nipis, sehingga anda masih dapat melekatkan ledanya dan penerima IR masih berfungsi
- simpan ruang yang cukup untuk arduino dan solder board
- pastikan ada lubang di bahagian belakang untuk kekuatan arduino
Saya telah menambah skema kasar untuk pendawaian.
Semoga berjaya, dan bergembira!
Disyorkan:
Permainan Meneka Ringkas - Python + XBees + Arduino: 10 Langkah
Permainan Meneka Sederhana - Python + XBees + Arduino: Inilah cara permainan ini berfungsi: Anda mempunyai 4 percubaan untuk meneka huruf antara 'a' - 'h' - > Teka huruf yang betul: Anda menang! ? - > Teka huruf yang salah: Permainan berakhir? - > Tebak watak lain di luar ‘a’ - ‘h’: Game over? Arduino anda akan membiarkan anda
Permainan Meneka Nombor Python Mudah: 11 Langkah
Permainan Meneka Nombor Python Mudah: Dalam tutorial ini kita akan mengajar bagaimana membuat permainan meneka nombor Python sederhana dalam aplikasi Pycharm. Python adalah bahasa skrip yang bagus untuk pemula dan ahli. Gaya pengekodan di Python mudah dibaca dan diikuti
Permainan Meneka Python: 9 Langkah
Python Guessing Game: Petunjuk berikut memberikan panduan langkah demi langkah mengenai cara menulis program menggunakan modul rawak dan membuat permainan meneka yang berinteraksi dengan pengguna. Untuk memulakan, anda perlu memasang python pada komputer anda dan juga
Apa yang Berfikir Bit? Buat Permainan Meneka Ringkas Dengan Microbit BBC !: 10 Langkah
Apa yang Berfikir Bit? Buat Permainan Meneka Ringkas Dengan Microbit BBC !: Saya memilih beberapa Microbit BBC setelah membaca ulasan positif mengenai mereka dalam beberapa artikel dalam talian. Dalam usaha untuk membiasakan diri dengan BIT, saya bermain-main dengan Editor Blok Microsoft dalam talian untuk beberapa jam dan muncul dengan
Jam Thumbwheel - Mari Meneka Masa: 5 Langkah (dengan Gambar)
Jam Thumbwheel - Mari Tebak Masa: Halo semua, berikut adalah Instruksional pertama saya, jadi saya harap ia akan menjadi baik. Lebih-lebih lagi, tahap penguasaan bahasa Inggeris saya agak lemah, jadi saya harap saya tidak akan melakukan banyak kesalahan! Matlamat projek ini adalah menggunakan semula beberapa " Thumbwheels " diselamatkan dari makmal lama dan