Starry Sky Led փողկապ. 9 քայլ (նկարներով)
Starry Sky Led փողկապ. 9 քայլ (նկարներով)
Anonim
Image
Image
Starry Sky Led փողկապ
Starry Sky Led փողկապ
Starry Sky Led փողկապ
Starry Sky Led փողկապ

Քիչ առաջ դոլարի խանութում ես գտա մանկական մանրաթելային խաղալիքներով խաղալիք և սկսեցի մտածել, թե ինչ կարող եմ անել դրա հետ:

Իմ խենթ գաղափարներից մեկը աստղալից երկնքի ազդեցությամբ փողկապ սարքելն էր:

Ես դեռ ունեի arduino pro mini- ի, adafruit տախտակներ և մարտկոցներ, որոնք հավանաբար կհամապատասխանեին այս նախագծին:

Այսպիսով, հենց որ ես գտա գեղեցիկ լայն փողկապ իմ քաղաքի գրավատանը և գտա մի տուփ, որը կարող էր հարմարվել տեխնիկային, ես որոշեցի գնալ դրա համար և փորձել կառուցել այն:

Այս հրահանգը ցույց է տալիս, թե ինչպես եմ դա պատրաստել:

Այն աշխատում է arduino pro mini, adafruit powerboost 500 լիցքավորիչով, emmerich icr 18650nh-sp և 5 սպիտակ LED- ներով: Կոդը LED- ի փոփոխության պայծառությունը դարձնում է պատահական: (Տեսանյութի առաջին 40 վայրկյանը 3x արագություն է)

Քայլ 1: Սխեմատիկա և սարքավորում

Սխեմատիկա և սարքավորում
Սխեմատիկա և սարքավորում
Սխեմատիկա և սարքավորում
Սխեմատիկա և սարքավորում

Ես օգտագործում եմ հետևյալ սարքավորումները.

- PCB սառցե սպիտակ LED- ներով և 220 Օմ դիմադրիչներով:

-Arduino pro mini (ես օգտագործել եմ թակոց)

-Adafruit Powerboost 500 լիցքավորիչ

-Emmerich Li-ion accu ICR-18650NH-SP

- օպտիկական մանրաթելեր (տարբեր չափերի)

Քայլ 2. Ստեղծեք LED- ների տեղադրման PCB- ն

Ստեղծելով PCB հյուրընկալող LED- ները
Ստեղծելով PCB հյուրընկալող LED- ները
Ստեղծելով PCB հյուրընկալող LED- ները
Ստեղծելով PCB հյուրընկալող LED- ները
Ստեղծելով PCB հյուրընկալող LED- ները
Ստեղծելով PCB հյուրընկալող LED- ները

Ես կտրեցի մի կտոր PCB- ից ՝ LED- ները պահելու համար և օգտագործեցի LED կապումներն այն հիմնական PCB- ին կպցնելու համար:

Միացրեք բոլոր կաթոդները (-) GND- ին և օգտագործեց կապումներից կեսը ՝ այն կպցնելով հիմնական PCB- ին:

Բոլոր անոդները (+) միացրեց դիմադրողներին, իսկ մալուխներով ՝ արդուինոյին:

LED- ները յուրաքանչյուրը պետք է միացված լինի հետևյալ PWM նավահանգիստներից մեկին ՝ 3, 5, 6, 9, 10, 11

Հիմարն ինձ շատ սխալներ թույլ տվեց այս նախագծի հետ և մոռացավ ստուգել ճիշտ PWM նավահանգիստները, ուստի ստիպված եղա մի քանի անգամ վերավաճառել: Փորձարկված է բարձր/ցածր, այնպես որ ես դա հետագայում նկատեցի միայն:

Ես սկսեցի 7 LED- ով, բայց այնտեղ կար ընդամենը 6 PWM նավահանգիստ, և LED- ներից մեկի վերավաճառվածներից մեկը մահացավ: Ես պարզապես պահեցի 5 աշխատանքային LED- ները և չեմ օգտագործում 6 -րդը:

Քայլ 3: Տուփ պատրաստելը

Տուփ պատրաստելը
Տուփ պատրաստելը
Տուփ պատրաստելը
Տուփ պատրաստելը
Տուփ պատրաստելը
Տուփ պատրաստելը
Տուփ պատրաստելը
Տուփ պատրաստելը

Ես օգտագործեցի Bosch GRO- ն (ինչպես Dremel- ը) և գայլիկոն, որպեսզի կտրեմ մարտկոցի ձևը, կոճակը, միկրո USB պորտը, Arduino- ի վերնագրերը և օպտիկական մանրաթելերը: (օգտագործեք փոշու դիմակ)

Մարտկոցը սոսնձեց պատյանին 2 ժապավենով:

Օգտագործված պտուտակներ ՝ Adafruit տախտակը և PCB- ն ամրացնելու համար:

Բացումից և փակվելուց շփումը վնասեց որոշ լարեր: Ես ստիպված էի դրանք վերավաճառել և սոսինձ օգտագործել, որպեսզի դա չկրկնվի:

Քայլ 4: Վզկապի պատրաստում

Փողկապի պատրաստում
Փողկապի պատրաստում
Փողկապի պատրաստում
Փողկապի պատրաստում
Փողկապի պատրաստում
Փողկապի պատրաստում

Հեռացրեց կարի փողկապի ներքևի մասից կարվածը `ռետինե թերթին տեղավորելու համար:

Սարքաշարը թաքցնելու և անհրաժեշտության դեպքում դեռ հասանելի լինելու համար որոշեցի օգտագործել կայծակաճարմանդ:

Ես կարի մեքենայով լավ չեմ, այնպես որ իմ անուշ մայրիկը կայծակաճարմանդ դրեց փողկապի հետևի մասում:

Դա անելուց հետո ես ռետինե թերթիկը սոսնձեցի փողկապի մեջ: Ես վախենում էի չափազանց շատ սոսինձ օգտագործելուց, որը կհագեցներ գործվածքը և տեսանելի կլիներ առջևից, ուստի փորձեցի այն հավասարեցնել և շատ չօգտագործել: Ընդհանուր առմամբ, այն լավ է թվում, բայց մի քանի վայրերում ես շատ կամ շատ քիչ սոսինձ նկատեցի, որովհետև այն ներթափանցեց կտորի միջով կամ շատ լավ չկպչեց գործվածքներին: Բարեբախտաբար, դա միայն հազիվ տեսանելի է մոտ տարածությունից ՝ պայծառ լույսի ներքո:

Տուփն ու փողկապն արդեն պատրաստ են: Timeամանակն է սոսնձել մանրաթելային օպտիկամանրաթելերը:

Քայլ 5: Fiberoptics- ի սոսնձում

Սոսինձ Fiberoptics
Սոսինձ Fiberoptics
Սոսինձ Fiberoptics
Սոսինձ Fiberoptics
Սոսինձ Fiberoptics
Սոսինձ Fiberoptics
Սոսինձ Fiberoptics
Սոսինձ Fiberoptics

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

Համոզվեք, որ օգտագործեք թափանցիկ սոսինձ: Իմ օգտագործածը չորացավ շատ դանդաղ, իսկ արագ չորացող սոսինձը, որը փորձեցի առաջին LED- ով, սպիտակվեց ՝ առաջին LED- ի որոշ մանրաթելեր ավելի քիչ պայծառ դարձնելով:

Ես սոսնձեցի սև փոքրիկ ռետինե սավաններ, որպեսզի կանխվի լույսի արտահոսքը վերևից և առանձնացնեմ LED- ները:

Սավաններից մեկը թույլ չտվեց, որ գործը փակվի, այնպես որ ես ավելացրեցի ռետինե ժապավենը `ծածկը փակ պահելու համար:

Քայլ 6: Fiberoptics- ի կապի միջոցով դնելը

Fiberoptics- ի կապի միջոցով դնելը
Fiberoptics- ի կապի միջոցով դնելը
Fiberoptics- ի կապի միջոցով դնելը
Fiberoptics- ի կապի միջոցով դնելը
Fiberoptics- ի կապի միջոցով դնելը
Fiberoptics- ի կապի միջոցով դնելը

Սկսած ներքևից, ես ասեղով սեղմեցի անցքերն ու մանրաթելերը հատ -հատ դրեցի: Յուրաքանչյուր LED- ի մանրաթելերը պատահականորեն տարածվում են փողկապի վրայով:

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

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

Քայլ 7: Fiberoptics- ը սոսնձել փողկապին

Fiberoptics- ի սոսնձում փողկապին
Fiberoptics- ի սոսնձում փողկապին
Fiberoptics- ի սոսնձում փողկապին
Fiberoptics- ի սոսնձում փողկապին
Fiberoptics- ի սոսնձում փողկապին
Fiberoptics- ի սոսնձում փողկապին
Fiberoptics- ի սոսնձում փողկապին
Fiberoptics- ի սոսնձում փողկապին

Ես օպտիկամանրաթելային բոլոր լարերը սոսնձեցի ռետինե թերթի վրա, որպեսզի լարերը չհանվեն ռետինե թերթից և փողկապը հարթ լինի:

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

Սոսինձը չորացնելուց հետո ես կտրեցի առջևի լարերը և մի փոքր կտրեցի ռետինե թերթից ամենաբարձր մետաղալարից վերև, որովհետև փողկապը մի փոքր երկար էր:

Սպիտակ վերնաշապիկով լուսանկարներն արված են մինչ կաուչուկի վերջին կտորը կտրելը:

Քայլ 8: Կոդ

Ստորև բերված փողկապի համար գրված կոդը:

Բոլոր LED- ները ունեն «միջին» (իրականում ոչ թե միջին, այլ միջին պայծառություն):

Հենց որ հասնի այդ միջինին, 3/4 շանսով կորոշի ավելի ցածր պայծառության գնալ: Այն նաև պատահականորեն սահմանում է նոր նվազագույն պայծառություն, առավելագույն պայծառություն, նվազագույն և առավելագույն պայծառության սպասման ժամանակ և այն արագությունը, որը մեծանում կամ նվազում է յուրաքանչյուր փուլում (1-255) 5 նախադրված արժեքներից: Այնուհետև այն կկատարի ցիկլ, մինչև նորից հասնի միջինին: Միայն 2 LED- ը կարող են միաժամանակ լինել բարձր ցիկլում:

Յուրաքանչյուր վիճակ ներկայացված է ամբողջ արժեքով (1-7) `որոշելով, թե արդյոք այն կգնա միջինից ցածր, ցածր միջին, ցածր սպասման, թարմացման և այլն:

Arduino- ում կոդը վերբեռնելու մասին տեղեկությունների համար այցելեք www.arduino.cc

/ * Starry Sky Tie * * Սա սցենար է, որը պատահականորեն մարում է 5 լուսադիոդային լուսարձակներ միջինից մինչև ցածր * կամ ավելի բարձր պայծառություն ՝ պատահական ավելի ցածր, ավելի բարձր և ժամանակային պարամետրերով * ՝ աստղալից երկնքի տեսք ունենալու համար, երբ օգտագործվում է մանրաթելային ապարատների հետ: * Այս դեպքում դրանք կիրականացվեն ոչ -ոքի: * * Վեր/վար շանս = 1/4 վեր, 3/4 ներքև, առավելագույնը 2 * միաժամանակ բարձրանում է առավելագույնի: * * Միջինը մնում է նույնը: * Նվազագույն, առավելագույն և ժամկետների ընտրանքները փոխվում են պատահականորեն * 5 տարբերակից, ամեն անգամ, երբ LED- ը նորից հասնում է միջինին: * * Ստեղծվել է Բիլի Յասպերսի կողմից, 2019 թ. Մայիս: *

/ Հայտարարել կապում

int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;

// Timeամանակի փոփոխականներ

անստորագիր երկար ընթացիկ ժամանակ; անստորագիր երկար սպասման ժամանակ [5]; unsigned long lastRound;

// LED փոփոխականներ

int brightMin [5] = {10, 10, 10, 10, 10}; // Նվազագույն պայծառություն int brightAvg [5] = {200, 200, 200, 200, 200}; // Միջին պայծառություն int brightMax [5] = {240, 240, 240, 240, 240}; // Առավելագույն պայծառություն int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Սպասման ժամանակը int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Սպասման ժամանակը int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Սպասման ժամանակը int increment [5] = {2, 5, 4, 5, 2}; // պայծառության բարձրացում int currentBright [5] = {200, 230, 210, 210, 235}; // Ընթացիկ պայծառություն

// LED փոփոխականների հնարավորություններ

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Պայծառության նվազագույն հնարավորություններ int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Պայծառության առավելագույն հնարավորություններ int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // brightածր պայծառության հնարավորությունների սպասման ժամանակը int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Բարձր պայծառության հնարավորությունների սպասման ժամանակը int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Միջին պայծառության հնարավորությունների սպասման ժամանակը int incrementPos [5] = {2, 4, 5, 3, 1}; // պայծառության հնարավորությունների ավելացում

// փոփոխականներ

bool startup = true; // Արդյո՞ք անհրաժեշտ է սկսել մեկնարկի կարգավորումները:

// Ուղղորդված փոփոխականներ

/* 0 = Սպասում է միջինը 1 = միջինից իջնում է 2 = սպասում է ցածր 3 = իջնում է միջինը 4 = գնում է միջինը առավելագույնը 5 = սպասում է առավելագույնը 6 = բարձրանում է միջինը 7 = փոփոխում է փոփոխականները*/ int կարգավիճակը LED [5] = {0, 0, 0, 0, 0}; int գումարը HighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {կեղծ, կեղծ, կեղծ, կեղծ, կեղծ}; // Արդյո՞ք Led- ը սպասում է:

// Պատահական փոփոխականներ

երկար պատահական Թիվ; // Երկար պատահական համարը պահելու համար երկար randomNumberTwo; // Երկար ՝ երկրորդ պատահական թիվը պահելու համար

// հաշվիչներ

int i = 0; // Հաշվիչ հիմնական հանգույցի համար

void setup () {

Serial.begin (115200); // Սկսել սերիական randomSeed (analogRead (A0)); // Սահմանել պատահական սերմ

// Արդյունքների հայտարարում

pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }

// Տվյալներ գրել LED- ների վրա

void writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, ընթացիկԲայլ [1]); analogWrite (LED03, ընթացիկԲայլ [2]); analogWrite (LED04, ընթացիկԲայլ [3]); analogWrite (LED05, ընթացիկԲայլ [4]); }

// Հիմնական հանգույց

void loop () {if (գործարկում) {// Գործարկման կարգավորումներ lastRound = millis (); // Սահմանել lastRound- ը boot writeToLED- ի համար (); // Գրեք մեկնարկի տվյալները LED startup = false; // Անջատել գործարկումը} currentTime = millis (); // Սահմանել ընթացիկ ժամանակը

if (currentTime - lastRound> = refreshRate) {

համար (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Թարմացում Led randomNumber = պատահական (5); brightMin = brightMinPos [պատահական թիվ]; // Սահմանել պատահական արժեք նվազագույն պայծառության randomNumber = պատահական (5); brightMax = brightMaxPos [պատահական համար]; // Սահմանել պատահական արժեք առավելագույն պայծառության randomNumber = պատահական (5); timeWaitLow = timeLowPos [պատահական թիվ]; // Սահմանել պատահական արժեք ցածր սպասման ժամանակ randomNumber = պատահական (5); timeWaitMax = timeHighPos [պատահական Թիվ]; // Սահմանել պատահական արժեք բարձր սպասման ժամանակ randomNumber = պատահական (5); timeWaitAvg = timeAvgPos [պատահական Թիվ]; // Սահմանել պատահական արժեք միջին սպասման ժամանակ randomNumber = պատահական (5); ավելացում = աճող դրական [պատահական թիվ]; // Սահմանել պատահական արժեք ավելացման արժեքի համար randomNumber = պատահական (2); // Սահմանել պատահական արժեք ուղղության randomNumberTwo = պատահական (2); // Եթե պատահական արժեք սահմանեք, եթե (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Եթե ամենացածր կետում. Գնալ դեպի սպասման միջին} այլ {currentBright = currentBright +հավելում ; // Այլ ՝ ավելի բարձր պայծառություն}} այլ դեպքում (statusLED == 2) {// -2- Սպասում է ցածր, եթե (! StatusWaiting ) {// Եթե չես սպասում.; // Սահմանել սպասման ժամանակը statusWaiting = true; // Սկսեք սպասել} այլ դեպքում, եթե (statusWaiting && currentTime-սպասումTime > = timeWaitLow ) {// Եթե սպասումը ԵՎ ժամանակն անցել է. StatusWaitAvg անցել է. // Դադարեցնել սպասման կարգավիճակը LED = 3; // Սահմանել statusLed to Waiting for Update}} այլ դեպքում (statusLED == 1) {// -1- Միջին մակարդակի իջեցում ցածր (currentBright <= brightMin ) {statusLED = 2; // Եթե ամենացածր կետում. Գնալ դեպի Սպասող ցածր} else {currentBright = currentBright -inkrement ; // Ուրիշ. Ստորին Պայծառություն}} այլ դեպքում (statusLED == 6) {// -6- Առավելագույնը դեպի միջին, եթե (currentBright = timeWaitMax ) {// Եթե սպասումը ԵՎ ժամանակըWaitAvg անցել է: statusWaiting = false; // Դադարեցնել սպասման կարգավիճակը LED = 6; // Սահմանել statusLed to Waiting for update}} այլ դեպքում, եթե (statusLED == 4) {// -4- Միջին անցնել առավելագույնը եթե (currentBright > = brightMax ) {statusLED = 5; // Եթե ամենացածր կետում. Գնալ դեպի Սպասում բարձր} else {currentBright = currentBright +հավելում ; // Այլ ՝ ավելի բարձր պայծառություն}} այլ դեպքում (statusLED == 0) {// -0- Միջին սպասում, եթե (! StatusWaiting ) {// Եթե չես սպասում ՝ սպասումTime = millis (); // Սահմանել սպասման ժամանակը statusWaiting = true; // Սկսեք սպասել} այլ դեպքում, եթե (statusWaiting && currentTime-waitTime > = timeWaitAvg ) {// Եթե սպասումը ԵՎ ժամանակը անցել է. StatusWaitAvg = false; // Դադարեցնել սպասման կարգավիճակը LED = 7; // Սահմանել statusLed- ը Սպասում է թարմացման}}} i = 0; lastRound = millis (); // Սահմանել, երբ վերջին տուրն ավարտվի: writeToLED (); // Գրեք բոլոր տվյալները LED- ների վրա}}

Քայլ 9: Վերջնական արտադրանք

Image
Image
Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք

Կարծում եմ, որ դա լավ ստացվեց: Փողկապը չափազանց հաստ, թունդ, երկար կամ ծանր չէ, և աստղային էֆեկտը զարմանալի տեսք ունի:

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