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

Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 քայլ (նկարներով)
Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 քայլ (նկարներով)

Video: Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 քայլ (նկարներով)

Video: Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 քայլ (նկարներով)
Video: Arduino & Neopixel Coke Bottle Party Light 2024, Նոյեմբեր
Anonim
Image
Image

Այսպիսով, իմ որդին ՝ Դոնը, նկատում է շատ զով երեկոյի լույս ՝ պատրաստված հին կոկ շշերից և Glow Sticks- ի բուռն ներսից, և հարցնում է, թե կարո՞ղ ենք այն պատրաստել իր առաջիկա դպրոցական քննությունների համար, որոնք ավարտվել են PartAYYY !!! Ես հաստատ ասում եմ, բայց չէ՞ որ դուք ավելի շուտ կունենաք այդ Adafruit Neopixel մատանիներից, որոնց մասին մենք կարդում էինք… Նա ինձ դատարկ հայացք է տալիս: Քանի որ իրականում նա չգիտի, թե ինչի մասին եմ խոսում, բայց հայրիկը հնարավորություն է գտել խաղալ այն Neopixel մատանիների հետ, որոնց մասին նա կարդում էր, և մենք բոլորս գիտենք, որ հայրերի սերունդ տալու 10 հիմնական պատճառներից մեկը դա ունենալն է: արդարացում խաղալ հիանալի գործիքների հետ, որոնք նրանք ասում են, որ բոլորը իրենց երեխաների համար են:

Սա չափազանց պարզ նախագիծ է, որն իսկապես հիանալի տեսք ունի: Մենք կառուցեցինք մեր հին 3 կոկ շիշից, փայտե ափսեից և խաղահրապարակից ՝ նկուղում պառկած իրերից ՝ մի Arduino- ի հետ (մեր դեպքում Լեոնարդոն, բայց Genuino- ի ցանկացած տախտակ կանի) և երեք Neopixel մատանիով:. Ես պատվիրեցի 9-լուսադիոդային մատանի, բայց նույն գնով ավարտվեց 12-մատանի մատանիով: Ինչը քաղցր էր, բայց նշանակում էր անցք ջրհորների վրա. 12-լուսադիոդային օղակները ունեն 35 մմ լայնություն, ի տարբերություն 23 մմ-ի: Այն, ինչ ձեզ հարկավոր կլինի.

  • Genuino/Arduino տախտակ (Մենք օգտագործում էինք Լեոնարդո, բայց գրեթե ցանկացած տախտակ կանի)
  • 3 Neopixel օղակ (յուրաքանչյուրը 12 LED). Ձեռք բերեք դրանք Adafruit- ից և աջակցեք այդ լավ մարդկանց
  • 1000 μf 6.3 վ կամ ավելի լավ կոնդենսատոր
  • 300-500 օմ դիմադրություն
  • Փայտե ափսե, կամ քառակուսի ջարդոն, կամ որևէ այլ բան, որի մեջ կարող եք տեղադրել նեոպիքսելները և կոկերի շշերը նստել վերևում
  • Ափսեի համար տեղադրման ինչ -որ ձև. Խաղահրապարակում տեղադրված փակագիծը մեզ համար հիանալի աշխատեց
  • 9V պատի գորտնուկ
  • 40 մմ անցք
  • Հեղույսներ, ընկույզներ, լվացարաններ, բացիչներ
  • Պինդ միջուկի մետաղալար
  • Soldոդման երկաթ և զոդ
  • Breadboard
  • Պլաստիկ պատյան Arduino- ի համար: Դուք կարող եք դուրս գալ և գնել իսկապես գեղեցիկ պլաստմասե պատյան, որը պատրաստված է միլիոնավոր նավթից, որը փորված է գետնից ինչ-որ փխրուն միջավայրում և արտադրված է մոլորակի այն կողմում և տարայի մեջ ուղարկվում է ձեզ մոտ գտնվող պահեստ: նավահանգիստները կտրված են կատարյալ դասավորության և այն հասցնում են ձեր դուռը ածխածնի երկօքսիդի մթնոլորտ դուրս շպրտող ֆուրգոնի միջոցով: Կամ դուք կարող եք անել այն, ինչ ես արել եմ և օգտագործել հին թափված պլաստիկ տուփը: այս դեպքում դեղամիջոցների պահարանում դրված է Մադագասկարի ժապավենի օգնության տուփը … և դրա մեջ մի քանի անցք բացեք: Այստեղ ավարտվում է դասախոսությունը: Արի պատրաստենք…

Քայլ 1: Պատրաստեք հիմքը

Պատրաստեք հիմքը
Պատրաստեք հիմքը
Պատրաստեք հիմքը
Պատրաստեք հիմքը

Դուք կարող եք իմպրովիզացնել ձեր հիմքը ձեր նկուղում գտնվող ցանկացած աղբից, կամ նույնիսկ պարզապես օգտագործել փայտե տուփ կամ այն ամենը, ինչը կթաքցնի ձեր էլեկտրոնիկան:

Սկզբում մենք հորատեցինք երեք անցք, որոնք հավասարաչափ տեղակայված էին փայտե ափսեի վրա, այնքան մեծ, որ Neopixel- ի օղակները կարող էին նստել: Պատկերում անցքերը հորեր են, որոնք փորված են իրերով: Ի վերջո, 12-LED օղակների ավելի մեծ չափերի պատճառով մենք ստիպված եղանք անցքեր հորատել ավելի ձանձրալի բիտով: Սա նշանակում էր ամբողջ ափսեի միջով անցնել, և փոխարենը օղակները լավ խցկել իրենց նրբորեն մշակված փոքրիկ 2 մմ խորությամբ փոքր հորերի մեջ ՝ կենտրոնական անցքով ՝ կոկիկ մետաղալարով վազելու համար: ափսեի. Մի դատեք: Իմ դիզայնի մեջ, այնուամենայնիվ, չեք կարող տեսնել ափսեի հատակը: Եվ երբ մտնում է, մութ է: Եվ բացի այդ, ի՞նչ վատ բան կա կպչուն ժապավենի հետ:

Ինձ անհրաժեշտ էր ափսեի և փակագծի միջև հեռավորություն ափսեի ներքևի մասում գտնվող տախտակի և մեկ բաղադրիչի `կոնդենսատորի համար, և մետաղալարերի համար, որոնք պետք է անցնեին հացահատիկից մինչև Arduino, որը նախատեսում էի տեղադրել փակագծի ներսում: Այսպիսով, ես պտուտակների լիսեռների վրա դրեցի մի շարք ինքնաշեն անջատիչներ `բավականաչափ ազատություն տալու համար` մոտ 3 սմ, տախտակի բարձրությունը և մի փոքր, որպեսզի չմղեք էլեկտրագծերը: Ես յուրաքանչյուր անկյունում երկու փայտե խարիսխ պտուտակ էի օգտագործում, քանի որ դրանք ճիշտ բարձրության վրա էին և պառկած էին տղամարդու դարակում … այդ տուփը ՝ չամրացված պտուտակներով, պտուտակներով, մեխերով, ժանգոտ շղթաներով, գուլպաների կցորդիչներով, հին մետաղադրամներով, անսպասելիորեն սուր առարկաներով և ամեն կերպ բիթեր և բոբներ, որոնք կարող են կախարդական կերպով փրկել ձեզ ճանապարհորդություն դեպի սարքավորումների խանութ ՝ առաջարկելով, եթե ոչ ճշգրիտը, ինչ ձեզ հարկավոր է, մի բան, որը լավ կանի:

Երջանիկ դժբախտություն խաղահրապարակի հետ կապված, որը ես գտա նկուղում, այն էր, որ արդեն անցքեր էին անցնում ափսեի միջով: Երկաթ փորելու կարիք չկա: Հիմքը չորս պտուտակավոր անցք ուներ, և մենք չորս հակափորված անցքեր ենք փորել փայտե ափսեի մեջ ՝ համապատասխանեցնելու համար:

Այնուհետև ամբողջը սանրվածքով ներկեցինք գոթական սևով:

Քայլ 2. Նեոպիքսել օղակների պատրաստում

Neopixel օղակների պատրաստում
Neopixel օղակների պատրաստում

Դուք պետք է լարեր կպցրեք ձեր նեոպիքսելային օղակների վրա. Բոլորի համար `Data-In մետաղալար, երկուսի համար` Data-Out մետաղալար, և յուրաքանչյուրի համար հոսանք և հող: Ինչ երկարություն էլ որ գտնեք, որ ձեզ անհրաժեշտ է, ավելացրեք մի քանիսը: Դուք միշտ կարող եք կտրել ավելորդ մետաղալարերը, չեք կարող ձգել այն մեկը, որը չափազանց կարճ է: Եվ տեղյակ եղեք Ադաֆրութի նախազգուշացման մասին.

Այս օղակներին մետաղալարեր կպցնելիս դուք պետք է լրացուցիչ զգոն լինեք բլոդների և կարճ միացումների դեպքում: Բաղադրիչների միջև տարածությունը շատ սուղ է: Հաճախ ամենադյուրինն է մետաղալարերը տեղադրվել առջևից և զոդել հետևի մասում:

Կցանկանայի, որ ես դա կարդայի մինչ ռազմաճակատ ամրանալը: Ինձ հաջողվեց չայրել իմ LED- ներից որևէ մեկը, բայց ես այրեցի մեկի ծայրը այնպես, որ քրտնեցի, մինչև որ միացրեցի այն: Բացի այդ, եթե կարդայի հիանալի ձեռնարկը, ես կկարդայի նաև նախազգուշացումը LED- ի վրա ալիգատոր սեղմակ չդնելու մասին: Թող իմ խորտակված նավերը լինեն ձեր փարոսը:

Neopixel- ը օղակներ է պատրաստում շղթայով, ինչը նշանակում է, որ դուք կարող եք միաժամանակ վերահսկել նրանց բոլոր LED- ները Arduino- ից ՝ մի օղակի OUT- ից մետաղալար միացնելով մյուսի IN- ին: Յուրաքանչյուր օղակ նույնպես կարիք ունի հոսանքի և գրունտի լարերի:

Քայլ 3: Հաղորդալարերի տեղադրում

Հաղորդալարերը
Հաղորդալարերը

Լարեցրեք այն, ինչպես նա նկարագրեց վերևում. Arduino- ի 6-րդ կապը տվյալները տանում է առաջին օղակին, այդ օղակից Data-out- ը անցնում է հաջորդի Data-in- ին, այդից Data-out- ը գնում է դեպի Վերջին զանգի տվյալներ: Ձեզ անհրաժեշտ չէ վերջնական օղակի տվյալների հեռացման լար:

1000 μf հզորությունը անցնում է տախտակի դրական և բացասական ռելսերի միջև: Այս կափարիչը պաշտպանում է օղակները հոսանքի հոսքերից և խորհուրդ է տրվում Adafruit NeoPixel Uberguide- ի լավագույն փորձի բաժնում: Առաջին նեոպիքսելային տվյալների տվյալների ռեզիստորը խորհուրդ է տրվում նաև Adafruit- ի կողմից. Fritzing- ում այն 1K է, սակայն առաջարկվող դիմադրությունը 300-500 ohms է:

Իմ կառուցվածքում ես Neopixels- ից սկսեցի լարերը ափսեի հետևի մասով դեպի կենտրոնում ամրացված տախտակ: Այդ կերպ դուք պետք է միայն երեք երկար մետաղալարեր անցկացնեք բազային միավորի մեջ ՝ ուժ, հող և տվյալներ: Ես այս լարերը դարձրեցի չափազանց երկար. Հիմքում շատ պահեստային տարածք կա, և դա հարմար է դարձնում, որ կարողանամ տախտակը դուրս հանել վերագրանցման համար:

Քայլ 4: Կոդ

"loading =" ծույլ "նշեց, որ իմ որդին ցանկանում էր դրա երաժշտական ռեակտիվ տարբերակ: Մինչև 18-ամյակը տևեց, որպեսզի հասնի դրան, բայց ահա այն:

Լրացուցիչ սարքավորումներ.

1 մեկ բևեռ, կրկնակի նետման անջատիչ 1 ավտոմատ ձեռքբերման հսկիչ (ես օգտագործել եմ AdaFruit- ի MAX9184) 1 1uF-100uF կոնդենսատոր (ցանկացած արժեք)

Խոսափողը, իրոք, պետք է ունենա շահագործման ավտոմատ հսկողություն, որպեսզի այն ճիշտ աշխատի: AGC- ն անընդհատ նմուշառելու է շրջակա միջավայրի աղմուկը և բարձրացնելու և իջեցնելու է այն ֆոնը, որը համարվում է ֆոն, ուստի ձեր լույսը կարձագանքի այդ ֆոնի վրա բռնկումներին: AdaFruit- ի խոսափողը փայլուն է. Դուք կարող եք գնալ լուռ սենյակից, որտեղ մեկ ձայնի ձայնը կհանգեցնի այն լիարժեք երեկույթի ռեժիմի ՝ դեռահասներով լի երաժշտությամբ և հնչող երաժշտությամբ, և այն կբարձրացնի երաժշտության ռիթմը: լավ Այլընտրանքը ՝ Կարգավորելի շահագործման խոսափողը, տախտակի վրա ունի փոքրիկ պոտենցիոմետր, որն աներևակայելիորեն նուրբ է և անհանգիստ: Սարքը անիմաստ դարձնելու համար շրջակա ձայնի մեծ փոփոխություն չի պահանջվում. Լույսերը մշտապես միացված են կամ անընդհատ մութ: AGC- ն աշխատում է մոգության պես:

Ես ուզում էի պտույտի փորձարկման օրինակը կամ երաժշտությունը օգտագործելու տարբերակը, այնպես որ ես միացրեցի անջատիչի կենտրոնական կապը VIN- ի, իսկ մեկը `4 -ի, մյուսը` Լեոնարդոյի 8 -ի կապում: Փորձարկելով այդ կապում բարձր կամ ցածր, մենք կարող ենք իմանալ, թե որ վիճակում է գտնվում անջատիչը և համապատասխանաբար ճյուղավորել ծածկագիրը:

Քայլ 7: Խոսափողի միացում

Խոսափողի միացում
Խոսափողի միացում

Այդ 1-100 μF կոնդենսատորի միջոցով Mic- ի մուտքը փոխանցեք անալոգային կապում 0:

Շնորհակալություն CodeGirlJP- ին իր մանրուք-գույն-ձայնով առօրյայի համար, որը ես հարմարեցրել եմ ստորև.

// Ձայնի ակտիվացված LED- ներ Arduino- ի և NeoPixels- ի հետ

#ներառում

#սահմանեք MIC_PIN A0 // Խոսափողը ամրացված է Լեոնարդոյի a0 կապում

#սահմանեք LED_PIN 6 // NeoPixel LED շղթա, որը ամրացված է 6 -րդ փինին Լեոնարդոյի վրա #սահմանեք N_PIXELS 36 // LED շղթայի պիքսելների թիվը !!!!!! Կարգավորեք ձեր տեղադրման պիքսելների քանակը: Սա ճիշտ է 3 Neopixel օղակների համար !!!!!! #սահմանել N 100 // Ամեն անգամ ընթերցման համար նմուշների քանակը Նմուշները կոչվում են #սահմանել մարել Հետաձգում 5 // յուրաքանչյուր մարումի հետաձգման ժամանակ

// Նախաստորագրեք NeoPixel շերտը վերը նշված արժեքներով.

Adafruit_NeoPixel շերտ = Adafruit_NeoPixel (N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

int նմուշներ [N]; // պահեստ օրինակելի հավաքածուի համար

int periodFactor = 0; // հետևել ms- ի քանակին ՝ ժամանակաշրջանի հաշվարկի համար int t1 = -1; // հայտնաբերվել է թեքության> 100 անգամ: int T; // ժամանակաշրջանների միջև ընկած ժամանակահատվածը ՝ մինչև միլիվայրկյան ներքին լանջով; // երկու հավաքված տվյալների նմուշի կետերի լանջը բայթ ժամանակահատված Փոխված = 0; const int SwitchPinMusic = 4; // Անջատիչի դիրքի երաժշտության զգայունության const int SwitchPinSwirl = 8; // Անջատիչի դիրքի համար ամրացրեք փորձանմուշ (պտույտ) int MusicbuttonState = 0; // Երաժշտության զգայունության անջատված տրամաբանական փոփոխական

// Arduino- ի կարգաբերման եղանակ

void setup () {

strip.begin ();

ledsOff (); ուշացում (500); displayColor (Անիվ (100)); strip.show (); ուշացում (500); oddWheel (Անիվ (100)); strip.show (); ուշացում (500); pinMode (SwitchPinMusic, INPUT); pinMode (SwitchPinSwirl, INPUT); // attachInterrupt (4, Անջատված, ԸՆՏՐՈՄ);

}

// Arduino հանգույցի մեթոդ

void loop () {SwirlbuttonState = digitalRead (SwitchPinSwirl); // HIGH, եթե անցումը դրված է Music sensitive- ի վրա MusicbuttonState = digitalRead (SwitchPinMusic); // HIGH եթե անցումը դրված է Test pattern while (SwirlbuttonState == LOW) {readSamples (); // Գործարկել երաժշտության նմուշառման ռեժիմը SwirlbuttonState = digitalRead (SwitchPinSwirl); // Ստուգեք, արդյոք անջատիչը փոխվե՞լ է} SwirlbuttonState = digitalRead (SwitchPinSwirl); MusicbuttonState = digitalRead (SwitchPinMusic); while (SwirlbuttonState == HIGH) {Պար (); // Գործարկեք պտտվող փորձարկման օրինակը ՝ SwirlbuttonState = digitalRead (SwitchPinSwirl); // Ստուգեք, արդյոք անջատիչը փոխված է

}

}

դատարկ պար () {

while (SwirlbuttonState == HIGH) {colorWipe (strip. Color (255, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (շերտ. Գույն (0, 255, 0), 50); // Green SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (շերտ. Գույն (0, 0, 255), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); //colorWipe(strip. Գույն (0, 0, 0, 255), 50) // Սպիտակ RGBW // Ուղարկեք թատրոնի պիքսելային հետապնդում… SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (շերտ. Գույն (127, 127, 127), 50); // White SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (շերտ. Գույն (127, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (շերտ. Գույն (0, 0, 127), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); ծիածան (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); rainbowCycle (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); theaterChaseRainbow (50); SwirlbuttonState = digitalRead (SwitchPinSwirl); }} // Կարդացեք և մշակեք նմուշի տվյալներ Mic- ից void readSamples () {for (int i = 0; i0) {slope = sample - sample [i -1]; } else {թեքություն = նմուշներ - նմուշներ [N -1]; } // Ստուգեք, արդյոք թեքությունը ավելի մեծ է, քան noiseLevel - ձայնը, որը աղմուկի մակարդակում չէ, հայտնաբերվել է, եթե (abs (թեքություն)> noiseLevel) {if (թեքություն <0) {calcPeriod (i); if (periodChanged == 1) {displayColor (getColor (T)); }}} else {ledsOff (); // theaterChaseRainbow (50); } periodFactor += 1; ուշացում (1); }}

անվավեր հաշվարկել eriամանակաշրջանը (int i)

{եթե (t1 == -1) {// t1 չի սահմանվել t1 = i; } else {// t1- ը սահմանվել է այնպես, որ հաշվարկի ժամանակահատվածը int period = periodFactor*(i - t1); periodChanged = T == period? 0: 1; T = ժամանակաշրջան; //Serial.println(T); // վերականգնել t1- ը նոր i արժեքի t1 = i; periodFactor = 0; }}

uint32_t getColor (int շրջան)

{if (period == -1) return Wheel (0); այլապես, եթե (ժամանակահատված> 400) վերադարձի Անիվ (5); այլապես վերադարձ անիվ (քարտեզ (-1*ժամանակահատված, -400, -1, 50, 255)); }

void fadeOut ()

{for (int i = 0; i <5; i ++) {strip.setBrightness (110 - i*20); strip.show (); // Թարմացնել շերտի հետաձգումը (fadeDelay); periodFactor += fadeDelay; }}

void fadeIn ()

{strip.setBrightness (100); strip.show (); // Update strip // fade color in for (int i = 0; i <5; i ++) {//strip.setBrightness(20*i+30); //strip.show (); // Թարմացնել շերտի հետաձգումը (fadeDelay); periodFactor+= fadeDelay; }}

դատարկ ledsOff ()

{ աներեւութանալ(); համար (int i = 0; i

դատարկ ցուցադրումԳույն (uint32_t գույն)

{համար (int i = 0; i

դատարկ տարօրինակ անիվ (uint32_t գույն)

{for (int j = 0; j <256; j ++) {// պտտել անիվի բոլոր 256 գույները (int q = 0; q <3; q ++) {for (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, անիվ ((i+j) % 255)); // միացնել յուրաքանչյուր երրորդ պիքսել} strip.show ();

ուշացում (1);

համար (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, 0); // անջատել յուրաքանչյուր երրորդ պիքսել}}} fadeIn (); }

// Կետերը մեկը մյուսի հետևից լրացրու գույնով

դատարկ գույն Սրբել (uint32_t c, uint8_t սպասել) {for (uint16_t i = 0; i

դատարկ ծիածան (uint8_t սպասել) {

uint16_t i, j;

համար (j = 0; j <256; j ++) {համար (i = 0; i

// Մի փոքր այլ, սա ծիածանը դարձնում է հավասարաչափ բաշխված ամբողջ երկայնքով

void rainbowCycle (uint8_t սպասել) {uint16_t i, j;

անիվի վրա (j = 0; j <256*5; j ++) {// բոլոր գույների 5 ցիկլ (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, անիվ (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); ուշացում (սպասել); }}

// Թատերական ոճի սողացող լույսեր:

void theaterChase (uint32_t c, uint8_t wait) {for (int j = 0; j <10; j ++) {// անել 10 ցիկլ հետապնդման համար (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // միացնել յուրաքանչյուր երրորդ պիքսել} strip.show ();

ուշացում (սպասել);

(uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // անջատել յուրաքանչյուր երրորդ պիքսել}}}}

// Թատրոնի ոճով սողացող լույսեր ծիածանի էֆեկտով

void theaterChaseRainbow (uint8_t սպասել) {for (int j = 0; j <256; j ++) {// պտտել անիվի բոլոր 256 գույները (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, Անիվ ((i+j) % 255)); // միացնել յուրաքանչյուր երրորդ պիքսել} strip.show ();

ուշացում (սպասել);

(uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // անջատել յուրաքանչյուր երրորդ պիքսել}}}}

// Գույնի արժեք ստանալու համար մուտքագրեք 0 -ից 255 արժեքը:

// Գույները անցումային r - g - b - վերադառնալ r են: uint32_t Անիվ (բայթ WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {վերադարձի շերտ. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; վերադարձի շերտ. Գույն (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; վերադարձի շերտ. Գույն (WheelPos * 3, 255 - WheelPos * 3, 0); }

void Փոխված () {

strip.show (); readSamples (); }

Մինչև մեկնաբանություններում մորթվելը (հիշեք Be Nice- ի քաղաքականությունը !!) Ես հասկացա, որ սա ներբեռնելուց հետո որքան կոպիտ է իմ որոշ ծածկագիրը: Կարիք չկա անընդհատ փորձարկել և՛ Pin 4 -ը, և՛ Pin 8 -ը HIGH- ի համար: Քանի որ անջատիչը Մեկ բևեռ կրկնակի նետում է, մեկի արժեքը կարելի է եզրակացնել մյուսից. Ձեզ հարկավոր է միայն մեկը ստուգել: Այսպիսով, դուք կարող եք անցնել և հեռացնել MusicButtonState- ը կարդալ և գրելուն վերաբերող յուրաքանչյուր հղում և պարզապես ավելի արդյունավետ գործարկել ամբողջը ՝ փորձարկելով SwirlButtonState- ը, եթե հիշողության պակաս ունեք կամ այլ ռեժիմներով եք երկարում: Բայց վերը նշված կոդը աշխատում է:

Եվ եթե ինչ -որ մեկը ցանկանում է շտկել այդ աուդիո առօրյան ոչ միայն աղմուկի մակարդակը, այլև հաճախականությունը, և գրել ինչ -որ սահուն ծածկագիր ՝ լույսի սպեկտրը վեր և վար սահելու համար ՝ ի պատասխան աուդիո սպեկտրի երկայնքով շարժումների, մեկնաբանություններում թողեք հղում: ինչպես դա արեցիր:

Վայելեք:

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