Orodha ya maudhui:

Kimbunga cha LED Arcade Mchezo: 4 Hatua
Kimbunga cha LED Arcade Mchezo: 4 Hatua

Video: Kimbunga cha LED Arcade Mchezo: 4 Hatua

Video: Kimbunga cha LED Arcade Mchezo: 4 Hatua
Video: ОЖИДАНИЕ или РЕАЛЬНОСТЬ! ИГРЫ в РЕАЛЬНОЙ ЖИЗНИ! Маленькие кошмары 2 в реальной жизни! 2024, Novemba
Anonim
Image
Image
Sakinisha katika Fixture
Sakinisha katika Fixture

Kusudi la mradi huu ilikuwa kuunda mchezo rahisi kwa kutumia Arduino ambayo ingekuwa ikiingiliana na kuburudisha watoto. Nakumbuka mchezo wa Arcade wa Kimbunga ukiwa moja ya michezo ninayopenda sana wakati nilikuwa mdogo, kwa hivyo niliamua kuiga tena. Huu ni mradi rahisi sana ambao una Arduino, kamba ya LED zinazoweza kusambazwa, na kitufe cha kushinikiza.

Lengo la mchezo ni kusimamisha taa ya baiskeli inapofikia LED iliyoonyeshwa (nyekundu). Ikiwa imefanikiwa, kiwango cha ugumu kitaongezeka. Ikiwa haikufanikiwa, mzunguko wa nuru utaanza tena katika kiwango cha ugumu wa sasa.

Hii inaweza kufundishwa kama rasilimali kubwa kwa msingi wa usimbuaji wangu.

Hatua ya 1: Kusanya Vifaa

  • Sehemu kuu:

    • Arduino (nilitumia UNO)
    • Kamba ya LED zinazoshughulikiwa kibinafsi (nilitumia kiunga)
    • Bonyeza kitufe (nilitumia kiunga)
    • Bodi ya mzunguko iliyochapishwa (PCB) au ubao wa mkate
    • Ugavi wa Umeme (Nilitumia vifaa viwili tofauti vya umeme, unaweza kuondoka na moja ikiwa wewe ni mbunifu)

      • 5V 3A kwa LED
      • 9V 1A ya Arduino
  • Mfumo:

    • Makazi ya umeme (nilibadilisha taa ya mbao kutoka kwa Nia njema)
    • Nyumba ya LED (nilibadilisha saa yako ya kawaida ya ukuta na mashimo yaliyotobolewa kwa kutumia vitambulisho vya dakika kama alama za shimo. Tumia saa ya kuni ikiwezekana kufanya uchimbaji rahisi.)
    • Nyumba ya vifungo (nilitumia bomba la PVC la kiwiko)
  • Zana / Vifaa vingine:

    • Vipuri vya wiring kwa mzunguko wako
    • 10K (kontena la kuvuta-kubadili kwa kubadili) na 470 ohm (kwa waya wa data kwenye LED) vipinga
    • Piga visima kwa kuunda mashimo ya kuweka LED zako na kutengeneza mashimo yoyote muhimu kwenye fiji yako kupitisha waya
    • Kuchuma chuma kwa kuuza mzunguko wako kwa PCB
    • Moto gundi bunduki kwa kupata LEDs kwa fixture yako
    • Velcro au njia zingine za kupata mfumo pamoja
    • Gaskets hiari kwa mashimo yaliyotobolewa kwa waya kupita

Hatua ya 2: Pakia Msimbo

Hakikisha unapakua na kuongeza maktaba ya "FastLED"

Kiini cha nambari (kitanzi batili) kina majimbo mawili: kifungo cha juu cha kushinikiza (Mchezo wa Mwisho) na kitufe cha kushinikiza chini (Cheza). Mara tu mtumiaji anapobonyeza kitufe, anwani ya LED taa ilizuiwa inalinganishwa na anwani ya kituo cha LED. Ikiwa hazifanani, taa zote zinawaka nyekundu mara mbili na kiwango cha sasa kitaanza tena. Ikiwa zinafanana, siloni (hati ya maktaba ya FastLED) huendesha mara mbili, kiwango cha ugumu huongezeka, na kucheza tena. Mara tu mchezaji anapiga kiwango cha mwisho, siloni huendesha mara nane na mchezo huanza tena kwa kiwango cha 1.

// Mchezo wa Kimbunga

# pamoja na "FastLED.h" // hadi 50 #fafanua NUM_LEDS 40 #fafanua CENTER_LED 21 #fafanua DATA_PIN 7 #fafanua LED_TYPE WS2811 #fafanua RANGI_RODI RGB // masafa 0-64 #fafanua NURU 50 // Ufafanuzi wa viwango vya ugumu #fafanua Rahisi 1 #fafanua CHANGANZO 2 #fafanua NGUMU 3 #fafanua ON_SPEED 4 #fasili SONIC_SPEED 5 #fafanua ROCKET_SPEED 6 #fafanua NURT_SPEED 7 #fafanua MISSION_IMPOSSIBLE 8 // Kuanza ugumu int ugumu = 1; // Fafanua safu ya viongozo vya CRGB vilivyoongozwa [NUM_LEDS]; // Je! Mchezaji alishinda raundi hii? Lebo hii hutumiwa kwa vigezo vya ugumu. bool wonThisRound = uongo; // Kuanzia eneo la taa ya baiskeli int LEDadress = 0; // Je! Mchezo unakimbia? kucheza bool = kweli; // Je! Huu ndio ushindi wa kwanza? bool CycleEnded = kweli; // Maelezo ya kitufe const int buttonPin = 9; kifungo cha ndani Jimbo = 0; // Anzisha maktaba iliyoongozwa na kazi za arduino batili kuanzisha () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (MWANGA); pinMode (kifungoPini, INPUT); Kuanzia Serial (9600); } // Nyama na viazi // Njia mbili - Kucheza na Kukomesha mchezo batili kitanzi () {// END GAME buttonState = digitalRead (buttonPin); ikiwa (buttonState == HIGH) {Playing = false; // Mtumiaji amebonyeza kitufe, na LED imesimama kwenye anwani ya kushinda. kwa (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Nyeusi; } viongozo [CENTER_LED] = CRGB:: Nyekundu; leds [LEDadress] = CRGB:: Kijani; FastLED.show (); ikiwa (CycleEnded = kweli) {int diff = abs (CENTER_LED - LEDdress); // Hupata umbali kati ya taa iliyoongozwa na kituo kilichoongozwa ikiwa (diff == 0) {wonThisRound = kweli; // Mchezaji alifanikiwa kupiga kiwango ikiwa (shida! = MISSION_IMPOSSIBLE) {kwa (int i = 0; i <2; i ++) {siloni (); }} ikiwa (shida == MISSION_IMPOSSIBLE) {kwa (int i = 0; i <8; i ++) {siloni (); } ugumu = 0; } ongezeko ugumu (); wonThisRound = uwongo; } mwingine {kuchelewesha (1000); kwa (int i = 0; i <2; i ++) {flash (); }} Mzunguko uliopitishwa = uwongo; } Anwani ya LED = 0; kuchelewesha (250); kifungoState = digitalRead (buttonPin); ikiwa (buttonState == LOW) {Playing = true; }} // KUCHEZA ikiwa (Inacheza) {kwa (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Nyeusi; // Huzima viongozo vyote} viongozo [CENTER_LED] = CRGB:: Nyekundu; // Rangi ya kituo iliyoongozwa katikati kwa vipuli vya kijani [LEDaddress] = CRGB:: Kijani; // Inaweka rangi inayoongozwa na baiskeli kuwa nyekundu FastLED. Onyesha (); // Inazindua mzunguko wa mwangaza wa LED ++; // Inaweka mzunguko nyepesi kwa moja iliyoongozwa wakati ikiwa (LEDaddress == NUM_LEDS) {LEDaddress = 0; } kuchelewesha (GetTime (ugumu)); kifungoState = digitalRead (buttonPin); ikiwa (buttonState == HIGH) {Playing = false; MzungukoEnded = kweli; }}} // Viwango vya Ngazi ya intTime (int diff) // Inarudisha ucheleweshaji wa muda kwa msingi wa harakati iliyoongozwa kwa shida {int timeValue = 0; badilisha (tofauti) {kesi EASY: timeValue = 100; kuvunja; kesi ya kati: mudaValue = 80; kuvunja; kesi HARD: timeValue = 60; kuvunja; kesi ON_SPEED: timeValue = 40; kuvunja; kesi SONIC_SPEED: muda Thamani = 30; kuvunja; kesi ROCKET_SPEED: muda Thamani = 20; kuvunja; kesi LIGHT_SPEED: Thamani ya muda = 13; kuvunja; kesi MISSION_IMPOSSIBLE: timeValue = 7; } Thamani ya muda wa kurudi; // Rudisha kiwango cha ucheleweshaji} // Shida ya kushinda huongeza vigezo bila ongezeko la Ugumu () {ikiwa (ugumu! = MISSION_IMPOSSIBLE && wonThisRound) {shida ++; }} // Mwangaza uliopotea wa Onyesho la batili () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); kuchelewesha (500); kujaza_solid (viongoz, NUM_LEDS, CRGB:: Nyeusi); FastLED.show (); kuchelewesha (500); } // Won LED Show batili fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} batili batili () {tuli uint8_t hue = 0; Serial.print ("x"); // Kwanza teremsha iliyoongozwa katika mwelekeo mmoja kwa (int i = 0; i = 0; i--) {// Weka i'th iliyoongozwa kwa risasi nyekundu = CHSV (hue ++, 255, 255); // Onyesha kuongoza FastLED.show (); // sasa kwa kuwa tumeonyesha viongozo, weka upya i'th iliyoongozwa kwa nyeusi // leds = CRGB:: Nyeusi; kufifia (); // Subiri kidogo kabla hatujazunguka na kuifanya tena kuchelewesha (10); }}

Hatua ya 3: Sakinisha katika Fixture

Sakinisha katika Fixture
Sakinisha katika Fixture
Sakinisha katika Fixture
Sakinisha katika Fixture

Sitaenda kwenda kwa maelezo katika sehemu hii. Kuna njia elfu tofauti za kwenda juu ya sehemu hii na nadhani unapaswa kuwa mbunifu kuifanya ionekane jinsi unavyopenda. Hiyo inasemwa, saa hiyo ilikuwa rahisi kutumia kwa kuweka LEDs kwani ilikuwa na viashiria vya dakika ambavyo niliweza kutumia kama alama za kuchimba visima. Pia, kifuniko cha glasi pia kinaniruhusu nitumie hii kama meza.

Velcro ilikuwa muhimu sana pia kwa kupata taa ya taa kwa vifaa vya umeme vya nyumba. Nilitumia pia velcro kwenye Arduino. Hii ilifanya iwe rahisi sana kwa kuvuta Arduino ikiwa ningetaka kurekebisha nambari.

Ilipendekeza: