Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Tinkercad Layihələri »
Bu klassik Whack-a-Mole Oyununun LED versiyasıdır.
Əsasən 4 LED -dən təsadüfi bir LED bir çuxurdan baxan bir köstək yerinə yanır və oyunçu köstəbəyi vurmaq əvəzinə bir joystick istifadə edərək LED -i söndürür!
Təchizat
Arduino Uno/Nano və ya hər hansı bir variant lövhəsi
4 LED və müvafiq cərəyan məhdudlaşdıran rezistorlar.
X, Y çıxışları olan Joystick modulu
Aktiv Buzzer (isteğe bağlı)
Jumper teller.. ayıklamak üçün kifayətdir!
Addım 1: Dövrəni bağlayın
Arduino Uno lövhəsini joystick moduluna bağlayın, 2 analog Giriş pinini joystickin X Y çıxışlarına bağlayın.
Rezistorlar istifadə edərək 4 ədəd LED, 4 ədəd rəqəmsal və ya analoq çıxış pininə bağlanacaq.
Rəqəmsal çıxış pininə qoşulmaq üçün Aktiv Buzzer
Addım 2: Sancaqlar qurmaq üçün kod
int xVal = 0, yVal = 0, butVal = 0, xPin = A0, yPin = A1, joyPin = 13, butPin = 7, SpeakerPin = 9;
int leftLED = A2, rightLED = A3, topLED = A4, bottomLED = A5;
int selectedLED = 0; // A2, A3, A4 və ya A5 -dən biri ola bilər
boş quraşdırma () {
pinMode (xPin, GİRİŞ);
pinMode (yPin, GİRİŞ);
pinMode (sol LED, ÇIXIŞ);
pinMode (sağ LED, Çıxış);
pinMode (topLED, ÇIXIŞ); pinMode (alt LED, ÇIXIŞ);
pinMode (joyPin, ÇIXIŞ);
pinMode (buzzerPin, Çıxış);
}
Addım 3: Joystick Algılama kodu
void joystickSenseRoutine ()
{
xVal = analogRead (xPin); yVal = analogRead (yPin); butVal = digitalRead (butPin);
joyPin = mapXYtoPin (xVal, yVal, butVal);
analogWrite (seçilmiş LED, 1024);
əgər (seçilmişLED! = sol LED) {analogWrite (leftLED, 0); } if (selectedLED! = rightLED) {analogWrite (rightLED, 0); }
if (seçilmişLED! = topLED) {analogWrite (topLED, 0); }
əgər (seçilmişLED! = alt LED) {analogWrite (bottomLED, 0); }
if (joyPin == seçilmiş LED) // Mole Hacked
{
analogWrite (seçilmiş LED, 0);
//
// moLED vurmaq üçün musiqi/ton çalmaq üçün kod əlavə edin!
//
}
}
int mapXYtoPin (int xVal, int yVal, int butVal) {if ((xVal <100) və (yVal 400)) {return bottomLED; }
else if ((xVal> 900) və (yVal 400)) {return topLED; }
else if ((xVal 400) və (yVal <100)) {sola qayıt LED; }
else ((xVal 400) və (yVal> 900)) {sağa qayıt; }
başqa {qaytar -1; }
}
Addım 4: Əsas Loop Rutin Kodu
boşluq döngəsi () {
üçün (int i = 0; i <uzunluq; i ++)
{
əgər (təsadüfi (0, 100)> 90) {selectedLED = anaPinMap (təsadüfi (2, 6));}
// Buraya oyun musiqisi üçün kod əlavə edin
// *** *** ***
//
}
int anaPinMap (int randNum) {
if (randNum == 2) {A2 qaytar; }
else if (randNum == 3) {A3 qaytar; }
else if (randNum == 4) {A4 qaytar; }
else if (randNum == 5) {A5 qaytar; }
}
Addım 5: sınamağa hazırsınız
Addım 6: Prototip üçün Arduino Nano Tətbiqi
Çörək taxtasında Arduino nano ilə eyni tətbiq, LED, rezistorlar və səs siqnalları olan xüsusi hazırlanmış lövhə və X-Y joystick açarı.
Addım 7: Sevdiyinizi Təqdim etmək üçün Son Paketli Whack-a-MoLED Prototipi
Prototip üçün materiallar:
Sadə karton qutu (Minimum 4cmX6cmX3cm), dəstək üçün əlavə karton parçalar.
Şassi örtmək üçün dekorativ kağız (isteğe bağlı)
Çox məqsədli yapışqan/yapışqan
Mini çörək taxtası (isteğe bağlı)
Arduino nano
Kiçik Universal PCB
Arduino nanonun işləməsi üçün 9V batareya (Vin pininə qoşulun).
SPDT açarı
Qalan təchizatlar (LEDlər, rezistorlar, joystick, səs siqnalı, tellər) yuxarıdakı 1 -ci addımda göstərildiyi kimi.