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

Ձեռքի ռիթմ `6 քայլ
Ձեռքի ռիթմ `6 քայլ
Anonim
Ռիթմիկ Ձեռք
Ռիթմիկ Ձեռք

Այս կիբերասերը ճիշտ պահին ճիշտ քայլ կատարելու մասին է:

Լույսերը գնում են ձեր թևից (արմունկ) դեպի ձեր ձեռքը, և երբ լույսերը հասնում են ձեր ձեռքին, դուք պետք է ձեր մատները սեղմեք մինի ֆոտոցելի վրա:

Եթե ճիշտ պահին ձեռքը սեղմեք մինի ֆոտոէլեկտրակայանի վրա, լուսադիոդները կանաչում են: Եթե ոչ, ապա led- ները դառնում են կարմիր:

Քայլ 1: Հավաքեք նյութեր

  • Ձեռնոց
  • Գործվածք `ձեռնոցն ավելի երկար դարձնելու համար
  • WS2812B LED ժապավեն
  • Լարերը
  • Արդուինո
  • Մինի ֆոտոշարք

Քայլ 2: Շղթաների պատրաստում

Շղթաներ պատրաստելը
Շղթաներ պատրաստելը
Շղթաներ պատրաստելը
Շղթաներ պատրաստելը

Նախ միացրեք led ժապավենը arduino- ին: Դուք կարող եք դա անել `միացնելով +5v- ն 5v- ին arduino- ի վրա: The Din- ը պետք է միացված լինի arduino- ում, իսկ GND- ը `arduino- ի GND- ին:

Դուք նաև պետք է միացնեք մինի լուսաբջիջը arduino- ին `led ժապավենից 5v լարին միանալու միջոցով և arduino- ի PIN 6 -ին մետաղալարով միացվող նույն աղբյուրից: Մինի ֆոտոէլեկտրակայանի մյուս կողմը պետք է միացված լինի GND մետաղալարին `առաջնորդվող ժապավենից

Քայլ 3: Ձեռնոցի ձևավորում

Ձեռնոցի ձևավորում
Ձեռնոցի ձևավորում

Ձեռնոցը պետք է ունենա ճիշտ չափս, որը կհամապատասխանի led շերտերին: Առաջատարները պետք է հավասարեցվեն, որպեսզի ավելի հաճելի լինի նայելը:

Այս խաղի համար դուք պետք է օգտագործեք ձեր թևը և ցանկանում եք, որ կարողանաք ազատ տեղաշարժվել: Դա կարելի է գիտակցել ՝ արդուինոն ձեռնոցի վրա դնելով: Ես օգտագործել եմ velcro- ն որպես ամրացնող սարք `արդուինոն ձեռնոցին կպցնելու համար: Այնուհետև ավելի շատ կայունություն հաստատելու համար կարող եք պարան տեղադրել ձեռնոցի և արդուինոյի շուրջը:

Մինի ֆոտոխցիկը կարված է ձեռնոցի ներսում, այնպես որ այն կմնա տեղում:

Ի վերջո, դուք պետք է թաքցնեք լարերը, որպեսզի այն ավելի լավ տեսք ունենա: Դա կարելի է անել հյուսվածքով, որը կարված կլինի լարերի վերևում:

Քայլ 4: Sոդում

Oldոդման
Oldոդման

Այժմ դուք կարող եք միացման լարերը միացումից ապահով դարձնել զոդման միջոցով:

Քայլ 5: Կոդավորում

Կոդավորում
Կոդավորում
Կոդավորում
Կոդավորում
Կոդավորում
Կոդավորում

// NeoPixel շերտի փորձարկման հիմնական ծրագիր:

// NEOPIXEL ԼԱՎԱԳՈՅՆ ԳՈՐՈՆԵՈԹՅՈՆՆԵՐ ամենահուսալի աշխատանքի համար. // - ՆԱԽԱԵԼ ՄԵԿԱՈՄԱՆ ՄԵԿՆԱԲԱՆՈԹՅՈՆԸ միկրոկառավարիչի տախտակի և առաջին պիքսելների միջև: //-NeoPixel շերտի DATA-IN- ը պետք է անցնի 300-500 OHM RESISTOR- ով: // - ԽՈՍԵԼ NeoPixels- ը Ո LԻ Շրջանի վրա միացնելուց: Եթե պետք է, ՄԻՇՏ // միացրեք GROUND (-) նախ, ապա +, ապա տվյալները: //-3.3V միկրոկոնտրոլեր 5V սնուցվող NeoPixel ժապավենով օգտագործելիս, // տվյալների գծի ՏՐԱՄԱԲԱՆԱԿԱՆ ՓՈՓՈԽՈԹՅՈՆԸ ԽՈՐՀՐԴԱՎԱՐՈԹՅՈՆ Է: // (Բաց թողնել դրանք կարող են լավ աշխատել ձեր աշխատասեղանին, բայց կարող է ձախողվել դաշտում)

#ներառել #ifdef _AVR_ #ներառել // Պահանջվում է 16 ՄՀց Adafruit մանրուք #endif

// Arduino- ի ո՞ր քորոցը միացված է NeoPixels- ին: // Կտրուկի կամ Gemma- ի վրա մենք առաջարկում ենք փոխել այն 1: #սահմանել LED_PIN 6

// Քանի՞ NeoPixel է կցված Arduino- ին: #սահմանեք LED_COUNT 60

// Հայտարարեք մեր NeoPixel շերտի օբյեկտը ՝ Adafruit_NeoPixel շերտը (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t գույն = շերտ. Գույն (127, 127, 127); // Սպիտակ գույն, լռելյայն bool- ի համար սեղմված է Corrrectly = false; // Փաստարկ 1 = NeoPixel շերտի պիքսելների քանակը // Փաստարկ 2 = Arduino փին համարը (շատերը վավեր են) // Փաստարկ 3 = Պիքսել տիպի դրոշներ, անհրաժեշտության դեպքում ավելացնել միասին. // NEO_KHZ800 800 ԿՀց բիթստրիմ WS2812 LEDs) // NEO_KHZ400 400 KHz (դասական «v1» (ոչ v2) FLORA պիքսելներ, WS2811 վարորդներ) // NEO_GRB պիքսելները միացված են GRB բիթստրիմի համար (NeoPixel ապրանքների մեծ մասը) // NEO_RGB պիքսելները միացված են RGB բիթստրիմի համար (v1 FLORA պիքսել), ոչ v2) // NEO_RGBW պիքսելները միացված են RGBW bitstream- ի համար (NeoPixel RGBW արտադրանք)

// setup () գործառույթը-գործարկում է մեկ անգամ գործարկման ժամանակ ------------------------------------

void setup () {// Այս տողերը հատուկ աջակցում են Adafruit Trinket 5V 16 ՄՀց հաճախականությանը: // boardանկացած այլ տախտակ, կարող եք հեռացնել այս հատվածը (բայց դրանից հեռանալը ոչ մի վնաս չի պատճառի). #endif // Trinket- ի հատուկ ծածկագրի ՎԵՐ END:

pinMode (A0, INPUT); strip.begin (); // ՍՆԱՆԵԼ NeoPixel շերտի օբյեկտ (ՊԱՐՏԱԴԻՐ) strip.show (); // Անջատեք բոլոր պիքսելները ASAP strip.setBrightness (10); // BRIGHTNESS- ը սահմանել մոտ 1/5 (առավելագույնը = 255)}

// loop () գործառույթը-անընդհատ աշխատում է այնքան ժամանակ, քանի դեռ տախտակը միացված է ---------------

void loop () {clickedCorrectly = theaterChaseOne (գույն); if (սեղմված է ճիշտ) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}

// Մեր որոշ գործառույթներ ՝ անիմացիոն էֆեկտներ ստեղծելու համար -----------------

// Թատրոն-մարկի ոճով հետապնդող լույսեր: Անցեք գույնով (32-բիթանոց արժեք, // a la շերտ. Գույն (r, g, b), ինչպես նշվեց վերևում) և հետաձգման ժամանակ (ms) // շրջանակների միջև: bool theaterChaseOne (uint32_t գույն) {bool ճիշտ = կեղծ; bool clickedWrong = false; for (int index = 0; index 800) {// value light sensor if (index <16) {// 2 leds before end, then you can click color = strip. Color (255, 0, 0); // կարմիր գույնի leds սեղմված Սխալ = ճշմարիտ; // սխալ սեղմված, ապա լուսադիոդները կարմիր են դառնում} else if (! clickedWrong) {// եթե սխալ չէ color = strip. Color (0, 255, 0); // կանաչ գույնը տանում է ճիշտ = ճշմարիտ; // ճիշտ սեղմված, ապա լուսադիոդները կանաչում են}} strip.clear (); strip.setPixelColor (17 - ինդեքս, գույն); // առաջին շարքի լուսարձակներ strip.setPixelColor (18 + ինդեքս, գույն); // երկրորդ շարքի լուսարձակներ strip.setPixelColor (53 - ինդեքս, գույն); // երրորդ շարքի լուսարձակներ strip.show (); ուշացում (300); } վերադարձը ճիշտ է; }

Քայլ 6: Փոփոխություններ

Փոփոխություններ
Փոփոխություններ
Փոփոխություններ
Փոփոխություններ
Փոփոխություններ
Փոփոխություններ

Որոշ փոփոխություններ կատարեցի: Նախ ես թաքցրի arduino- ն, որպեսզի ավելի հարմար լինի օգտագործել «Rythm hand» - ը, և երկրորդ ՝ ես մի փոքր փոխեցի ծածկագիրը: Ես փոխեցի ծածկագիրը այնպես, որ ճիշտ պահին սեղմելիս գույնը դառնում է կանաչ, և LEDS- ն ավելի արագ է շարժվում: Դրանով LED Swill- ը դառնում է 10% ավելի արագ, քան նախկինում: Սա ավելի հետաքրքիր է դարձնում խաղը

Ահա այսպիսին է կոդը այժմ.

// NeoPixel շերտի փորձարկման հիմնական ծրագիր: // NEOPIXEL ԼԱՎԱԳՈՅՆ ԳՈՐՈՆԵՈԹՅՈՆՆԵՐ ամենահուսալի աշխատանքի համար. // - նվազագույնի հասցնել լարերի երկարությունը միկրոկառավարիչի տախտակի և առաջին պիքսելների միջև: //-NeoPixel շերտի DATA-IN- ը պետք է անցնի 300-500 OHM RESISTOR- ով: // - ԽՈՍԵԼ NeoPixels- ը Ո LԻ Շրջանի վրա միացնելուց: Եթե պետք է, ՄԻՇՏ // միացրեք GROUND (-) նախ, ապա +, ապա տվյալները: //-3.3V միկրոկոնտրոլեր 5V սնուցվող NeoPixel ժապավենով օգտագործելիս, // տվյալների գծի ՏՐԱՄԱԲԱՆԱԿԱՆ ՓՈՓՈԽՈԹՅՈՆԸ ԽՈՐՀՐԴԱՎԱՐՈԹՅՈՆ Է: // (Դրանք բաց թողնելը կարող է նորմալ աշխատել ձեր աշխատասեղանին, բայց կարող է ձախողվել դաշտում) #ներառել #ifdef _AVR_ #ներառել // Պահանջվում է 16 ՄՀց հաճախականությամբ Adafruit Trinket #endif // Arduino- ի ո՞ր քորոցը միացված է NeoPixels- ին: // Կտրուկի կամ Gemma- ի վրա մենք առաջարկում ենք այն փոխել 1 -ով: #սահմանել LED_PIN 6 // Քանի՞ NeoPixel է կցված Arduino- ին: #սահմանեք LED_COUNT 60 // Հայտարարեք մեր NeoPixel շերտի օբյեկտը ՝ Adafruit_NeoPixel ժապավենը (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t գույն = շերտ. Գույն (127, 127, 127); // Սպիտակ գույն, լռելյայն bool- ի համար սեղմված է Corrrectly = false; int ինդեքս = 0; int միջակայք = 300; int արդյունք = 0; անստորագիր երկար նախորդներ = millis (); // Փաստարկ 1 = NeoPixel շերտի պիքսելների քանակը // Փաստարկ 2 = Arduino փին համարը (շատերը վավեր են) // Փաստարկ 3 = Պիքսել տիպի դրոշներ, անհրաժեշտության դեպքում ավելացնել միասին. // NEO_KHZ800 800 ԿՀց բիթստրիմ WS2812 LED) // NEO_KHZ400 400 ԿՀց (դասական «v1» (ոչ v2) FLORA պիքսել, WS2811 վարորդ) // NEO_GRB պիքսելները միացված են GRB բիթստրիմի համար (NeoPixel- ի ապրանքների մեծ մասը) // NEO_RGB պիքսելները միացված են RGB բիթստրիմի համար (v1 FLORA պիքսել), ոչ v2) // NEO_RGBW պիքսելները միացված են RGBW bitstream- ի համար (NeoPixel RGBW արտադրանք) // setup () գործառույթ-գործարկում է մեկ անգամ գործարկման ժամանակ -------------------- ------------ void setup () {// Այս տողերը հատուկ աջակցում են Adafruit Trinket 5V 16 ՄՀց հաճախականությանը: // boardանկացած այլ տախտակ, կարող եք հեռացնել այս հատվածը (բայց դրանից հեռանալը ոչ մի վնաս չի պատճառի). #endif // Trinket- ի հատուկ ծածկագրի ՎԵՐ END: Serial.begin (9600); իսկ (! Սերիա) {; // սպասեք սերիական նավահանգստի միացմանը: Անհրաժեշտ է միայն մայրենի USB պորտի համար} pinMode (A0, INPUT); strip.begin (); // ՍՆԱՆԵԼ NeoPixel շերտի օբյեկտ (ՊԱՐՏԱԴԻՐ) strip.show (); // Անջատեք բոլոր պիքսելները ASAP strip.setBrightness (10); // BRIGHTNESS- ը սահմանել մոտ 1/5 (max = 255)} // loop () գործառույթը-անընդհատ աշխատում է այնքան ժամանակ, քանի դեռ տախտակը միացված է --------------- void loop () {անստորագիր երկար ընթացիկ Ms = millis (); // Ստանալով ընթացիկ ժամանակը int արժեքը = analogRead (A0); // Ընթերցում ընթացիկ լույսի սենսորը, եթե (արժեքը> 900 && արդյունք == 0) {// Եթե սենսորը սեղմված է և դեռ ոչ մի արդյունք չի գրանցվել, միացրեք արդյունքի գրավումը, եթե (ինդեքս = ընդմիջում) {// Ստուգեք, արդյոք ընթացիկ հանգույցը գերազանցում է նախորդ Մ = ընթացիկ միջակայքը; // Նոր միջակայքը սահմանել ընթացիկ ժամանակի + միջակայքի ինդեքս + = 1; // Տեղադրեք led- ները մեկ քայլ առաջ օղակի մեջ, եթե (ինդեքս> 17) {// Միացրեք հանգույցի մշակման ինդեքսի վերջը = 0; եթե (արդյունք == 2) {// resultիշտ արդյունքի միջակայքում = (int) max ((միջակայք * 0.95), 50); // Արագացնել 10%-ով, մինչև 50ms ընդմիջում/ գույն = շերտ. Գույն (0, 255, 0); // Առաջարկները սահմանեք կանաչ} else if (արդյունք == 1) {// Սխալ արդյունքի միջակայքում = 300; // Վերականգնել ինտերվալի գույնը = շերտ. Գույն (255, 0, 0); // Տեղադրեք լուսարձակները կարմիր} else {// Ոչ մի արդյունքի վրա գրավված գույն = շերտ. Գունավոր (255, 0, 0); // Առաջարկները սահմանեք կարմիր} արդյունք = 0; // Վերականգնել արդյունքը հաջորդ հանգույցի համար} theaterChaseOne (գույն, ինդեքս); // Լուսավորեք լուսարձակները ցուցադրման համար: }} // Մեր սեփական որոշ գործառույթներ `անիմացիոն էֆեկտներ ստեղծելու համար ----------------- // Թատրոն-շերտի ոճով հետապնդող լույսեր: Անցեք գույնով (32-բիթանոց արժեք, // a la շերտ. Գույն (r, g, b), ինչպես նշվեց վերևում) և հետաձգման ժամանակ (ms) // շրջանակների միջև: void theaterChaseOne (uint32_t գույն, int ինդեքս) {strip.clear (); strip.setPixelColor (17 - ինդեքս, գույն); // առաջին տող LED լույսեր strip.setPixelColor (18 + ինդեքս, գույն); // երկրորդ շարքի լուսարձակներ strip.setPixelColor (53 - ինդեքս, գույն); // երրորդ շարքի լուսարձակներ strip.show (); }

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