Inhoudsopgave:
- Benodigdheden
- Stap 1: Sluit het circuit aan
- Stap 2: Code voor het instellen van pinnen
- Stap 3: Code voor joystickdetectie
- Stap 4: Routinecode hoofdlus
- Stap 5: Klaar om uit te proberen
- Stap 6: Arduino Nano-implementatie voor prototype
- Stap 7: Laatste verpakt Whack-a-MoLED-prototype om je geliefde te presenteren
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Tinkercad-projecten »
Dit is een LED-versie van het klassieke Whack-a-Mole-spel.
In feite licht een willekeurige LED van 4 LED's op in plaats van een mol die uit een gat kijkt en de speler schakelt de LED uit met een joystick in plaats van de mol te meppen!
Benodigdheden
Arduino Uno/Nano of een andere variant board
4 LED's en bijbehorende stroombegrenzingsweerstanden.
Joystickmodule met X-, Y-uitgangen
Actieve zoemer (optioneel)
Jumperdraden.. genoeg om te debuggen!
Stap 1: Sluit het circuit aan
Sluit het Arduino Uno-bord aan op de joystickmodule en verbind 2 analoge ingangspinnen met de XY-uitgangen van de joystick.
4 LED's die moeten worden aangesloten met behulp van weerstanden op 4 digitale of analoge uitgangspinnen.
Actieve zoemer die moet worden aangesloten op een digitale uitgangspen
Stap 2: Code voor het instellen van pinnen
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 geselecteerdLED = 0; // Kan een van de A2, A3, A4 of A5 zijn
ongeldige setup() {
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode (links LED, UITGANG);
pinMode (rechts LED, UITGANG);
pinMode (topLED, UITGANG); pinMode (onderste LED, UITGANG);
pinMode (joyPin, UITGANG);
pinMode (zoemerPin, UITGANG);
}
Stap 3: Code voor joystickdetectie
void joystickSenseRoutine()
{
xVal = analoog lezen (xPin); yVal = analoogRead(yPin); butVal = digitalRead (butPin);
joyPin = mapXYtoPin(xVal, yVal, maarVal);
analoogWrite(selectedLED, 1024);
if (selectedLED != leftLED) {analogeWrite(leftLED, 0); } if (selectedLED != rightLED) { analogWrite(rightLED, 0); }
if (selectedLED != topLED) {analogeWrite(topLED, 0); }
if (selectedLED != bottomLED) {analogeWrite(bottomLED, 0); }
if (joyPin == selectedLED) // Mole Whacked
{
analogWrite (geselecteerde LED, 0);
//
// Voeg code toe om muziek/toon af te spelen voor het meppen van moLED!!
//
}
}
int mapXYtoPin(int xVal, int yVal, int butVal) { if ((xVal < 100) en (yVal 400)) { return bottomLED; }
else if ((xVal > 900) en (yVal 400)) { return topLED; }
else if ((xVal 400) en (yVal < 100)) { return leftLED; }
else if ((xVal 400) en (yVal> 900)) { return rightLED; }
anders { retourneer -1; }
}
Stap 4: Routinecode hoofdlus
lege lus() {
voor (int i = 0; i < lengte; i++)
{
if (willekeurig(0, 100) > 90) {selectedLED = anaPinMap(willekeurig (2, 6));}
// Voeg hier code toe voor gamemuziek
// *** *** ***
//
}
int anaPinMap(int randNum) {
if (randNum == 2) { retourneer A2; }
else if (randNum == 3) { retourneer A3; }
else if (randNum == 4) { retourneer A4; }
else if (randNum == 5) { retourneer A5; }
}
Stap 5: Klaar om uit te proberen
Stap 6: Arduino Nano-implementatie voor prototype
Dezelfde implementatie gemaakt met Arduino nano in breadboard, op maat gemaakt bord met LED's, weerstanden en zoemer, en X-Y joystickschakelaar.
Stap 7: Laatste verpakt Whack-a-MoLED-prototype om je geliefde te presenteren
Benodigdheden voor prototype:
Eenvoudige kartonnen doos (minimaal 4 cm x 6 cm x 3 cm), extra kartonnen stukken voor ondersteuning.
Decoratief papier om chassis te bedekken (optioneel)
Multifunctionele lijm/lijm
Mini breadboard (optioneel)
Arduino nano
Kleine universele printplaat
9V-batterij voor het voeden van Arduino nano (verbinden met Vin-pin).
SPDT-schakelaar:
Rest van de benodigdheden (LED's, weerstanden, joystick, zoemer, draden) zoals beschreven in stap 1 hierboven.