Мазмұны:

Cryptic қабырға сағаты: 27 қадам (суреттермен)
Cryptic қабырға сағаты: 27 қадам (суреттермен)

Бейне: Cryptic қабырға сағаты: 27 қадам (суреттермен)

Бейне: Cryptic қабырға сағаты: 27 қадам (суреттермен)
Бейне: cryptic clock 2024, Қараша
Anonim
Cryptic қабырға сағаты
Cryptic қабырға сағаты

Уақыттың өтуі - біз басқара алмайтын нәрсе. Егер біз ұйықтап жатсақ, ояу, скучно немесе айналысатын болсақ, дәл солай болады. Ағымдағы оқиғалармен уақыт өте беретінін есте ұстаған жөн. Біз уақыттың өтуін күтіп отырғанда, уақыттың өтуін көруге тартымды ететін нәрсені неге жасамасқа.

Бұл сағатты Германияның Берлин қаласында табылған Mengenlehreuhr шабыттандырды және оны дәл осылай оқуға болады. Түпнұсқа сияқты, ол уақытты жарықтандырылған, түрлі -түсті өрістер арқылы көрсетеді.

Онда 52 «цифрлық» аймақтарды жарықтандыратын 96 жарық диоды бар. Түпнұсқадан айырмашылығы, ол көлденең жолақтың орналасуының орнына секундтық сақинаны қамтитын дөңгелек дизайнмен ерекшеленеді. Сыртқы жолақ орташа нүктемен бірге секундты көрсетеді, келесі екі жолақ минутты көрсетеді, соңғы ішкі жолақтар сағаттарды көрсетеді.

Егер сіздің қолыңызда қоқыс материалдары мен қосымша уақыт болса, неге бұл уақытты оны көрсететін нәрсе жасауға пайдаланбасқа!

Егер мен оны қайтадан жасайтын болсам, бұл жобаға бірнеше өзгерістер енгізер едім. Алдымен мен жақтау мен жарықдиодты тақтаны қара емес ақ түске бояйтын едім. Бұл алдыңғы жақтағы үлкен объектив арқылы жарықты көбірек көрсетеді. Мен сондай -ақ жарықдиодты кірістіруді соңына дейін күтетін едім. Маған тақтаны ертерек аяқтау керек болды, сондықтан ол маған кодты жазуға көмектесе алады. Бұған жол бермеу үшін алдымен оны қалай оқуды үйренейік!

Кескін
Кескін

1 -қадам: Сағатты қалай оқу керек

Сағат ішкі шеңберлерден сыртқыға дейін оқылады. Төрт өрістің ішкі сақинасы әрқайсысы бес толық сағатты білдіреді, екінші сақинамен қатар, төрт өрістің әрқайсысы бір толық сағатты білдіреді, бұл сағат мәнін 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

Кескін
Кескін

Жоғарыда көрсетілген уақыт: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33

2 -қадам: құралдар мен материалдар

Құралдар мен материалдар
Құралдар мен материалдар
Құралдар мен материалдар
Құралдар мен материалдар
Құралдар мен материалдар
Құралдар мен материалдар

Электрондық материалдар:

  • Ардуино Нано
  • Нақты уақыт сағаты
  • Адресативті жарық диодтары
  • Қуат ашасы
  • Қуат кабелі
  • USB қуат қосқышы
  • Жарыққа тәуелді резистор және теңдестірілген резистор (егер сіз оны түнде күңгірттегіңіз келсе)
  • Сым

Ағаш өңдеуге арналған материалдар:

  • 3/4 дюйм фанера
  • Жұқа фанера
  • Ағаш сынықтары (мен 2x4s қолдандым, бірақ қатты ағаш жұмыс істейді)
  • Бояу
  • Акрил 30 х 36 дюймдік парақ (үйді жақсарту дүкенінен табылған)
  • Терезе реңктері (жергілікті көзден алуға тырысыңыз. Егер жоқ болса, мұнда жеткілікті үлкен парақты таба аласыз)
  • Терезе реңктерін қолдануға арналған сұйықтық (мен бүріккіш бөтелкедегі нәресте сусабынымен араласқан суды қолдандым)
  • Windex
  • Қасапшы қағазы
  • Бұрандалар
  • Спрей жабысқақ
  • Желім
  • Желім

Құралдар:

  • Сызғыш
  • Xacto пышағы
  • Таспа
  • Екі жақты таспа
  • Компас
  • Дөңгелек кесу қондырғысы
  • Джигсо
  • Таспа
  • Шпиндель Сандер
  • Пальма Сандер
  • Диск Сандер
  • Маршрутизатор кестесі
  • Авл
  • Бұрғылау және бұрғылау биттері/жүргізушілер
  • Қысқыштар
  • Пісіру темірі
  • Дәнекер
  • Сым тартқыштар

3 -қадам: Үлгілерді жинау

Үлгілерді жинау
Үлгілерді жинау
Үлгілерді жинау
Үлгілерді жинау

Үлкен үлгі үшін Adobe Reader бағдарламасындағы плакат параметрін қолданып басып шығарыңыз. Әр қағаздың жиектерін кесіп, таспамен жабыстырыңыз. Тігінен, көлденеңінен және диагональынан тұратын сызықтар шаблонды қаптауға көмектеседі. Беттердің барлығында олардың саны аз, егер олар істен шықса, оларды ұйымдастыруға көмектеседі.

Барлық үлгілер мен файлдар 26 -қадамда табылған.

4 -қадам: Кесілген шеңберлер

Дөрекі кесілген шеңберлер
Дөрекі кесілген шеңберлер
Дөрекі кесілген шеңберлер
Дөрекі кесілген шеңберлер

Екі үлгіні 3/4 дюймдік фанера парағына қойып, циркульмен қажет болғаннан сәл үлкенірек шеңберлерді салыңыз. Джигсо көмегімен өрескел пішінді кесіңіз.

5 -қадам: Өлшеміне қарай кесіңіз

Өлшемге қарай кесіңіз
Өлшемге қарай кесіңіз
Өлшемге қарай кесіңіз
Өлшемге қарай кесіңіз

Таспадағы шеңберді кесу қондырғысының көмегімен шеңберлерді соңғы өлшемге дейін кесіңіз.

6 -қадам: Үлгіні қолдану

Үлгіні қолдану
Үлгіні қолдану
Үлгіні қолдану
Үлгіні қолдану
Үлгіні қолдану
Үлгіні қолдану

Бүріккіш желімді қолданып, әр үлгіні шеңберге жағыңыз. Шаблонның ортасына тырнақты салыңыз, оны шеңберге ортаға салыңыз.

7 -қадам: шаблонды кесіңіз

Үлгіні кесу
Үлгіні кесу
Үлгіні кесу
Үлгіні кесу
Үлгіні кесу
Үлгіні кесу

Джигсо көмегімен шаблонның әрбір жеке терезесін кесіңіз. Егер сізде CNC қол жетімді болса, бұл қадам әлдеқайда жеңіл болар еді! Мен бұл процеске көмектесу үшін әр терезеде тесік жасадым. Сіз кесуді бастаған кезде шаблон түсе бастайды. Егер бұл орын алса, оны кішкене таспамен бекітіп қоюға болады.

8 -қадам: тегістеу

Тегістеу
Тегістеу
Тегістеу
Тегістеу
Тегістеу
Тегістеу

Таяққа, шпиндельге және пальмаға тегістегішке қолданылатын зімпараны пайдаланып, мозаикадан қалған өрескел кесуді құммен тегістеңіз.

9 -қадам: Светодиодтарға арналған бұрғылау ұстағыштары

Светодиодтарға арналған бұрғылау ұстағыштары
Светодиодтарға арналған бұрғылау ұстағыштары
Светодиодтарға арналған бұрғылау ұстағыштары
Светодиодтарға арналған бұрғылау ұстағыштары
Светодиодтарға арналған бұрғылау ұстағыштары
Светодиодтарға арналған бұрғылау ұстағыштары
Светодиодтарға арналған бұрғылау ұстағыштары
Светодиодтарға арналған бұрғылау ұстағыштары

Әр тесіктің ортасын светодиодтар үшін бұрғылау саңылауларымен белгілеңіз. Мен бұрғылауды дайындамаға перпендикуляр ұстауға көмектесетін нұсқаулық пен артқы жағындағы ағашты үрлемеу үшін тақтаны қолдандым.

10 -қадам: тақталарды біріктіріңіз

Тақталарды біріктіру
Тақталарды біріктіру
Тақталарды біріктіру
Тақталарды біріктіру
Тақталарды біріктіру
Тақталарды біріктіру

Алдыңғы және артқы тақталарды ауыстырыңыз және жарықдиодты тақтаның артқы жағындағы жақтаудың іздері. Жақтауды жарықдиодты тақтаның алдыңғы жағына жылжытыңыз және тесіктерді бұрап, бөліктерді бұраңыз.

Қосымша ақпарат алу үшін сурет жазбаларын қараңыз.

11 -қадам: Жарық диодтарын салыңыз

Светодиодтарды салыңыз
Светодиодтарды салыңыз
Светодиодтарды салыңыз
Светодиодтарды салыңыз

Жарық диодты тақтаның артқы жағына шығарыңыз. Саңылаулар жеткілікті қашықтықта орналасуы керек, сондықтан бір шеңберден екіншісіне ауысудан басқа сымдарды кесудің қажеті жоқ.

Артқы жағынан, жарық диодтары орталықтан басталады, содан кейін сағат тіліне қарсы, содан кейін келесі сақинаға дейін жұмыс істейді.

12 -қадам: 1 -сегментті бекітіңіз

1 -бөлімді тіркеңіз
1 -бөлімді тіркеңіз
1 -бөлімді тіркеңіз
1 -бөлімді тіркеңіз
1 -бөлімді тіркеңіз
1 -бөлімді тіркеңіз

3/4 дюймдік фанерге бекітілген «1 -ші сегмент» үлгісінен 9 сегментті кесіңіз (26 -қадамда табылған). Жарықдиодты тақтаны желіммен және қысқыштармен бекітіңіз. Егер сіз шыдамсыз болсаңыз, оны орнына бекіту үшін шегелерді де қолдануға болады.

Кептіруден кейін шетін тегістегішпен тегістеңіз.

13 -қадам: бояу

Бояу
Бояу
Бояу
Бояу
Бояу
Бояу
Бояу
Бояу

Жарықдиодты тақтаны да, жақтауды да шашыратыңыз. Егер мен мұны қайтадан жасайтын болсам, мен қара түстің орнына ақ бояуды қолданған болар едім, себебі ол объектив арқылы көбірек шағылысады.

14 -қадам: 2 -сегмент

2 -бөлім
2 -бөлім
2 -бөлім
2 -бөлім
2 -бөлім
2 -бөлім

Қалыңдығы 3/8 дюйм болатын ағаштан бекітілген «2 -ші сегмент» үлгісінен 9 сегментті кесіңіз (26 -қадамда табылған). Мен дүкеннің айналасынан 2х4 өлшемді қалдықтарды қолдандым. Сегменттерге құрғақ бекітіңіз және оның таспалы қысқышпен жақсы сәйкес келетініне көз жеткізіңіз. Егер бәрі тексерілсе, желімді жабыспау үшін сыртын бояу таспасымен жабыңыз және келесі қадамға өтпес бұрын кем дегенде бір сағат құрғатыңыз.

15 -қадам: 3 -сегмент

3 -сегмент
3 -сегмент
3 -сегмент
3 -сегмент
3 -сегмент
3 -сегмент

3/8 дюйм қалыңдығындағы ағаш кесілген «3 -ші сегмент» үлгісінен 9 сегментті кесіңіз (26 -қадамда табылған). Оларды 2 -сегменттегі тігістер әр сегменттің ортасында болатындай етіп жабыстырыңыз. Бұл сақинаны нығайтады.

16 -қадам: Тегіс сақина мен бояу

Тегіс сақина мен бояу
Тегіс сақина мен бояу
Тегіс сақина мен бояу
Тегіс сақина мен бояу

Мен үлкен сақинаның кесілген бөлігінен арнайы тегістеу блогын жасадым. Сақинаның іші мен сыртын құммен сүртіп, желімдеу кезінде пайда болуы мүмкін жарықтарды толтырыңыз.

Тегіс болғаннан кейін, қара бояу мен мөлдір қабатты бірнеше қабатқа жағыңыз.

17 -қадам: акрилді кесіңіз

Акрилді кесіңіз
Акрилді кесіңіз
Акрилді кесіңіз
Акрилді кесіңіз
Акрилді кесіңіз
Акрилді кесіңіз
Акрилді кесіңіз
Акрилді кесіңіз

Акрилді өлшемі 30х30 дюйм болатын шаршыға кесіп, ортасын белгілеңіз. Акрилді екі жақты таспамен бекітіңіз. Жууға арналған маршрутизатордың битінің көмегімен артық акрилді алып тастаңыз

18 -қадам: Терезе бояуын қолдану

Терезе бояуын қолдану
Терезе бояуын қолдану
Терезе бояуын қолдану
Терезе бояуын қолдану
Терезе бояуын қолдану
Терезе бояуын қолдану

Шаңсыз ортада акрилден қорғаныш пленканы алыңыз. Бүріккішті жағыңыз және терезенің реңкінен астарды алыңыз. Терезенің жабысқақ жағын төмен қаратып жағыңыз. Сүзгішті немесе несиелік картаны пайдаланып, терезе бояуы астындағы барлық сұйықтықты шығарыңыз. Барлық көпіршіктер мен әжімдер жойылғаннан кейін, өткір пышақпен терезенің артық бояуын кесіңіз.

19 -қадам: Дефузерді бекітіңіз

Defuser бекітіңіз
Defuser бекітіңіз
Defuser бекітіңіз
Defuser бекітіңіз

Мен тазартқыш ретінде үлкен қасап қағазын қолдандым. Қағазды тегіс жерге қойыңыз. Жақтаудың бетін желім таяқшасынан желіммен жабыңыз. Желімді кептірмес бұрын сағаттың алдыңғы жағын қағаз бетіне төмен қаратып жатқызып, артық бөлігін өрескел кесіңіз. Кептіргеннен кейін, ағызу үшін өткір пышақты қолданыңыз.

20 -қадам: оқшаулауды қолданыңыз

Оқшаулауды қолдану
Оқшаулауды қолдану

Қуат пен деректер желісін бөлек ұстау үшін мен электр таспасын қолдандым.

21 -қадам: жинау

Жинау
Жинау
Жинау
Жинау
Жинау
Жинау

Акрилден басқа қорғаныс қабатын алып тастаңыз. Акрилді сақина ішіне терезе бояуы жоғары қаратып қойыңыз. Сағаттың қалған бөлігін сақинаға сырғытыңыз. Жеңіл қысымды қысу үшін қысқышпен сақина арқылы және жарықдиодты тақтаға тесік бұрғылағанда бұраңыз. Бұл артқы жағынан шамамен 1 1/8 дюйм болуы керек. Жарық диодты бұрғылауға абай болыңыз. Ферма басының бұрандасын тесікке бұраңыз. Сағаттың периметрі бойынша барлығы сегіз бұранданы қайталаңыз.

22 -қадам: Бекіту нүктелерін бекітіңіз

Бекіту нүктелерін бекітіңіз
Бекіту нүктелерін бекітіңіз

Желім якорь артқы қақпақты бекіту үшін сағаттың артқы жағын көрсетеді. Бұл қалыңдығы 3/4 дюйм және ұзындығы шамамен 2 дюйм.

23 -қадам: Қуат пен LDR сенсорлық тесіктерін бұрғылау

Бұрғылау қуаты мен LDR сенсорлық тесіктері
Бұрғылау қуаты мен LDR сенсорлық тесіктері

Қуат ашасы үшін сағаттың төменгі жағынан қуат саңылауын, ал жоғарыдан жарыққа тәуелді резистор (LDR) сенсоры үшін тесік жасаңыз.

24 -қадам: Электроника ұстағышын орнатыңыз

Электроника ұстағышын орнатыңыз
Электроника ұстағышын орнатыңыз
Электроника ұстағышын орнатыңыз
Электроника ұстағышын орнатыңыз

RTC және Arduino Nano үшін 3D басып шығарғыш ұстағышты орнатыңыз. Барлық электрониканы схемада көрсетілгендей қосыңыз.

25 -қадам: Артқы қақпақ

Артқы қақпақ
Артқы қақпақ
Артқы қақпақ
Артқы қақпақ
Артқы қақпақ
Артқы қақпақ
Артқы қақпақ
Артқы қақпақ

Артқы қақпақты жіңішке фанерден сағаттың сыртына қарағанда кішірек етіп кесіңіз. Бекіту нүктелерінде тесіктер жасаңыз. Артқы жағының ортасын тауып, ілмектерді кесу үшін екі бағытта 8 дюймді өлшеңіз (АҚШ -тағы штангалар үшін орталықтарда 16 стандарт). Мен негізгі тесікті өзім қолданатын бұрандалардың басынан үлкенірек бұрғыладым және тесікті бір бағытта үлкенірек жасадым. Қара түске бояп, қақпақты орнына бекітіңіз.

26 -қадам: код және файлдар

Тағы да, мен мұнда қолданылатын Arduino кітапханаларының көпшілігін қолдануға өте жаңашылмын, сондықтан оларды қолданудың жақсы жолдары бар екеніне сенімдімін.

Мен кодты қанша жарықдиодты қолданатындығыңызға байланысты оңай жаңартуға жаздым, егер жоба жоғарыласа немесе төмен болса. Сізге тек жарықдиодты бастапқы және соңғы позицияларын, сондай -ақ әр санның қанша светодиодты жаңарту қажет.

Мен іске қосу кезінде де, сағатында да ойнайтын бірнеше анимация қостым. Олар кездейсоқ сандар генераторына негізделген sudo кездейсоқ.

Сіз сағатты түстерді айналдыруға немесе бір күйде тұрақты күйге қоюға болады. Кіріспеде көрсетілгендей уақытты оқуға көмектесу үшін сіз индикатор цифрын бөліп көрсете аласыз.

Кодты қалағаныңызша өңдеңіз және өзгертіңіз.

#«RTClib.h» қосыңыз

#қосу #анықтау NUM_LEDS 96 #анықтау DATA_PIN 3 #анықтау LDR A0 RTC_DS1307 rtc; логикалық timeChange = жалған; логикалық printTime = жалған; // Консольде шығуды көргіңіз келсе, true мәніне орнатыңыз. Түзету үшін пайдалы. логикалық redDown = ақиқат; логикалық greenDown = жалған; логикалық blueDown = жалған; логикалық цикл = жалған; // Егер сіз сағат түстерінің логикалық бөлектеуді айналдырғысы келсе, true параметрін орнатыңыз = true; // «Соңғы санды» бөлектеу үшін true мәнін орнатыңыз. // уақыттың әр тобының басталуы мен аяқталу орны const int 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; // Уақытты бөлу үшін қолданылатын көбейткіштер const MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // CYCLE_SPEED = 1 іске қосу анимациясын жылдамдату немесе баяулату үшін мұны өзгертіңіз; // Түсті өзгерту циклі үшін жылдамдықты осында өзгертіңіз (1 -ден жоғары болуы керек) // Айнымалыларды жариялау int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int hour1 = 0; int hour2 = 0; int минут1 = 0; int минут2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t жарқын = 255; int numberOfAnimations = 5; int кездейсоқтық = 0; // Түстерді орнату uint8_t red = 0; uint8_t жасыл = 0; uint8_t көк = 255; uint8_t бөлектеу_қызыл = 60; uint8_t бөлектеу_green = 60; uint8_t таъкид_көгілдір = 255; // leds CRGB leds жиынын анықтаңыз [NUM_LEDS]; void setup () {Serial.begin (19200); FastLED.addLeds (leds, NUM_LEDS); LEDS.setBrightness (жарық); FastLED.clear (); rtc.begin (); // Уақытты орнату үшін төмендегі жолға түсініктеме бермеңіз. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))))); // Анимациялық анимациялық стартап (кездейсоқтық); } void loop () {// Уақытты алу DateTime now = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = жалған; // Оларды RTC жоқ уақытты қолмен орнату үшін қолданыңыз. Отладка үшін пайдалы // currentHour = 5; // ағымдағы минут = 30; // currentSecond = 30; // Барлық битті нөлге қайтарыңыз (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Қара; } // Сағат орнату // Сағатты орнату 1 сағат1 = (currentHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Бұл уақыт бірлігінің жалпы жарық диодтарын (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {for (int i = (HOUR_1_START_LOCATION + hour1 - 1); i> = (HOUR_1_START_LOCATION + сағат1-LEDS_PER_HOUR_1); i--) {leds = CRGB (ерекшелеу_қызыл, бөлектеу_жасыл, жарық_көк); }} // 2 сағатты орнатыңыз2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Бұл уақыт бірлігінің жалпы жарық диодтарын (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {for (int i = (HOUR_2_START_LOCATION + hour2 - 1); i> = (HOUR_2_START_LOCATION + сағат2-LEDS_PER_HOUR_2); i--) {leds = CRGB (ерекшелеу_қызыл, бөлектеу_жасыл, жарық_көк); }} // Минут орнату // Минут орнату 1 минут1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Бұл уақыт бірлігінің жалпы жарық диодтарын (int i = MINUTE_1_START_LOCATION; i 0) // && минут1 <24) {үшін (int i = (MINUTE_1_START_LOCATION + минут1 - 1); MINUTE_1_START_LOCATION + минут1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (ерекшелеу_қызыл, бөлектеу_жасыл, жарық_көк); }} // 2 минут орнатыңыз2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Бұл уақыт бірлігінің жалпы жарық диодтарын (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {for (int i = (MINUTE_2_START_LOCATION + минут2 - 1); MINUTE_2_START_LOCATION + мину2 }} // Екінші орнатыңыз, егер (currentSecond! = LastSecond) {timeChange = true; } // Екінші секундты орнатыңыз1 секунд1 = ағымдағыСекунд % MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (қызыл, жасыл, көк); } // Екінші 2 секундты орнатыңыз2 = currentSecond / MULTIPLIER_TWO; for (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 (бөлектеу_қызыл, жасыл_бөлектеу, ашық_көк); }} lastSecond = currentSecond; // Бағдарламаның циклдарын санаңыз және CYCLE_SPEED циклінің жарық диодтарының түсін өзгерту үшін setColor функциясын шақырыңыз. if (cycleCount жарқын) // {// fadeValue = жарқын; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Ағымдағы уақытты консольге басып шығарыңыз, егер (timeChange == true && printTime == true) {printToConsole (); }} // Анимация функциясы осында қосымша анимация қосады (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) {for (int i = 0; i <250; i ++) {int light = random (95); leds [жарық] = CRGB (қызыл, жасыл, көк); FastLED.show (); }} else if (таңдау == 2) {leds [0] = CRGB (қызыл, жасыл, көк); for (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 (қызыл, жасыл, көк); for (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 (); }} else if (== 4 таңдаңыз) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); кешіктіру (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (қызыл, жасыл, көк); } FastLED.show (); кешіктіру (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Қара; } FastLED.show (); кешіктіру (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (қызыл, жасыл, көк); } FastLED.show (); кешіктіру (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Қара; } FastLED.show (); кешіктіру (200); }} // Түсті велосипед функциясы void setColor (логикалық циклColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {қызыл ++; жасыл-; егер (жасыл <= 0) {қызыл = 255; redDown = жалған; greenDown = ақиқат; }} else if (greenDown == true && blueDown == false) {жасыл ++; көк-; егер (көк <= 0) {жасыл = 255; greenDown = жалған; blueDown = ақиқат; }} else if (blueDown == true && redDown == false) {көк ++; қызыл-; егер (қызыл <= 0) {көк = 255; blueDown = жалған; redDown = ақиқат; }}} басқа {қызыл = 0; жасыл = 0; көк = 255; }} // Serial Monitor функциясына басып шығару void printToConsole () {Serial.print («Ағымдағы уақыт:»); Serial.print (currentHour); Serial.print («:»); Serial.print (currentMinute); Serial.print («:»); Serial.println (currentSecond); Serial.println («»); for (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (leds ); if (i % 2 == 0) {Serial.print («»); }} Serial.println («»); for (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 («»); for (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (leds ); егер (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print («»); }} Serial.println («»); for (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (leds ); егер (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print («»); }} Serial.println («»); for (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (leds ); Serial.print («»); } Serial.println («»); Serial.println (led [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

27 -қадам: ләззат алыңыз

Кескін
Кескін

Қорытындылай келе, бұл сағатты қарау өте керемет, және сіз оны қолыңызға алғаннан кейін оқуға оңай болады. Егер сіз өзіңіздің сағаттық жобаңызды жасасаңыз, маған хабарлаңыз!

Ұсынылған: