Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Tinkercad -projekt »
Detta är en LED-version av det klassiska Whack-a-Mole Game.
I grund och botten tänds en slumpmässig lysdiod av fyra lysdioder istället för att en mullvad tittar ut ur ett hål och spelaren stänger av lysdioden med en joystick istället för att knacka på mullvad!
Tillbehör
Arduino Uno/Nano eller någon variantbräda
4 lysdioder och motsvarande strömbegränsande motstånd.
Joystick -modul med X, Y -utgångar
Aktiv summer (tillval)
Bygelkablar.. nog att felsöka!
Steg 1: Anslut kretsen
Anslut Arduino Uno -kortet till joystickmodulen och anslut 2 analoga ingångsstiften till joystickens X Y -utgångar.
4 lysdioder som ska anslutas med motstånd till 4 digitala eller analoga utgångsstift.
Aktiv summer för anslutning till en digital utgångsstift
Steg 2: Kod för inställning av stift
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 valdLED = 0; // Kan vara en av A2, A3, A4 eller A5
void setup () {
pinMode (xPin, INPUT);
pinMode (yPin, INPUT);
pinMode (leftLED, OUTPUT);
pinMode (rightLED, OUTPUT);
pinMode (topLED, OUTPUT); pinMode (bottomLED, OUTPUT);
pinMode (joyPin, OUTPUT);
pinMode (buzzerPin, OUTPUT);
}
Steg 3: Kod för joystickavkänning
ogiltig joystickSenseRoutine ()
{
xVal = analogRead (xPin); yVal = analogRead (yPin); butVal = digitalRead (butPin);
joyPin = mapXYtoPin (xVal, yVal, butVal);
analogWrite (selectLED, 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); }
if (joyPin == selectedLED) // Mole Whacked
{
analogWrite (selectLED, 0);
//
// Lägg till kod för att spela musik/ton för whacking moLED !!
//
}
}
int mapXYtoPin (int xVal, int yVal, int butVal) {if ((xVal <100) och (yVal 400)) {return bottomLED; }
annars om ((xVal> 900) och (yVal 400)) {return topLED; }
annars om ((xVal 400) och (yVal <100)) {return leftLED; }
annars om ((xVal 400) och (yVal> 900)) {return rightLED; }
annat {return -1; }
}
Steg 4: Huvudslingans rutinkod
void loop () {
för (int i = 0; i <length; i ++)
{
if (random (0, 100)> 90) {selectedLED = anaPinMap (random (2, 6));}
// Lägg till kod för spelmusik här
// *** *** ***
//
}
int anaPinMap (int randNum) {
if (randNum == 2) {return A2; }
annars om (randNum == 3) {return A3; }
annars om (randNum == 4) {return A4; }
annars om (randNum == 5) {return A5; }
}
Steg 5: Redo att prova
Steg 6: Arduino Nano -implementering för prototyp
Samma implementering gjord med Arduino nano i brödbräda, skräddarsydda brädor med lysdioder, motstånd och summer och XY-joystickomkopplare.
Steg 7: Slutförpackad Whack-a-MoLED-prototyp för att presentera din älskade
Tillbehör för prototyp:
Enkel kartong (minst 4cmX6cmX3cm), extra kartongbitar för stöd.
Dekorativt papper för att täcka chassi (tillval)
Multifunktionslim/lim
Mini brödbräda (tillval)
Arduino nano
Liten universell kretskort
9V batteri för att driva Arduino nano (anslut till Vin pin).
SPDT -omkopplare
Resten av förbrukningsmaterialet (lysdioder, motstånd, joystick, summer, ledningar) enligt beskrivningen i steg 1 ovan.