Isi kandungan:

Whack-a-moLED !!: 7 Langkah
Whack-a-moLED !!: 7 Langkah

Video: Whack-a-moLED !!: 7 Langkah

Video: Whack-a-moLED !!: 7 Langkah
Video: Whack a Food! (Challenge 5 - Whack-a-Food) 2024, Julai
Anonim
Pukul-pusing !!
Pukul-pusing !!
Pukul-pusing !!
Pukul-pusing !!

Projek Tinkercad »

Ini adalah versi LED dari permainan Whack-a-Mole klasik.

Pada dasarnya LED rawak dari 4 LED menyala dan bukannya tahi lalat yang melihat dari lubang dan pemain mematikan LED menggunakan kayu bedik dan bukannya memukul tahi lalat!

Bekalan

Arduino Uno / Nano atau papan varian apa pun

4 LED dan perintang penghad arus yang sesuai.

Modul Joystick dengan output X, Y

Buzzer Aktif (pilihan)

Wayar jumper.. cukup untuk debug!

Langkah 1: Hubungkan Litar

Hubungkan Litar
Hubungkan Litar

Sambungkan papan Arduino Uno ke modul joystick, sambungkan 2 pin Input analog ke output X Y dari kayu bedik.

4 LED yang akan disambungkan menggunakan perintang ke 4 pin output Digital atau Analog.

Buzzer aktif untuk disambungkan ke pin output digital

Langkah 2: Kod untuk Penyediaan Pin

int xVal = 0, yVal = 0, tetapiVal = 0, xPin = A0, yPin = A1, joyPin = 13, butPin = 7, speakerPin = 9;

int leftLED = A2, rightLED = A3, topLED = A4, bottomLED = A5;

int terpilihLED = 0; // Boleh menjadi salah satu A2, A3, A4 atau A5

batal persediaan () {

pinMode (xPin, INPUT);

pinMode (yPin, INPUT);

pinMode (kiriLED, OUTPUT);

pinMode (kananLED, OUTPUT);

pinMode (topLED, OUTPUT); pinMode (bawahLED, OUTPUT);

pinMode (joyPin, OUTPUT);

pinMode (buzzerPin, OUTPUT);

}

Langkah 3: Kod untuk Joystick Sensing

kosongkan JoystickSenseRoutine ()

{

xVal = analogRead (xPin); yVal = analogRead (yPin); butVal = digitalRead (butPin);

joyPin = mapXYtoPin (xVal, yVal, butVal);

analogWrite (terpilihLED, 1024);

jika (dipilihLED! = leftLED) {analogWrite (leftLED, 0); } jika (dipilihLED! = rightLED) {analogWrite (rightLED, 0); }

jika (dipilihLED! = topLED) {analogWrite (topLED, 0); }

jika (dipilihLED! = bottomLED) {analogWrite (bottomLED, 0); }

if (joyPin == terpilihLED) // Mole Whacked

{

analogWrite (dipilihLED, 0);

//

// Tambahkan kod untuk memainkan muzik / nada untuk memukul moLED !!

//

}

}

int mapXYtoPin (int xVal, int yVal, int butVal) {if ((xVal <100) dan (yVal 400)) {return bottomLED; }

jika tidak ((xVal> 900) dan (yVal 400)) {return topLED; }

lain jika ((xVal 400) dan (yVal <100)) {kembali kiriLED; }

lain jika ((xVal 400) dan (yVal> 900)) {kembali kananLED; }

yang lain {return -1; }

}

Langkah 4: Kod Rutin Gelung Utama

gelung kosong () {

untuk (int i = 0; i <panjang; i ++)

{

jika (rawak (0, 100)> 90) {selectLED = anaPinMap (rawak (2, 6));}

// Tambahkan kod untuk muzik permainan di sini

// *** *** ***

//

}

int anaPinMap (int randNum) {

jika (randNum == 2) {pulangkan A2; }

jika tidak (randNum == 3) {return A3; }

jika tidak (randNum == 4) {return A4; }

lain jika (randNum == 5) {return A5; }

}

Langkah 5: Bersedia untuk Mencuba

Langkah 6: Pelaksanaan Arduino Nano untuk Prototaip

Image
Image

Pelaksanaan yang sama dibuat dengan Arduino nano di papan roti, papan dibuat khusus dengan LED, perintang dan buzzer, dan suis joystick X-Y.

Langkah 7: Prototaip Whack-a-MoLED Pakej Akhir untuk Mempersembahkan Yang Tersayang

Prototaip Whack-a-MoLED Pakej Akhir untuk Menyajikan Yang Tersayang!
Prototaip Whack-a-MoLED Pakej Akhir untuk Menyajikan Yang Tersayang!
Prototaip Whack-a-MoLED Pakej Akhir untuk Menyajikan Yang Tersayang!
Prototaip Whack-a-MoLED Pakej Akhir untuk Menyajikan Yang Tersayang!

Bekalan untuk prototaip:

Kotak kadbod sederhana (Minimum 4cmX6cmX3cm), kepingan kadbod tambahan dari sokongan.

Kertas hiasan untuk menutupi casis (pilihan)

Pelekat / gam pelbagai guna

Papan roti mini (pilihan)

Arduino nano

PCB Sejagat Kecil

Bateri 9V untuk menghidupkan Arduino nano (sambungkan ke pin Vin).

Suis SPDT

Bekalan selebihnya (LED, perintang, kayu bedik, buzzer, wayar) seperti yang dijelaskan dalam langkah 1 di atas.

Disyorkan: