Мазмуну:

Whack-a-moLED !!: 7 кадам
Whack-a-moLED !!: 7 кадам

Video: Whack-a-moLED !!: 7 кадам

Video: Whack-a-moLED !!: 7 кадам
Video: Favorite April Fools Jokes 2015 2024, Июль
Anonim
Whack-a-moLED !!
Whack-a-moLED !!
Whack-a-moLED !!
Whack-a-moLED !!

Tinkercad долбоорлору »

Бул классикалык Whack-a-Mole Оюндун LED версиясы.

Негизинен 4 светодиоддон турган туш келди LED тешиктен карап турган меңдин ордуна күйөт жана оюнчу меңди уруунун ордуна джойстикти колдонуп LEDди өчүрөт!

Жабдуулар

Arduino Uno/Nano же башка варианттар тактасы

4 LED жана тиешелүү чектөөчү резисторлор.

Джойстик модулу X, Y менен чыгат

Active Buzzer (милдеттүү эмес)

Jumper зымдары.. мүчүлүштүктөрдү оңдоо үчүн жетиштүү!

1 -кадам: Районду туташтыруу

Районду туташтыруу
Районду туташтыруу

Arduino Uno тактасын джойстиктин модулуна илип, джойстиктин X Y чыгышына 2 аналогдук кирүү казыгын туташтырыңыз.

4 светодиод 4 резистордун жардамы менен 4 санариптик же аналогдук чыгуучу казыкка туташтырылат.

Active Buzzer санарип чыгуучу пинге туташтырылат

2 -кадам: Пиндерди орнотуу коду

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 selectedLED = 0; // A2, A3, A4 же A5тин бири болушу мүмкүн

жараксыз орнотуу () {

pinMode (xPin, INPUT);

pinMode (yPin, INPUT);

pinMode (leftLED, OUTPUT);

pinMode (rightLED, OUTPUT);

pinMode (topLED, OUTPUT); pinMode (bottomLED, OUTPUT);

pinMode (joyPin, OUTPUT);

pinMode (buzzerPin, OUTPUT);

}

3 -кадам: Джойстикти сезүү коду

void joystickSenseRoutine ()

{

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

joyPin = mapXYtoPin (xVal, yVal, butVal);

analogWrite (тандалган 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); }

if (joyPin == selectedLED) // Mole Whacked

{

analogWrite (тандалган LED, 0);

//

// moLED чабуу үчүн музыка/обон ойнотуу үчүн код кошуңуз !!

//

}

}

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

else if ((xVal> 900) жана (yVal 400)) {return topLED; }

else if ((xVal 400) жана (yVal <100)) {return leftLED; }

else if ((xVal 400) жана (yVal> 900)) {return rightLED; }

else {return -1; }

}

4 -кадам: Негизги циклдин кадимки коду

void loop () {

үчүн (int i = 0; i <узундугу; i ++)

{

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

// Бул жерде оюн музыкасы үчүн кодду кошуңуз

// *** *** ***

//

}

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; }

}

5 -кадам: Сыноого даяр

6 -кадам: Прототип үчүн Arduino Nano ишке ашыруу

Image
Image

Ардуино наносу менен жасалган такта, светодиоддор, резисторлор жана зумзер, X-Y джойстик которгучтары бар атайын жасалган такта.

7-кадам: Сүйүктүүңүздү көрсөтүү үчүн акыркы пакеттелген Whack-a-MoLED прототипи

Сүйүктүүңүздү көрсөтүү үчүн акыркы пакеттелген Whack-a-MoLED прототипи!
Сүйүктүүңүздү көрсөтүү үчүн акыркы пакеттелген Whack-a-MoLED прототипи!
Сүйүктүүңүздү көрсөтүү үчүн акыркы пакеттелген Whack-a-MoLED прототипи!
Сүйүктүүңүздү көрсөтүү үчүн акыркы пакеттелген Whack-a-MoLED прототипи!

Прототип үчүн жабдуулар:

Жөнөкөй картон кутуча (Минималдуу 4cmX6cmX3cm), колдоо үчүн кошумча картон кесимдери.

Шасси жабуу үчүн декоративдүү кагаз (милдеттүү эмес)

Көп максаттуу клей/клей

Мини нан тактасы (милдеттүү эмес)

Arduino nano

Чакан универсалдуу PCB

9V батарейка Arduino нанону иштетүү үчүн (Вин пинге туташуу).

SPDT которгуч

Калган жабдыктар (Светодиоддор, резисторлор, джойстик, зумзер, зымдар) жогоруда 1 -кадамда сүрөттөлгөндөй.

Сунушталууда: