Բովանդակություն:

Cyclone LED Արկադային խաղ. 4 քայլ
Cyclone LED Արկադային խաղ. 4 քայլ

Video: Cyclone LED Արկադային խաղ. 4 քայլ

Video: Cyclone LED Արկադային խաղ. 4 քայլ
Video: Ep 112 Mastering a New World: Unveiling the Secrets and Unlocking Success with Kevin Strauss 2024, Հունիսի
Anonim
Image
Image
Տեղադրեք Fixture- ում
Տեղադրեք Fixture- ում

Այս նախագծի նպատակն էր ստեղծել պարզ խաղ Arduino- ի միջոցով, որը կլինի ինտերակտիվ և զվարճալի երեխաների համար: Հիշում եմ, որ «clիկլոն» արկադային խաղը երիտասարդ տարիքում իմ ամենասիրած արկադային խաղերից էր, ուստի որոշեցի կրկնօրինակել այն: Սա շատ պարզ նախագիծ է, որը բաղկացած է Arduino- ից, առանձին հասցեավորվող LED- ների շարքից և սեղմիչ կոճակից:

Խաղի նպատակն է դադարեցնել հեծանվավազքի լույսը, երբ այն հասնի նշված (կարմիր) LED- ին: Հաջողության դեպքում դժվարության մակարդակը կբարձրանա: Եթե անհաջող է, լուսային ցիկլը կվերսկսվի ընթացիկ դժվարության մակարդակով:

Այս հրահանգը հսկայական ռեսուրս էր իմ կոդավորման առանցքի համար:

Քայլ 1: Հավաքեք պաշարները

  • Հիմնական բաղադրիչներ.

    • Arduino (ես օգտագործել եմ UNO)
    • Անհատապես հասցեավորվող LED- ների շարք (ես օգտագործել եմ հղումը)
    • Կտտացրեք կոճակը (ես օգտագործեցի հղումը)
    • Տպագիր տպատախտակ (PCB) կամ տախտակ
    • Էլեկտրաէներգիայի մատակարարում (ես օգտագործել եմ երկու առանձին սնուցման աղբյուր, կարող եք մեկից ազատվել, եթե ստեղծագործ եք)

      • 5V 3A LED- ների համար
      • 9V 1A Arduino- ի համար
  • Շրջանակ:

    • Էլեկտրոնիկայի բնակարան (ես փոփոխեցի փայտե լամպի հարմարանքը Goodwill- ից)
    • LED պատյան (ես փոխեցի ձեր ստանդարտ պատի ժամացույցը և հորատեցի անցքեր `օգտագործելով րոպեի նույնացուցիչները որպես անցքի նշաններ: Հնարավորության դեպքում օգտագործեք փայտյա ժամացույց` հորատումը հեշտացնելու համար):
    • Կոճակի բնակարան (ես օգտագործել եմ արմունկով PVC խողովակ)
  • Գործիքներ / Այլ նյութեր.

    • Պահեստային էլեկտրագծեր ձեր միացման համար
    • 10K (անջատիչի համար քաշվող դիմադրություն) և 470 օհմ (LED- ների վրա տվյալների հաղորդալարի համար) դիմադրիչներ
    • Հորատեք ձեր LED- ները տեղադրելու համար անցքեր ստեղծելու և լարերի միջով անցնելու համար անհրաժեշտ բոլոր անցքեր կատարելու համար
    • Circuitոդման երկաթ `ձեր սխեման PCB- ին զոդելու համար
    • Տաք սոսինձ ատրճանակ `LED- ները ամրացնելու համար
    • Velcro կամ շրջանակը միասին ապահովելու որոշ միջոցներ
    • Լարերը անցնելու համար անցքերն ընտրովի են

Քայլ 2: Վերբեռնեք ծածկագիրը

Համոզվեք, որ ներբեռնում և ավելացնում եք «FastLED» գրադարանը

Կոդի միջուկը (դատարկ հանգույց) բաղկացած է երկու վիճակից ՝ սեղմիչ կոճակը բարձր (Վերջ խաղ) և սեղմ կոճակը ցածր (Խաղում): Երբ օգտվողը սեղմում է կոճակը, LED հասցեն, որի վրա լույսը անջատված էր, համեմատվում է կենտրոնական LED- ի հասցեի հետ: Եթե դրանք նույնը չեն, բոլոր լույսերը երկու անգամ կարմիր են բռնկվում և ընթացիկ մակարդակը վերսկսվում է: Եթե դրանք նույնն են, ցիլոնը (FastLED գրադարանի սցենար) աշխատում է երկու անգամ, դժվարության մակարդակը բարձրանում է, և նվագարկումը վերսկսվում է: Երբ խաղացողը հաղթում է վերջին մակարդակին, գլանն աշխատում է ութերորդ անգամ և խաղը վերսկսվում է 1 -ին մակարդակում:

// clիկլոնային խաղ

#ներառել «FastLED.h» // մինչև 50 #սահմանել NUM_LEDS 40 #սահմանել CENTER_LED 21 #սահմանել ՏՎՅԱԼՆԵՐԸ 7 #սահմանել LED_TYPE WS2811 #սահմանել ԳՈLՅՆ_ՊԱՀԱՆՈ RԹՅՈ RՆ RGB // տիրույթ 0-64 #սահմանել Պայծառություն 50 // Բարդության մակարդակների սահմանում #սահմանում EASY 1 #սահմանել ՄԻEDՆՈՐԴ 2 #սահմանել HARD 3 #սահմանել ON_SPEED 4 #սահմանել SONIC_SPEED 5 #սահմանել ROCKET_SPEED 6 #սահմանել LIGHT_SPEED 7 #սահմանել MISSION_IMPOSSIBLE 8 // Սկսելու դժվարությունը դժվարության մեջ = 1; // Սահմանել leds CRGB leds- ի զանգվածը [NUM_LEDS]; // Արդյո՞ք խաղացողը հաղթեց այս տուրում: Այս պիտակը օգտագործվում է դժվարության պարամետրերի համար: bool wonThisRound = կեղծ; // Հեծանվավազքի լույսի մեկնարկային վայրը int LED հասցե = 0; // Արդյո՞ք խաղն աշխատում է: bool Playing = true; // Արդյո՞ք սա առաջին հաղթանակն է: bool CycleEnded = ճշմարիտ; // Կոճակի մանրամասները const int buttonPin = 9; int կոճակ Պետություն = 0; // Նախաստորագրեք led գրադարանի և arduino գործառույթների void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Միսը և կարտոֆիլը // Երկու ռեժիմ. եթե (buttonState == HIGH) {Խաղում = կեղծ; // Օգտվողը սեղմել է կոճակը, և LED- ը կանգ է առել հաղթող հասցեում: համար (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Սև; } leds [CENTER_LED] = CRGB:: Կարմիր; leds [LEDaddress] = CRGB:: Կանաչ; FastLED.show (); եթե (CycleEnded = true) {int diff = abs (CENTER_LED - LED հասցե); // Գտնում է լուսավորված լուսադիոդի և կենտրոնի միջև հեռավորությունը, եթե (diff == 0) {wonThisRound = true; // Խաղացողը հաջողությամբ հաղթեց մակարդակին, եթե (դժվարություն! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} if (դժվարություն == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } դժվարություն = 0; } افزایشԴժվարություն (); wonThisRound = կեղծ; } else {հետաձգում (1000); համար (int i = 0; i <2; i ++) {flash (); }} CycleEnded = կեղծ; } LED հասցե = 0; ուշացում (250); buttonState = digitalRead (buttonPin); եթե (buttonState == LOW) {Խաղում = ճշմարիտ; }} // PLAYING if (Խաղում) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Սև; // Անջատում է բոլոր leds} leds [CENTER_LED] = CRGB:: Red; // Կենտրոնի գույնը սահմանում է կանաչ լեդերի [LEDaddress] = CRGB:: Green; // Հեծանիվներով առաջնորդվող գույնը կարմիր է դնում FastLED.show (); // Նախագծում է լուսադիոդային LED հասցե ++; // Լույսի ցիկլը միաժամանակ սահմանում է մեկ led- ի դեպքում, եթե (LEDaddress == NUM_LEDS) {LEDaddress = 0; } ուշացում (getTime (դժվարություն)); buttonState = digitalRead (buttonPin); եթե (buttonState == HIGH) {Խաղում = կեղծ; CycleEnded = ճշմարիտ; }}} // Մակարդակի պարամետրեր int getTime (int diff) // Վերադարձնում է led- ի շարժման ժամանակի հետաձգումը `ըստ դժվարության {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; ընդմիջում; գործ ՄԻEDԵՆ: timeValue = 80; ընդմիջում; գործ HARD: timeValue = 60; ընդմիջում; գործ ON_SPEED: timeValue = 40; ընդմիջում; գործ SONIC_SPEED: timeValue = 30; ընդմիջում; գործ ROCKET_SPEED: timeValue = 20; ընդմիջում; գործ LIGHT_SPEED: timeValue = 13; ընդմիջում; գործ MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Վերադարձնել հետաձգման գումարը} // Հաղթող դժվարությունը մեծացնում է պարամետրերը void افزایش Դժվարություն () {if (դժվարություն! = MISSION_IMPOSSIBLE && wonThisRound) {դժվարություն ++; }} // Lost LED Showույց տալ դատարկ լուսարձակը () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); ուշացում (500); fill_solid (leds, NUM_LEDS, CRGB:: Սև); FastLED.show (); ուշացում (500); } // Հաղթեց LED Showուցադրել void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} դատարկ գլան () {ստատիկ uint8_t երանգ = 0; Serial.print ("x"); // Առաջին հերթին սահեցրեք led- ը մեկ ուղղությամբ (int i = 0; i = 0; i--) համար {/: // Showույց տվեք ledles FastLED.show (); // այժմ, երբ մենք ցույց տվեցինք led- երը, i'th led- ը վերափոխեք սևի // leds = CRGB:: Black; fadeall (); // Մի փոքր սպասեք, նախքան շրջվելը և նորից դա հետաձգել (10); }}

Քայլ 3: Տեղադրեք Fixture- ում

Տեղադրեք Fixture- ում
Տեղադրեք Fixture- ում
Տեղադրեք Fixture- ում
Տեղադրեք Fixture- ում

Այս բաժնում չեմ պատրաստվում մանրամասնել: Այս մասով զբաղվելու հազար տարբեր եղանակներ կան, և ես կարծում եմ, որ դուք պետք է ստեղծագործեք, որպեսզի այն տեսնի, թե ինչպես է ձեզ դուր գալիս: Ասածս այն է, որ ժամացույցը բավականին հարմար էր օգտագործել LED- ները տեղադրելու համար, քանի որ այն ուներ րոպեային ցուցիչներ, որոնք ես կարողացա օգտագործել որպես հորատման նշաններ: Բացի այդ, ապակե ծածկը նույնպես թույլ է տալիս օգտագործել սա որպես սեղան:

Velcro- ն շատ օգտակար էր նաև էլեկտրոնիկայի պատյանների լուսատուին ամրացնելու համար: Ես նաև Velcro օգտագործեցի Arduino- ում: Սա շատ հարմար դարձրեց Arduino- ն դուրս հանելու համար, եթե ես երբևէ ցանկանամ փոփոխել կոդը:

Խորհուրդ ենք տալիս: