Daftar Isi:
Video: Game Menebak Warna IR-Remote: 3 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Dalam instruksi ini, saya akan menunjukkan kepada Anda cara mengontrol LED RGB menggunakan IR-remote, dan membuat permainan yang menyenangkan darinya!
Langkah 1: Bagian yang Dibutuhkan
Bagian yang Anda perlukan untuk proyek ini adalah:
- arduino one- RGB Led- IR-Sensor
(jumlah led tergantung pada permainan, jumlah nyawa atau) - 2 led hijau - 1 led kuning - 1 led oranye - 3 led merah
Langkah 2: Kode
#termasuk
int pin merah = 10;
int pin hijau = 6; int pin biru = 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 irecv(RECV_PIN); hasil decode_results;
// masukan warna
int masukan = {-1, -1, -1}; int warna = {-1, -1, -1};
int angka indeks = 0;
int indeksWarna = 0;
int waarde = 0;
int batang = 0;
int groen = 0; int blauw = 0;
// menghasilkan warna
int roodRandom = 0; int groenAcak = 0; int blauwAcak = 0;
// variabel permainan
int perbedaan = 200;
int tingkatNumber = 1;
int tingkat = {-1, -1, -1, -1};
int t = 0;
int tingkat1 = 255;
int tingkat2 = 0; int tingkat3 = 0; int tingkat4 = 0;
int kehidupan = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
batalkan pengaturan() {
Serial.begin(9600); irrecv.enableIRIn(); // memulai mode pin penerima(redPin, OUTPUT); pinMode(pin hijau, OUTPUT); pinMode(bluePin, OUTPUT);
pinMode(levensPin1, OUTPUT);
pinMode(levensPin2, OUTPUT); pinMode(levensPin3, OUTPUT);
}
lingkaran kosong() {
if (irrecv.decode(&results)) // menerima sinyal dari remote { Serial.println(results.value, DEC); // menampilkan sinyal yang diterima dari setiap tombol yang ditekan irrecv.resume(); // menerima sakelar sinyal berikutnya(results.value){ // mengubah sinyal menjadi angka pada tombol, dan menetapkan tindakan ke tombol
kasus 109562864:
addWaarde(1); merusak;
kasus 109562824:
addWaarde(2); merusak;
kasus 109562856:
addWaarde(3); merusak;
kasus 109562872:
addWaarde(4); merusak;
kasus 109562820:
addWaarde(5); merusak;
kasus 109562852:
addWaarde(6); merusak;
kasus 109562868:
addWaarde(7); merusak;
kasus 109562828:
addWaarde(8); merusak;
kasus 109562860:
addWaarde(9); merusak;
kasus 109562876:
addWaarde(0); merusak;
case 109562818: //oud ding enter/R CLK
menanganiMasukan(); merusak;
kasus 109562816: //daya oud ding
menanganiWarna(); merusak; case 109562878: //oud ding cancel/L CLK resetColor(); merusak;
kasus 109562866: //lege knop midden
warna acak(); merusak;
kasus 109562830: // pijltje naar rechts
tampilanSemua(); merusak; kasus 109562838: // esc kasus 109562822: // sumber AV resetEverything(); merusak; }
// menetapkan tombol pada remote untuk mengontrol warna: dengan cara ini, pemain dapat melihat seperti apa warna itu dan bagaimana menggabungkannya, // sebelum memulai permainan. switch(results.value){ kasus 109562840: rood = 255; merusak;
kasus 109562844:
groen = 255; merusak;
kasus 109562850:
blauw = 255; merusak;
kasus 109562836:
ruang = 0; groin = 0; blauw = 0; merusak; }
}
analogWrite(redPin, abs(255 - rood)); // mengontrol led RGB: terbalik, karena kabel saya terbalik.
analogWrite(greenPin, abs(255 - groen)); analogWrite(bluePin, abs(255 - blauw));
// mengendalikan led hidup
if (hidup == 2){ levens1 = 0; } if (hidup == 1){ levens2 = 0; } jika (hidup == 0){ levens3 = 0; } analogWrite(levensPin1, levens1); analogWrite(levensPin2, levens2); analogWrite(levensPin3, levens3);
// mengendalikan led level
if (levelNumber == 1){ level1 = 255; } jika (levelNumber == 2){ level1 = 255; tingkat2 = 255; } jika (levelNumber == 3){ level1 = 255; tingkat2 = 255; tingkat3 = 255; } jika (levelNumber == 4){ level1 = 255; tingkat2 = 255; tingkat3 = 255; tingkat4 = 255; } analogWrite(levelPin1, level1); analogWrite(levelPin2, level2); analogWrite(levelPin3, level3); analogWrite(levelPin4, level4);
}
void addWaarde(int value) { // tambahkan nilai yang ditekan ke daftar
if (nomor indeks == 3) {
kembali; }
if (masukan[nomor indeks] == -1){
masukan[nomor indeks] = nilai; indeksNumber++; } }
void handleInput() { // membuat 'waarde'(nilai) keluar dari daftar
waarde = abs(masukan[0] * 100 + masukan[1] * 10 + masukan[2]); masukan[0] = -1; // setel ulang input sinyal[1] = -1; masukan[2] = -1;
indeksNumber = 0;
Serial.print("waarde opgeslagen: "); Serial.println(waarde); tambahkan Warna(waarde); }
void addColor(int waarde) { // tambahkan 3 digit 'waarde' ke dalam daftar
if (warna indeks == 3) {
kembali; }
if (warna[indeksWarna] == -1){
warna[indeksWarna] = waarde; if (warna[indexColor] > 255){ color[indexColor] = 255; } warna indeks++; }
}
void randomColor(){ // membuat lampu menjadi warna acak dan menyimpannya dalam variabel
roodRandom = acak(0, 255);
groenAcak = acak(0, 255);
blauwRandom = acak(0, 255);
rood = roodRandom;
groen = groenAcak; blauw = blauwAcak; Serial.print("roodRandom = "); Serial.println(roodRandom); Serial.print("groenRandom = "); Serial.println(groenRandom); Serial.print("blauwRandom = "); Serial.println(blauwRandom);
}
void handleColor() { // mengubah 'waarde' dari daftar menjadi variabel 'Gok' (tebak)
roodGok = warna[0]; groenGok = warna[1]; blauwGok = warna[2]; // periksa apakah variabel Gok terlalu berbeda dengan warna acak yang sebenarnya: jika demikian, tampilkan tebakan selama tiga detik, kedipkan hijau dan ubah warnanya lagi, tambahkan level dan buat perbedaan yang diizinkan lebih kecil // jika tidak, tampilkan tebak selama tiga detik, berkedip merah dan kurangi nyawa // jika kamu kehabisan nyawa, permainan dimulai 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)); penundaan(3000); analogWrite(pin merah, 255); analogWrite(pin hijau, 0); analogWrite(bluePin, 255); penundaan (300); analogWrite(pin merah, 255); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan (300); analogWrite(pin merah, 255); analogWrite(pin hijau, 0); analogWrite(bluePin, 255); penundaan (300); analogWrite(pin merah, 255); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan (300);
Serial.print("roodGok = ");
Serial.println(roodGok); Serial.print("groenGok = "); Serial.println(groenGok); Serial.print("blauwGok = "); Serial.println(blauwGok); resetWarna(); warna acak(); tingkatNumber++; perbedaan -= 50; } else{ analogWrite(redPin, abs(255 - roodGok)); analogWrite(greenPin, abs(255 - groenGok)); analogWrite(bluePin, abs(255 - blauwGok)); penundaan(3000); analogWrite(pin merah, 0); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan (300); analogWrite(pin merah, 255); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan (300); analogWrite(pin merah, 0); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan (300); analogWrite(pin merah, 255); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan (300); Serial.print("roodGok = "); Serial.println(roodGok); Serial.print("groenGok = "); Serial.println(groenGok); Serial.print("blauwGok = "); Serial.println(blauwGok);
resetWarna();
hidup--; } if (hidup == 0){ analogWrite(redPin, 0); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan(100); analogWrite(pin merah, 255); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan(100); analogWrite(pin merah, 0); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan(100); analogWrite(pin merah, 255); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan(100); analogWrite(pin merah, 0); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan(100); analogWrite(pin merah, 255); analogWrite(pin hijau, 255); analogWrite(bluePin, 255); penundaan(100); resetSemua(); }
}
void resetColor(){ // gunakan untuk mengatur ulang nilai, untuk salah tekan atau setiap tebakan baru (hanya untuk kepastian)
warna[0] = -1; warna[1] = -1; warna[2] = -1;
indeksNumber=0;
indeksWarna=0; }
void resetEverything(){ // restart game
warna[0] = -1; warna[1] = -1; warna[2] = -1;
indeksNumber=0;
indeksWarna=0;
hidup = 3;
ruang = 0; groin = 0; blauw = 0;
roodRandom = 0;
groenAcak = 0; blauwAcak = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
tingkat1 = 255;
tingkat2 = 0; tingkat3 = 0; tingkat4 = 0;
tingkatNumber = 1;
t = 0;
}
void displayEverything(){ // gunakan ini untuk menampilkan informasi penting pada serial monitor
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("batang = ");
Serial.println(rood); Serial.print("groen = "); Serial.println(groen); Serial.print("blauw = "); Serial.println(blauw);
Serial.print("waarde opgeslagen: ");
Serial.println(waarde); }
Langkah 3: Bangun
Anda jelas menginginkan bangunan yang bagus untuk proyek ini. bagian ini cukup terbuka untuk interpretasi, tetapi ada beberapa hal yang perlu diingat dengan ini: - jaga agar panel depan tetap tipis, sehingga Anda masih dapat menempelkan led Anda melaluinya dan penerima IR masih berfungsi
- simpan cukup ruang di build untuk arduino dan papan solder
- pastikan ada lubang di bagian belakang untuk power arduino
Saya telah menambahkan skema kasar untuk pengkabelan.
Semoga berhasil dan selamat bersenang - senang!
Direkomendasikan:
Octarine: Game Mencocokkan Warna Dengan LED RGB WS2812: 6 Langkah
Octarine: Game Mencocokkan Warna Dengan WS2812 RGB LED: Octarine, warna ajaib. Itu hidup dan bersinar dengan hidup dan itu adalah pigmen imajinasi yang tak terbantahkan, karena di mana pun itu muncul, itu adalah tanda bahwa materi hanyalah pelayan kekuatan pikiran magis. Itu adalah penyihir
Game Menebak Sederhana - Python + XBees + Arduino: 10 Langkah
Game Menebak Sederhana - Python + XBees + Arduino: Begini cara kerja game ini: Anda memiliki 4 kali percobaan untuk menebak huruf antara 'a' – 'h'-> Tebak huruf yang tepat: Anda menang! ?-> Tebak huruf yang salah: Game over ?-> Tebak karakter lain di luar 'a' – 'h': Game over ?Arduino Anda akan membiarkan Anda
Game Menebak Angka Python Sederhana: 11 Langkah
Game Menebak Angka Python Sederhana: Dalam tutorial ini kita akan mengajarkan cara membuat game tebak angka Python sederhana di aplikasi Pycharm. Python adalah bahasa scripting yang bagus untuk pemula dan ahli. Gaya pengkodean dalam Python mudah dibaca dan diikuti
Game Menebak Python: 9 Langkah
Game Menebak Python: Instruksi berikut memberikan panduan langkah demi langkah tentang cara menulis program menggunakan modul acak dan membuat game tebak-tebakan yang berinteraksi dengan pengguna. Untuk memulai, Anda harus menginstal python di komputer Anda dan juga op
Apa yang Sedikit Dipikirkan? Membuat Game Menebak Sederhana Dengan BBC Microbit!: 10 Langkah
Apa yang Sedikit Dipikirkan? Membuat Game Menebak Sederhana Dengan BBC Microbit!: Saya mengambil beberapa BBC Microbits setelah membaca ulasan positif tentang mereka di beberapa artikel online. Dalam upaya untuk membiasakan diri dengan BIT, saya bermain-main dengan Microsoft Blocks Editor online untuk beberapa jam dan muncul dengan