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

Pticպտյալ պատի ժամացույց ՝ 27 քայլ (նկարներով)
Pticպտյալ պատի ժամացույց ՝ 27 քայլ (նկարներով)

Video: Pticպտյալ պատի ժամացույց ՝ 27 քայլ (նկարներով)

Video: Pticպտյալ պատի ժամացույց ՝ 27 քայլ (նկարներով)
Video: Голубая стрела (1958) фильм 2024, Հուլիսի
Anonim
Pticպտյալ պատի ժամացույց
Pticպտյալ պատի ժամացույց

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

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

Այն ունի 96 լուսադիոդներ, որոնք լուսավորում են 52 «թվանշանի» շրջանները: Ի տարբերություն բնօրինակի, այն առանձնանում է շրջանաձև ձևով, որը ներառում է վայրկյանների մատանի ՝ հորիզոնական ձողի դասավորության փոխարեն: Արտաքին գոտին ցույց է տալիս վայրկյաններ միջին կետի հետ միասին, հաջորդ երկու գոտիները ցույց են տալիս րոպեներ, իսկ վերջնական ներքին գոտիները `ժամեր:

Եթե ձեր ձեռքերին մնացորդային նյութեր և լրացուցիչ ժամանակ ունեք, ինչու չօգտագործեք այս ժամանակը ՝ այն ցույց տալու համար:

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

Պատկեր
Պատկեր

Քայլ 1: Ինչպես կարդալ ժամացույցը

Clockամացույցը կարդացվում է ներքին շրջանակներից դեպի արտաքին: Չորս դաշտերի ներքին օղակը նշանակում է հինգ լրիվ ժամ, երկրորդ օղակի կողքին, ինչպես նաև չորս դաշտ, որոնք նշանակում են մեկ լրիվ ժամ յուրաքանչյուրը ՝ ցուցադրելով ժամային արժեքը 24-ժամյա ձևաչափով: Երրորդ օղակը բաղկացած է տասնմեկ դաշտից, որոնք նշանակում են յուրաքանչյուրը հինգ լրիվ րոպե, հաջորդ օղակը ունի ևս չորս դաշտ, որոնք յուրաքանչյուրը նշում են մեկ ամբողջական րոպե: Ի վերջո, 29 դաշտերի արտաքին օղակը նշանակում է զույգ վայրկյան, որի կենտրոնում լույսը թարթում է `նշելով կենտ (լուսավորված) կամ զույգ համար (երբ լուսավորված չէ) վայրկյան:

Պատկեր
Պատկեր

Օրինակ, վերը նշված պատկերն ունի հինգ ժամանոց թվանշաններից 1 -ը, մեկ ժամանոց թվանշաններից 3 -ը, հինգ րոպեանոց թվանշաններից 8 -ը, մեկ րոպեանոց թվանշաններից 4 -ը, և երկրոդ թվանշաններից 23 -ը և միջին երկրորդ նիշը լուսավորված են:

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 8:44:47 = 8:44:47 AM

Պատկեր
Պատկեր

Վերը նշված ժամանակը ՝ 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 3:17:11 PM

Պատկեր
Պատկեր

Վերը նշված ժամանակը ՝ 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 5:18:33 PM

Քայլ 2: Գործիքներ և նյութեր

Գործիքներ և նյութեր
Գործիքներ և նյութեր
Գործիքներ և նյութեր
Գործիքներ և նյութեր
Գործիքներ և նյութեր
Գործիքներ և նյութեր

Էլեկտրոնիկայի նյութեր.

  • Արդուինո Նանո
  • Իրական ժամանակի ժամացույց
  • Հասցեավորվող լուսադիոդներ
  • Power Plug
  • Հոսանքի մալուխ
  • USB հոսանքի վարդակից
  • Լուսից կախված դիմադրություն և հավասարակշռված դիմադրություն (եթե ցանկանում եք, որ այն գիշերը մթնի)
  • Մետաղալար

Փայտամշակման նյութեր.

  • 3/4 դյույմ Նրբատախտակ
  • Նիհար նրբատախտակ
  • Փայտանյութ (ես օգտագործել եմ 2x4, բայց կարծր փայտը նույնպես կաշխատի)
  • Ներկել
  • Ակրիլ 30 x 36 դյույմ թերթ
  • Պատուհանի երանգ (փորձեք աղբյուրը ներսից ներմուծել: Եթե ոչ մեկը մատչելի չէ, այստեղ կարող եք գտնել բավականաչափ մեծ թերթիկ)
  • Պատուհանի երանգի կիրառման հեղուկ (ես լակի շշի մեջ օգտագործել եմ մանկական շամպունի հետ խառնված ջուր)
  • Վինդեքս
  • Մսագործ թուղթ
  • Պտուտակներ
  • Սփրեյ Սոսինձ
  • Սոսինձ
  • Սոսինձ ձողիկ

Գործիքներ:

  • Քանոն
  • Xacto դանակ
  • Կասետային
  • Երկկողմանի ժապավեն
  • Կողմնացույց
  • Circle Cutting Jig
  • Ոլորահատ սղոց
  • Ժապավեն
  • Spindle Sander
  • Palm Sander
  • Սկավառակի սրբիչ
  • Ուղղորդիչի սեղան
  • Ավլ
  • Drill and Drill Bits/Վարորդներ
  • Սեղմակներ
  • Sոդման երկաթ
  • Sոդող
  • Մետաղալարեր

Քայլ 3: Կաղապարների հավաքում

Հավաքեք կաղապարներ
Հավաքեք կաղապարներ
Հավաքեք կաղապարներ
Հավաքեք կաղապարներ

Մեծ ձևանմուշի համար տպեք այն ՝ օգտագործելով Adobe Reader- ի պաստառի կարգավորումը: Կտրեք եզրերը յուրաքանչյուր թղթի և ժապավենի համար միասին: Ուղղահայաց, հորիզոնական և անկյունագծային գծերը կօգնեն ձևանմուշը շարել: Բոլոր էջերում կան փոքր թվեր, որոնք կօգնեն նրանց կազմակերպված պահել, եթե դրանք շարքից դուրս են գալիս:

Բոլոր անհրաժեշտ ձևանմուշներն ու ֆայլերը գտնվում են Քայլ 26 -ում:

Քայլ 4: Կոպիտ կտրված շրջանակներ

Կոպիտ կտրված շրջանակներ
Կոպիտ կտրված շրջանակներ
Կոպիտ կտրված շրջանակներ
Կոպիտ կտրված շրջանակներ

Երկու կաղապարներ դնելով 3/4 դյույմանոց նրբատախտակի թերթիկի վրա, կողմնացույցով գծեք անհրաժեշտից մի փոքր ավելի մեծ շրջանակներ: Օգտագործելով ոլորահատ սղոց, կտրեք կոպիտ ձևը:

Քայլ 5: Կտրեք չափի

Կտրեք չափի
Կտրեք չափի
Կտրեք չափի
Կտրեք չափի

Օգտագործելով շրջանակի կտրող ժիգը ժապավենի վրա, կտրեք շրջանակները մինչև վերջնական չափը:

Քայլ 6: Կաղապարի կիրառում

Կաղապար կիրառել
Կաղապար կիրառել
Կաղապար կիրառել
Կաղապար կիրառել
Կաղապար կիրառել
Կաղապար կիրառել

Օգտագործելով լակի սոսինձ, կիրառեք յուրաքանչյուր ձևանմուշ շրջանագծի վրա: Տեղադրեք մեխը կաղապարի կենտրոնում `այն շրջանագծի վրա կենտրոնացնելու համար:

Քայլ 7: Կաղապար կտրեք

Կաղապար
Կաղապար
Կաղապար
Կաղապար
Կաղապար
Կաղապար

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

Քայլ 8: հղկում

Հղկում
Հղկում
Հղկում
Հղկում
Հղկում
Հղկում

Օգտագործելով հղկաթուղթ, որը կիրառվում է փայտի, լիսեռի և արմավենու վրա, ավազեցրեք և հարթեցրեք ոլորահատ սղոցի թողած կոպիտ կտրվածքը:

Քայլ 9. Գայլիկոն պահում է LED- ների համար

Գայլիկոն Պահում է LED- ների համար
Գայլիկոն Պահում է LED- ների համար
Գայլիկոն պահում է LED- ների համար
Գայլիկոն պահում է LED- ների համար
Գայլիկոն Պահում է LED- ների համար
Գայլիկոն Պահում է LED- ների համար
Գայլիկոն Պահում է LED- ների համար
Գայլիկոն Պահում է LED- ների համար

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

Քայլ 10: Միավորել տախտակները

Միավորել տախտակները
Միավորել տախտակները
Միավորել տախտակները
Միավորել տախտակները
Միավորել տախտակները
Միավորել տախտակները

Փոխեք առջևի և հետևի տախտակները և նշեք շրջանակի մասերը LED տախտակի հետևի մասում: Շրջանակը հետ տեղափոխեք LED տախտակի առջևից և անցքեր բացեք և կտորները միացրեք իրար:

Լրացուցիչ տեղեկությունների համար տես նկարի նշումները:

Քայլ 11: Տեղադրեք LED- ները

Տեղադրեք LED- ները
Տեղադրեք LED- ները
Տեղադրեք LED- ները
Տեղադրեք LED- ները

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

Հետևից LED- ները սկսվում են կենտրոնում, այնուհետև շարժվում են ժամացույցի սլաքի հակառակ ուղղությամբ, ապա մինչև հաջորդ օղակը:

Քայլ 12: Կցել հատված 1

Կցել հատված 1
Կցել հատված 1
Կցել հատված 1
Կցել հատված 1
Կցել հատված 1
Կցել հատված 1

Նրբատախտակի 3/4 ներդիրին կցված «հատված 1» ձևանմուշից կտրեք 9 հատված (գտեք 26 -րդ քայլում): Կցեք LED տախտակին սոսինձով և սեղմիչներով: Եթե անհամբեր եք, կարող եք նաև մեխեր օգտագործել ՝ այն տեղում սեղմելու համար:

Չորանալուց հետո եզրը ողողեք սկավառակի սրիչով:

Քայլ 13: Ներկել

Ներկել
Ներկել
Ներկել
Ներկել
Ներկել
Ներկել
Ներկել
Ներկել

Լակի ներկեք ինչպես LED տախտակը, այնպես էլ շրջանակը: Եթե ես նորից պատրաստեի դա, ես կընտրեի օգտագործել սևի փոխարեն սպիտակ ներկ, քանի որ այն ավելի անդրադարձնող կլիներ ոսպնյակի միջով:

Քայլ 14: հատված 2

Հատված 2
Հատված 2
Հատված 2
Հատված 2
Հատված 2
Հատված 2

Փայտից ամրացված «հատված 2» ձևանմուշից կտրեք 9 հատված, որի հաստությունը 2 3/8 դյույմ է (հայտնաբերված է 26 -րդ քայլում): Ես խանութի շուրջը օգտագործել եմ 2x4 կտոր կտոր: Չոր տեղավորեք հատվածները և ապահովեք, որ այն լավ տեղավորվի ժապավենի սեղմակով: Եթե ամեն ինչ դուրս գա, ծածկեք դրսից ներկարարական ժապավենով, որպեսզի սոսինձը չկպչի և թողեք չորանա առնվազն մեկ ժամ, մինչև հաջորդ քայլին անցնելը:

Քայլ 15: հատված 3

Հատված 3
Հատված 3
Հատված 3
Հատված 3
Հատված 3
Հատված 3

Կտրեք «հատված 3» ձևանմուշից, որը կցված է 3/8 դյույմ հաստ հաստ ջարդոնից (հայտնաբերված է 26 -րդ քայլում): Կպչեք դրանք այնպես, որ 2 -րդ հատվածի կարերը լինեն յուրաքանչյուր 3 -րդ հատվածի մեջտեղում: Սա կամրացնի մատանին:

Քայլ 16: Հարթ մատանի և ներկ

Հարթ մատանի և ներկ
Հարթ մատանի և ներկ
Հարթ մատանի և ներկ
Հարթ մատանի և ներկ

Մեծ օղակի կտրված կտորից պատրաստեցի հատուկ հղկման բլոկ: Մանրացրեք օղակի ներսից և դրսից և լրացրեք ցանկացած ճաքեր, որոնք կարող են առաջանալ սոսնձման գործընթացում:

Հարթ լինելուց հետո կիրառեք մի քանի շերտ սև ներկ և թափանցիկ շերտ:

Քայլ 17: Կտրեք ակրիլը

Կտրեք ակրիլը
Կտրեք ակրիլը
Կտրեք ակրիլը
Կտրեք ակրիլը
Կտրեք ակրիլը
Կտրեք ակրիլը
Կտրեք ակրիլը
Կտրեք ակրիլը

Ակրիլը կտրեք 30 x 30 դյույմ քառակուսի և նշեք կենտրոնը: Կցեք ակրիլը երկկողմանի ժապավենով: Օգտագործելով ողողիչ երթուղիչի երթուղիչ, հեռացրեք ավելորդ ակրիլը

Քայլ 18: Կիրառեք պատուհանի երանգը

Կիրառել պատուհանի երանգը
Կիրառել պատուհանի երանգը
Կիրառել պատուհանի երանգը
Կիրառել պատուհանի երանգը
Կիրառել պատուհանի երանգը
Կիրառել պատուհանի երանգը

Փոշուց ազատ միջավայրում հեռացրեք պաշտպանիչ ֆիլմը ակրիլից: Կիրառեք լակի և հեռացրեք պատյանը պատուհանի երանգից: Կիրառեք պատուհանի երանգը կպչուն կողմը ներքև: Օգտագործելով քամիչ կամ վարկային քարտ, քամեք ամբողջ հեղուկը պատուհանի երանգի տակից: Բոլոր պղպջակների և կնճիռների հեռացումից հետո կտրեք պատուհանի ավելորդ երանգը սուր դանակով:

Քայլ 19. Կցեք ապամոնտաժիչը

Կցել Defuser
Կցել Defuser
Կցել Defuser
Կցել Defuser

Ես օգտագործել եմ մսագործ թղթի մի մեծ կտոր ՝ որպես դեֆուզեր: Թուղթը դրեք հարթ մակերևույթի վրա: Theածկեք շրջանակի դեմքը սոսինձով սոսինձ փայտից: Մինչև սոսինձը չորանալը, ժամացույցի առջևը դեմքով դեպի ներքև դրեք թղթի վրա և կոպիտ կտրեք ավելցուկը: Չորանալուց հետո օգտագործեք սուր դանակ `լվանալու համար:

Քայլ 20: Կիրառեք մեկուսացում

Կիրառել մեկուսացում
Կիրառել մեկուսացում

Ես օգտագործել եմ էլեկտրական ժապավեն ՝ հոսանքի և տվյալների գծերը առանձին պահելու համար:

Քայլ 21. Հավաքվել

Հավաքվել
Հավաքվել
Հավաքվել
Հավաքվել
Հավաքվել
Հավաքվել

Հեռացրեք մյուս պաշտպանիչ շերտը ակրիլից: Տեղադրեք ակրիլը օղակի ներսում, պատուհանի երանգը դեպի վեր: Սահեցրեք ժամացույցի մնացած մասը օղակի մեջ: Օգտագործեք սեղմիչ ՝ թեթև ճնշում գործադրելու համար, երբ օղակի միջոցով անցք է փորված և LED տախտակի մեջ: Սա պետք է մոտավորապես 1 1/8 դյույմ լինի հետևից: Carefulգույշ եղեք, որ LED- ի մեջ չմտնեք: Պտուտակեք կախովի գլխի պտուտակ անցքի մեջ: Կրկնեք ընդհանուր առմամբ ութ պտուտակ `ժամացույցի պարագծով:

Քայլ 22. Կցեք խարիսխի միավորներ

Կցեք խարիսխի միավորներ
Կցեք խարիսխի միավորներ

Կպչեք խարիսխի կետերը ժամացույցի հետևի մասում, որպեսզի հետևի կափարիչը ամրացվի: Սրանք ունեն 3/4 դյույմ հաստություն և մոտ 2 դյույմ երկարություն:

Քայլ 23. Հորատման հզորություն և LDR սենսորային անցքեր

Հորատման հզորություն և LDR սենսորային անցքեր
Հորատման հզորություն և LDR սենսորային անցքեր

Drամացույցի ներքևի հատվածում հոսանքի խրոցակի համար անցք բացեք, իսկ վերևում `անցք լույսից կախված դիմադրության (LDR) տվիչի համար:

Քայլ 24. Տեղադրեք Էլեկտրոնիկայի սեփականատեր

Տեղադրեք Էլեկտրոնիկայի սեփականատեր
Տեղադրեք Էլեկտրոնիկայի սեփականատեր
Տեղադրեք Էլեկտրոնիկայի սեփականատեր
Տեղադրեք Էլեկտրոնիկայի սեփականատեր

Տեղադրեք 3D տպագիր կրիչը RTC- ի և Arduino Nano- ի համար: Միացրեք բոլոր էլեկտրոնիկան, ինչպես ցույց է տրված սխեմատիկայում:

Քայլ 25: Հետ կափարիչ

Հետեւի շապիկ
Հետեւի շապիկ
Հետեւի շապիկ
Հետեւի շապիկ
Հետեւի շապիկ
Հետեւի շապիկ
Հետեւի շապիկ
Հետեւի շապիկ

Կտրեք հետևի կափարիչը բարակ նրբատախտակից, որը փոքր է ժամացույցի արտաքին մասից: Անցքեր խարիսխի կետերում: Գտեք հետևի կենտրոնը և չափեք 8 դյույմ երկու ուղղությամբ ՝ առանցքային անցքերը կտրելու համար (ստանդարտ 16 -ը ԱՄՆ -ում գամասեղների կենտրոններում): Ես փորեցի հիմնական անցքը, որը պարզապես ավելի մեծ է, քան պտուտակների գլուխը, որը ես պատրաստվում եմ օգտագործել, և այն ավելի մեծ չափով տեղադրեցի մեկ ուղղությամբ: Ներկիր սև և ամրացրու ծածկը տեղում:

Քայլ 26: Կոդ և ֆայլեր

Կրկին, ես բավականին նոր եմ օգտվում այստեղ օգտագործվող Arduino գրադարաններից, այնպես որ վստահ եմ, որ դրանք օգտագործելու ավելի լավ եղանակներ կան:

Ես գրել եմ ծածկագիրը, որը հեշտությամբ կթարմացվի `հիմնվելով այն մասին, թե քանի LED- ներ եք օգտագործում, եթե նախագիծը մեծանա կամ նվազվի: Մնում է միայն LED- ի մեկնարկային և ավարտական դիրքերը թարմացնել, ինչպես նաև յուրաքանչյուր լուսանկարի մի քանի LED- ներ:

Ես ավելացրել եմ մի քանի անիմացիա, որոնք խաղում են ինչպես գործարկման ժամանակ, այնպես էլ ժամի ընթացքում: Նրանք sudo պատահական են ՝ հիմնված պատահական թվերի գեներատորի վրա, որը նա ունի ինքնաթիռում:

Դուք կարող եք ժամացույցը սահմանել այնպես, որ այն շրջվի գույներով կամ մնա ստատիկ: Դուք նույնիսկ կարող եք ընդգծել ցուցիչի թվանշանը, որը կօգնի կարդալ ժամանակը, ինչպես ցույց է տրված ներածությունում:

Ազատորեն խմբագրեք և փոխեք ծածկագիրը, ինչպես ցանկանում եք:

#ներառել «RTClib.h»

#ներառել #սահմանել NUM_LEDS 96 #սահմանել DATA_PIN 3 #սահմանել LDR A0 RTC_DS1307 rtc; բուլյան timeChange = կեղծ; բուլյան տպման ժամանակ = կեղծ; // Սահմանել ճշմարիտ, եթե ցանկանում եք արդյունքը տեսնել վահանակում: Օգտակար է վրիպազերծման համար: բուլյան redDown = ճշմարիտ; բուլյան greenDown = կեղծ; բուլյան blueDown = կեղծ; բուլյան ցիկլ = կեղծ; // Սահմանել ճշմարիտ, եթե ցանկանում եք, որ ժամացույցի գույները շրջեն բուլյան ընդգծում = ճշմարիտ; // Սահմանել true ՝ «վերջին նիշը» նշելու համար: // groupամանակի յուրաքանչյուր խմբի սկզբի և վերջի տեղերը const SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // Բազմապատկիչներ, որոնք օգտագործվում են ժամանակի բաժանման համար, ներառյալ MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Փոխեք սա արագացնելու կամ դանդաղեցնելու գործարկման անիմացիայի const int CYCLE_SPEED = 1; // Գույնը փոխելու ցիկլը փոխեք այստեղ (պետք է լինի 1 -ից բարձր) // Փոփոխականները հայտարարեք int lastSecond = 0; int ընթացիկժամ = 0; int currentMinute = 0; int currentSecond = 0; int ժամ 1 = 0; int ժամ 2 = 0; int րոպե 1 = 0; int րոպե 2 = 0; int երկրորդ 1 = 0; int երկրորդ 2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t պայծառ = 255; int numberOfAnimations = 5; int պատահականություն = 0; // Սահմանել Գույներ uint8_t կարմիր = 0; uint8_t կանաչ = 0; uint8_t կապույտ = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Սահմանել leds CRGB leds- ի զանգվածը [NUM_LEDS]; void setup () {Serial.begin (19200); FastLED.addLeds (լուսարձակներ, NUM_LEDS); LEDS.setBrightness (պայծառ); FastLED.clear (); rtc.begin (); // comամանակը սահմանելու համար ստորև չմեկնաբանեք տողը: // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Գործարկման անիմացիա անիմացիոն (պատահականություն); } void loop () {// Ստացեք ժամանակ DateTime now = rtc.now (); currentHour = այժմ. ժամ (); currentMinute = այժմ. րոպե (); currentSecond = now.second (); timeChange = կեղծ; // Օգտագործեք դրանք ՝ առանց RTC- ի ժամանակը ձեռքով սահմանելու համար: Օգտակար է վրիպազերծման համար // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Բոլոր բիթերը զրոյի հասցնել (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Սև; } // Սահմանել ժամը // Սահմանել ժամը 1 ժամ 1 = (ընթացիկ ժամ % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Սա կհաշվի ժամային միավորի ընդհանուր լուսադիոդային լուսարձակները (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {համար (int i = (HOUR_1_START_LOCATION + ժամ 1 - 1); i> = (HOUR_1_START_LOCATION + ժամ 1-LEDS_PER_HOUR_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Սահմանել ժամ 2 ժամ 2 = (ընթացիկ ժամ / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Սա կհաշվի ժամային միավորի ընդհանուր լուսադիոդային լուսարձակները (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {համար (int i = (HOUR_2_START_LOCATION + ժամ 2 - 1); i> = (HOUR_2_START_LOCATION + ժամ 2-LEDS_PER_HOUR_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Սահմանել րոպե // Սահմանել րոպե 1 րոպե 1 = (ընթացիկ րոպե % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Սա կհաշվի ժամացույցի միավորի ընդհանուր լուսադիոդները (int i = MINUTE_1_START_LOCATION; i 0) // && րոպե 1 <24) {համար (int i = (MINUTE_1_START_LOCATION + րոպե 1 - 1); i> = (MINUTE_1_START_LOCATION + րոպե 1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Սահմանել րոպե 2 րոպե 2 = (ընթացիկ րոպե / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Սա կհաշվի ժամանակի միավորի ընդհանուր լուսադիոդային լուսարձակները (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {համար (int i = (MINUTE_2_START_LOCATION + րոպե2 - 1); i> = (MINUTE_2_START_LOCATION + րոպե 2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Սահմանել Երկրորդ եթե (currentSecond! = LastSecond) {timeChange = true; } // Սահմանել վայրկյան 1 վայրկյան 1 = ընթացիկ Երկրորդ երկրորդ MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (կարմիր, կանաչ, կապույտ); } // Սահմանել երկրորդ 2 վայրկյան 2 = currentSecond / MULTIPLIER_TWO; (int i = SECOND_2_START_LOCATION; i 0) // && second2 <29) {for (int i = (SECOND_2_START_LOCATION + second2 - 1); i> = (SECOND_2_START_LOCATION + second2 - 1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} lastSecond = currentSecond; // Հաշվեք ծրագրի ցիկլերը և զանգահարեք setColor գործառույթը `LED- ների գույնը փոխելու համար երբևէ CYCLE_SPEED ցիկլեր: եթե (cycleCount պայծառ) // {// fadeValue = պայծառ; //} // այլապես եթե (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Տպել ընթացիկ ժամանակը վահանակին if (timeChange == true && printTime == true) {printToConsole (); }} // Շարժապատկերման գործառույթն այստեղ ավելացրեք ավելի շատ անիմացիաներ, ինչպես ցանկանում եք void animate (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (կարմիր, կանաչ, կապույտ); FastLED.show (); ուշացում (START_UP_DELAY); } (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Սև; FastLED.show (); ուշացում (START_UP_DELAY); }} else if (ընտրել == 1) {համար (int i = 0; i <250; i ++) {int light = պատահական (95); leds [լույս] = CRGB (կարմիր, կանաչ, կապույտ); FastLED.show (); }} else if (ընտրել == 2) {leds [0] = CRGB (կարմիր, կանաչ, կապույտ); (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION+i] = CRGB (կարմիր, կանաչ, կապույտ); եթե (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_START_LOCATION + i] = CRGB (կարմիր, կանաչ, կապույտ); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_START_LOCATION + i] = CRGB (կարմիր, կանաչ, կապույտ); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (կարմիր, կանաչ, կապույտ); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (կարմիր, կանաչ, կապույտ); } ուշացում (34); FastLED.show (); }} else if (ընտրել == 3) {leds [0] = CRGB (կարմիր, կանաչ, կապույտ); (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_END_LOCATION - i] = CRGB (կարմիր, կանաչ, կապույտ); եթե (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_END_LOCATION - i] = CRGB (կարմիր, կանաչ, կապույտ); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_END_LOCATION - i] = CRGB (կարմիր, կանաչ, կապույտ); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_END_LOCATION - i] = CRGB (կարմիր, կանաչ, կապույտ); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (կարմիր, կանաչ,Կապույտ); } ուշացում (34); FastLED.show (); }} այլ դեպքում (ընտրել == 4) {համար (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Սև; } FastLED.show (); ուշացում (200); (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (կարմիր, կանաչ, կապույտ); } FastLED.show (); ուշացում (200); (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: սև; } FastLED.show (); ուշացում (200); (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (կարմիր, կանաչ, կապույտ); } FastLED.show (); ուշացում (200); (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: սև; } FastLED.show (); ուշացում (200); }} // Գունավոր հեծանվավարման գործառույթ void setColor (բուլյան ցիկլեր) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; կանաչ-; եթե (կանաչ <= 0) {կարմիր = 255; redDown = կեղծ; greenDown = ճշմարիտ; }} else if (greenDown == true && blueDown == false) {green ++; Կապույտ--; եթե (կապույտ <= 0) {կանաչ = 255; greenDown = կեղծ; blueDown = ճշմարիտ; }} else if (blueDown == true && redDown == false) {blue ++; կարմիր-; եթե (կարմիր <= 0) {կապույտ = 255; blueDown = կեղծ; redDown = ճշմարիտ; }}} այլ {red = 0; կանաչ = 0; կապույտ = 255; }} // Print to Serial Monitor գործառույթը void printToConsole () {Serial.print ("Current Time:"); Serial.print (ընթացիկ ժամ); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (ընթացիկ Երկրորդ); Serial.println (""); (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (leds ); if (i % 2 == 0) {Serial.print (""); }} Serial.println (""); (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (leds ); if (((i - HOUR_1_START_LOCATION + 1) % 3) == 0) {Serial.print (""); }} Serial.println (""); (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (leds ); if (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (leds ); if (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print (""); }} Serial.println (""); (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (leds ); Serial.print (""); } Serial.println (""); Serial.println (leds [SECOND_1_LOCATION]); Serial.println (); համար (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

Քայլ 27: Վայելեք:

Պատկեր
Պատկեր

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

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