Sommario:

Whack-a-moLED!!: 7 passaggi
Whack-a-moLED!!: 7 passaggi

Video: Whack-a-moLED!!: 7 passaggi

Video: Whack-a-moLED!!: 7 passaggi
Video: DIY Pallet Breaker: Unlock the Secret to Easy Wood Reclamation! 2024, Novembre
Anonim
Whack-a-moLED!!
Whack-a-moLED!!
Whack-a-moLED!!
Whack-a-moLED!!

Progetti Tinkercad »

Questa è una versione LED del classico gioco Whack-a-Mole.

Fondamentalmente si accende un LED casuale su 4 LED invece di una talpa che guarda da un buco e il giocatore spegne il LED usando un joystick invece di colpire la talpa!

Forniture

Arduino Uno/Nano o qualsiasi scheda variante

4 LED e relative resistenze di limitazione della corrente.

Modulo joystick con uscite X, Y

Buzzer attivo (opzionale)

Ponticelli.. abbastanza per eseguire il debug!

Passaggio 1: collegare il circuito

Collega il circuito
Collega il circuito

Collega la scheda Arduino Uno al modulo joystick, collegando 2 pin di ingresso analogico alle uscite X Y del joystick.

4 LED da collegare tramite resistori a 4 pin di uscita digitali o analogici.

Buzzer attivo da collegare a un pin di uscita digitale

Passaggio 2: codice per l'impostazione dei pin

int xVal = 0, yVal = 0, butVal = 0, xPin = A0, yPin = A1, joyPin = 13, butPin = 7, speakerPin = 9;

int LED sinistro = A2, LED destro = A3, LED superiore = A4, LED inferiore = A5;

LED selezionato int = 0; // Può essere uno tra A2, A3, A4 o 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);

}

Passaggio 3: codice per il rilevamento del joystick

void joystickSenseRoutine()

{

xVal = analogRead(xPin); yVal = analogRead(yPin); butVal = digitalRead(butPin);

joyPin = mapXYtoPin(xVal, yVal, butVal);

analogWrite(LED selezionato, 1024);

if (LEDselezionato != LEDsinistro) { analogWrite(LEDsinistro, 0); } if (selectedLED != rightLED) { analogWrite(rightLED, 0); }

if (selectedLED != topLED) { analogWrite(topLED, 0); }

if (selectedLED != bottomLED) { analogWrite(bottomLED, 0); }

if (joyPin == LED selezionato) // Mole Whacked

{

analogWrite (LED selezionato, 0);

//

// Aggiungi codice per riprodurre musica/tono per colpire moLED!!

//

}

}

int mapXYtoPin(int xVal, int yVal, int butVal) { if ((xVal < 100) e (yVal 400)) { return bottomLED; }

else if ((xVal > 900) e (yVal 400)) { return topLED; }

else if ((xVal 400) e (yVal < 100)) { return leftLED; }

else if ((xVal 400) e (yVal > 900)) { return rightLED; }

else { ritorno -1; }

}

Passaggio 4: codice di routine del ciclo principale

ciclo vuoto() {

for (int i = 0; i < lunghezza; i++)

{

if (random(0, 100) > 90) { selectedLED = anaPinMap(random(2, 6));}

// Aggiungi qui il codice per la musica del gioco

// *** *** ***

//

}

int anaPinMap(int randNum) {

if (randNum == 2) { return A2; }

else if (randNum == 3) { return A3; }

else if (randNum == 4) { return A4; }

else if (randNum == 5) { return A5; }

}

Passaggio 5: pronto per la prova

Passaggio 6: implementazione Arduino Nano per prototipo

Image
Image

Stessa implementazione realizzata con Arduino nano in breadboard, scheda custom made con led, resistenze e buzzer, e interruttore joystick X-Y.

Passaggio 7: prototipo finale Whack-a-MoLED confezionato per presentare la persona amata

Prototipo finale Whack-a-MoLED confezionato per presentare la persona amata!
Prototipo finale Whack-a-MoLED confezionato per presentare la persona amata!
Prototipo finale Whack-a-MoLED confezionato per presentare la persona amata!
Prototipo finale Whack-a-MoLED confezionato per presentare la persona amata!

Forniture per prototipo:

Scatola di cartone semplice (minimo 4 cm X 6 cm X 3 cm), pezzi di cartone extra per il supporto.

Carta decorativa per rivestimento telaio (opzionale)

Adesivo/colla multiuso

Mini tagliere (opzionale)

Arduino nano

PCB universale piccolo

Batteria da 9V per alimentare Arduino nano (collegare al pin Vin).

Interruttore SPDT

Resto dei materiali di consumo (LED, resistori, joystick, cicalino, cavi) come descritto nel passaggio 1 sopra.

Consigliato: