Mundarija:
- Ta'minotlar
- 1 -qadam: O'chirish sxemasini ulang
- 2 -qadam: Pimlarni o'rnatish kodi
- 3 -qadam: Joystikni sezish kodi
- 4 -qadam: Asosiy Loop muntazam kodi
- 5 -qadam: Sinab ko'rishga tayyormiz
- 6 -qadam: Prototip uchun Arduino Nano ilovasi
- 7-qadam: Sevganingizni taqdim etish uchun yakuniy paketli Whack-a-MoLED prototipi
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Tinkercad loyihalari »
Bu klassik Whack-a-Mole o'yinining LED versiyasi.
To'g'ridan -to'g'ri 4 ta LEDdan tasodifiy LED tuynukdan tashqariga qaraydigan mol yonadi va o'yinchi molni urish o'rniga joystik yordamida LEDni o'chiradi!
Ta'minotlar
Arduino Uno/Nano yoki har qanday variantlar paneli
4 ta LED va mos keladigan oqim cheklovli rezistorlar.
X, Y chiqadigan joystik moduli
Faol buzzer (ixtiyoriy)
Jumper simlari.. disk raskadrovka uchun etarli!
1 -qadam: O'chirish sxemasini ulang
Arduino Uno taxtasini joystik moduliga ulang, 2 ta analog kirish pinini joystikning X Y chiqishlariga ulang.
Rezistorlar yordamida 4 ta LEDni 4 ta raqamli yoki analog chiqish piniga ulash kerak.
Raqamli chiqish piniga ulanish uchun faol Buzzer
2 -qadam: Pimlarni o'rnatish kodi
int xVal = 0, yVal = 0, lekinVal = 0, xPin = A0, yPin = A1, joyPin = 13, lekinPin = 7, dinamikPin = 9;
int leftLED = A2, rightLED = A3, topLED = A4, pastkiLED = A5;
int selectedLED = 0; // A2, A3, A4 yoki A5 biri bo'lishi mumkin
bo'sh o'rnatish () {
pinMode (xPin, INPUT);
pinMode (yPin, INPUT);
pinMod (chapda LED, Chiqish);
pinMode (o'ng LED, Chiqish);
pinMode (topLED, OUTPUT); pinMod (pastki LED, Chiqish);
pinMode (joyPin, OUTPUT);
pinMode (buzzerPin, OUTPUT);
}
3 -qadam: Joystikni sezish kodi
void joystickSenseRoutine ()
{
xVal = analogRead (xPin); yVal = analogRead (yPin); butVal = digitalRead (butPin);
joyPin = mapXYtoPin (xVal, yVal, butVal);
analogWrite (tanlangan LED, 1024);
if (selectedLED! = leftLED) {analogWrite (leftLED, 0); } if (selectedLED! = rightLED) {analogWrite (rightLED, 0); }
if (selectedLED! = topLED) {analogWrite (topLED, 0); }
if (selectedLED! = bottomLED) {analogWrite (bottomLED, 0); }
agar (joyPin == tanlangan LED) // Mole Whacked
{
analogWrite (tanlangan LED, 0);
//
// MoLED -ni urish uchun musiqa/ohangni ijro etish uchun kod qo'shing !!
//
}
}
int mapXYtoPin (int xVal, int yVal, int butVal) {if ((xVal <100) va (yVal 400)) {return bottomLED; }
aks holda ((xVal> 900) va (yVal 400)) {topLED qaytaring; }
else if ((xVal 400) va (yVal <100)) {return leftLED; }
else if ((xVal 400) va (yVal> 900)) {rightLED qaytish; }
boshqa {qaytish -1; }
}
4 -qadam: Asosiy Loop muntazam kodi
void loop () {
uchun (int i = 0; i <uzunlik; i ++)
{
agar (tasodifiy (0, 100)> 90) {selectedLED = anaPinMap (tasodifiy (2, 6));}
// Bu erda o'yin musiqasi uchun kod qo'shing
// *** *** ***
//
}
int anaPinMap (int randNum) {
if (randNum == 2) {qaytarish A2; }
else if (randNum == 3) {A3 ni qaytaring; }
aks holda (randNum == 4) {A4 qaytaring; }
aks holda (randNum == 5) {A5 qaytaring; }
}
5 -qadam: Sinab ko'rishga tayyormiz
6 -qadam: Prototip uchun Arduino Nano ilovasi
Xuddi shunday dastur Arduino nano paneli bilan, diodli, rezistorli va signalli diodli maxsus taxtali va X-Y joystikli kalit bilan amalga oshirildi.
7-qadam: Sevganingizni taqdim etish uchun yakuniy paketli Whack-a-MoLED prototipi
Prototip uchun materiallar:
Oddiy karton quti (kamida 4 sm x 6 sm x 3 sm), qo'shimcha karton bo'laklari.
Shassisni yopish uchun dekorativ qog'oz (ixtiyoriy)
Ko'p maqsadli yopishtiruvchi/yopishtiruvchi
Mini non paneli (ixtiyoriy)
Arduino nano
Kichik universal PCB
Arduino nanosini quvvatlantirish uchun 9V batareya (Vin piniga ulanish).
SPDT kaliti
Qolgan materiallar (LEDlar, rezistorlar, joystik, zum, simlar) yuqoridagi 1 -qadamda tasvirlangan.