İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Tinkercad Projeleri »
Bu, klasik Whack-a-Mole Game'in LED versiyonudur.
Temel olarak, bir delikten dışarı bakan bir köstebek yerine 4 LED'den rastgele bir LED yanar ve oyuncu, köstebeği vurmak yerine bir joystick kullanarak LED'i kapatır!
Gereçler
Arduino Uno/Nano veya herhangi bir varyant kartı
4 LED ve ilgili akım sınırlama dirençleri.
X, Y çıkışlı joystick modülü
Aktif Buzzer (isteğe bağlı)
Jumper kabloları.. hata ayıklamak için yeterli!
Adım 1: Devreyi Bağlayın
2 analog Giriş pinini joystick'in XY çıkışlarına bağlayarak Arduino Uno kartını joystick modülüne bağlayın.
4 adet Dijital veya Analog çıkış pin pinlerine dirençler kullanılarak bağlanacak 4 adet LED.
Dijital çıkış pinine bağlanacak Aktif Buzzer
2. Adım: Pinlerin Kurulumu için Kod
int xDeğer = 0, yVal = 0, butDeğer = 0, xPin = A0, yPin = A1, joyPin = 13, butPin = 7, hoparlörPin = 9;
int solLED = A2, sağLED = A3, üstLED = A4, altLED = A5;
int seçiliLED = 0; // A2, A3, A4 veya A5'ten biri olabilir
geçersiz kurulum() {
pinMode(xPin, GİRİŞ);
pinMode(yPin, INPUT);
pinMode(sol LED, ÇIKIŞ);
pinMode(sağ LED, ÇIKIŞ);
pinMode(topLED, ÇIKIŞ); pinMode(alt LED, ÇIKIŞ);
pinMode(joyPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
Adım 3: Joystick Algılama Kodu
void joystickSenseRoutine()
{
xVal = analogRead(xPin); yVal = analogRead(yPin); butVal = digitalRead(butPin);
joyPin = mapXYtoPin(xVal, yVal, butVal);
analogWrite(seçilenLED, 1024);
if (seçilenLED != solLED) { analogWrite(solLED, 0); } if (seçilenLED !=sağLED) { analogWrite(sağLED, 0); }
if (seçiliLED != topLED) { analogWrite(topLED, 0); }
if (seçiliLED != altLED) { analogWrite(altLED, 0); }
if (joyPin == seçiliLED) // Mole Whacked
{
analogWrite(seçilenLED, 0);
//
// moLED'i vurmak için müzik/ton çalmak için kod ekleyin!!
//
}
}
int mapXYtoPin(int xDeğer, int yVal, int butVal) { if ((xDeğer < 100) ve (yDeğer 400)) { dönüş altLED; }
else if ((xVal > 900) ve (yVal 400)) { return topLED; }
else if ((xVal 400) ve (yVal < 100)) { return solLED; }
else if ((xVal 400) ve (yVal > 900)) { sağa dönLED; }
başka { dönüş -1; }
}
Adım 4: Ana Döngü Rutin Kodu
boşluk döngüsü () {
for (int i = 0; i < uzunluk; i++)
{
if (rastgele(0, 100) > 90) { seçiliLED = anaPinMap(rastgele(2, 6));}
// Oyun müziğinin kodunu buraya ekleyin
// *** *** ***
//
}
int anaPinMap(int randNum) {
if (randNum == 2) { A2 döndür; }
else if (randNum == 3) { return A3; }
else if (randNum == 4) { return A4; }
else if (randNum == 5) { return A5; }
}
Adım 5: Denemeye Hazır
Adım 6: Prototip için Arduino Nano Uygulaması
Breadboard'da Arduino nano ile yapılan aynı uygulama, LED'ler, dirençler ve buzzer ile özel yapım pano ve X-Y joystick anahtarı.
7. Adım: Sevdiğiniz Kişiyi Sunmak İçin Son Paketlenmiş MoLED Vurma Prototipi
Prototip için malzemeler:
Basit karton kutu (Minimum 4cmX6cmX3cm), destek için ekstra karton parçaları.
Şasi kaplamak için dekoratif kağıt (isteğe bağlı)
Çok amaçlı yapıştırıcı/yapıştırıcı
Mini ekmek tahtası (isteğe bağlı)
Arduino nano
Küçük Evrensel PCB
Arduino nano'ya güç sağlamak için 9V pil (Vin pinine bağlayın).
SPDT anahtarı
Sarf malzemelerinin geri kalanı (LED'ler, dirençler, joystick, buzzer, teller) yukarıdaki 1. adımda açıklandığı gibi.