Мазмуну:

Cryptic Wall Clock: 27 кадам (Сүрөттөр менен)
Cryptic Wall Clock: 27 кадам (Сүрөттөр менен)

Video: Cryptic Wall Clock: 27 кадам (Сүрөттөр менен)

Video: Cryptic Wall Clock: 27 кадам (Сүрөттөр менен)
Video: Musical wall clock bell setting// टीवार घड़ी के घंटी कैसे सेट कारे, @Time King 2024, Июль
Anonim
Cryptic Wall Clock
Cryptic Wall Clock

Убакыттын өтүшү биз башкара албаган нерсе. Биз уктап жатсак, ойгонуп, зеригип же кудалашып жүрсөк, ушундай эле ылдамдыкта болот. Учурдагы окуялар менен, убакыт өтө тургандыгын эстен чыгарбоо керек. Биз убакыттын өтүшүн күтүп жатканда, эмне үчүн убакыттын өтүшүн көрүү үчүн жагымдуу кыла турган нерселерди жасабасак болот.

Бул саат Берлинде (Германия) табылган Mengenlehreuhr илхамы менен жазылган жана ошол эле жол менен окулушу мүмкүн. Түпнуска сыяктуу эле, жарыктандырылган, түстүү талаалар аркылуу убакытты билдирет.

Анда 52 "цифралуу" аймактарды жарык кылган 96 LED бар. Түпнускадан айырмаланып, горизонталдык тилкенин ордуна секундалуу шакекти камтыган тегерек дизайнга ээ. Сырткы тилке орто чекит менен бирге секунддарды көрсөтөт, кийинки эки тилке мүнөттөрдү көрсөтөт, акыркы ички тилкелер сааттарды көрсөтөт.

Эгерде колуңузда кандайдыр бир сынык материал жана кошумча убакыт бар болсо, анда эмнеге бул убакытты көрсөтө турган нерсени жасоого болбосун!

Эгерде мен аны кайра жасай турган болсом, бул долбоорго бир нече өзгөртүүлөрдү киргизем. Биринчиден, мен караны эмес, рамканы жана LED тактасын ак түскө боёмокмун. Бул алдыңкы чоң линза аркылуу көбүрөөк жарыкты чагылдырат. Мен ошондой эле LEDлерди киргизүү үчүн аягына чейин күтмөкмүн. Мага тактанын эртерээк бүтүшү керек болчу, ал кодду жазууга жардам берет. Муну менен, адегенде аны окуганды үйрөнөлү!

Сүрөт
Сүрөт

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 -кадам: Куралдар жана материалдар

Куралдар жана материалдар
Куралдар жана материалдар
Куралдар жана материалдар
Куралдар жана материалдар
Куралдар жана материалдар
Куралдар жана материалдар

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

  • Arduino Nano
  • Реалдуу убакыт сааты
  • Даректүү LED
  • Power Plug
  • Power Cable
  • USB Power Plug
  • Жарыкка көз каранды резистор жана салмактуу каршылык
  • Зым

Жыгач материалдары:

  • 3/4 дюйм. Фанера
  • Жука фанера
  • Wood сыныктары (мен 2x4s колдонгом, бирок катуу жыгач да иштейт)
  • Paint
  • Акрил 30 x 36 дюймдук барак (жергиликтүү үй жакшыртуу дүкөнүндө табылган)
  • Терезенин түсү (жергиликтүү булактан алууга аракет кылыңыз. Эгерде эч ким жок болсо, сиз бул жерден чоң көлөмдөгү баракты таба аласыз)
  • Терезенин түсү үчүн суюктук (мен чачыратуучу бөтөлкөгө балдар шампуну аралашкан сууну колдондум)
  • Windex
  • Касап кагазы
  • Бурамалар
  • Спрей Жабыштыргыч
  • Желим
  • Glue Stick

Куралдар:

  • Башкаруучу
  • Xacto Knife
  • Тасма
  • Эки жактуу скотч
  • Компас
  • Circle Cutting Jig
  • Jigsaw
  • Bandsaw
  • Spindle Sander
  • Palm Sander
  • Disc Sander
  • Роутер столу
  • Авл
  • Бургулоо жана бургулоо биттери/айдоочулар
  • Кыскычтар
  • Кандооч
  • Solder
  • Wire Stripers

3 -кадам: шаблондорду чогултуу

Калыптарды чогултуу
Калыптарды чогултуу
Калыптарды чогултуу
Калыптарды чогултуу

Чоң шаблон үчүн, аны Adobe Readerдеги плакат орнотмосу аркылуу басып чыгарыңыз. Ар бир кагаздын четин кыркып, скотч менен жабыштырыңыз. Тик, горизонталдуу жана диагоналдуу сызыктар шаблонду тизүүгө жардам берет. Барактардын бардыгында кичине сандар бар, эгерде алар иштен чыгып калса, аларды уюштурууга жардам берет.

Бардык керектүү калыптар жана файлдар 26 -кадамда табылган.

4 -кадам: Кесилген тегерекчелер

Кесилген тегерекчелер
Кесилген тегерекчелер
Кесилген тегерекчелер
Кесилген тегерекчелер

Эки калыпты 3/4 дюймдук фанеранын баракчасына коюп, компастын жардамы менен бир аз чоңураак чөйрөлөрдү тартыңыз. Джигсо колдонуп, орой формасын кесип салыңыз.

5 -кадам: Өлчөмү боюнча кесип

Өлчөмү боюнча кесүү
Өлчөмү боюнча кесүү
Өлчөмү боюнча кесүү
Өлчөмү боюнча кесүү

Тасмадагы тегерек кесүүчү джигитти колдонуп, тегеректерди акыркы өлчөмүнө чейин кесиңиз.

6 -кадам: Калыпты колдонуу

Калыпты колдонуу
Калыпты колдонуу
Калыпты колдонуу
Калыпты колдонуу
Калыпты колдонуу
Калыпты колдонуу

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

7 -кадам: шаблонду кесүү

Калып
Калып
Калып
Калып
Калып
Калып

Джигсо колдонуп, шаблондун ар бир жеке терезесин кесип алыңыз. Эгерде сизде CNCге кирүү мүмкүнчүлүгү болсо, анда бул кадам бир топ оңой болмок! Мен бул процесске жардам берүү үчүн ар бир терезеде тешик жасадым. Кесүүнү баштаганыңызда шаблон түшө башташы мүмкүн. Эгер андай болсо, аны кичинекей лента менен бекемдеп койсоңуз болот.

8 -кадам: Тегиздөө

Тегиздөө
Тегиздөө
Тегиздөө
Тегиздөө
Тегиздөө
Тегиздөө

Таякка, шпиндельге жана пальмага тегиздөө үчүн колдонулган кум кагазын колдонуп, паззадан калган орой кесилген жерди кум менен тегиздеңиз.

9 -кадам: LED үчүн бургулоо кармагычы

Светодиоддор үчүн бургу
Светодиоддор үчүн бургу
Светодиоддор үчүн бургу
Светодиоддор үчүн бургу
Светодиоддор үчүн бургу
Светодиоддор үчүн бургу
Светодиоддор үчүн бургу
Светодиоддор үчүн бургу

Ар бир тешиктин ортосун свет менен белгилеп, светодиоддор үчүн тазалоочу тешиктерди бургула. Мен бургулоону иштөөчү бөлүгүмө перпендикуляр сактоого жардам берүүчү жана арткы жагындагы жыгачты үйлөп кетпөө үчүн шкафты колдондум.

10 -кадам: такталарды бириктирүү

Комбайндар
Комбайндар
Комбайндар такталары
Комбайндар такталары
Комбайндар такталары
Комбайндар такталары

Алдыңкы жана арткы тактайларды алмаштырыңыз жана LED тактасынын арткы жагындагы кадрлардын издерин алмаштырыңыз. LED тактайынын алдына рамканы артка жылдырып, тешиктерди буруп, бөлүктөрдү бурап салыңыз.

Көбүрөөк маалымат алуу үчүн сүрөт эскертүүлөрүн караңыз.

11 -кадам: LED диоддорун салыңыз

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

Светодиоддорду LED дисктин арткы бетинен өткөрүңүз. Тешиктер жетишерлик аралыкта болушу керек, бир тегеректен экинчисине өтүүдөн башка зымдарды кесүүнүн кажети жок.

Арткы жагынан, LEDлар борбордон башталып, андан кийин сааттын жебеси боюнча, андан кийин кийинки шакекке чейин иштейт.

12 -кадам: 1 -сегментти тиркеңиз

Сегмент 1 тиркөө
Сегмент 1 тиркөө
Сегмент 1 тиркөө
Сегмент 1 тиркөө
Сегмент 1 тиркөө
Сегмент 1 тиркөө

3/4 дюйм фанерага тиркелген "Segment 1" шаблонунан 9 сегментти кесип алыңыз (26 -кадамда табылган). LED тактасына клей жана кыскычтар менен бекиткиле. Эгерде сиз чыдамсыз болсоңуз, анда аны мык менен кадап коюңуз.

Кургаткандан кийин, четин диск тегирмен менен тегиздеп кумдаңыз.

13 -кадам: Бояуу

Paint
Paint
Paint
Paint
Paint
Paint
Paint
Paint

LED тактайын да, алкакты да боёп чачыңыз. Эгерде мен муну кайра жасай турган болсом, анда кара түстүн ордуна ак боёк колдонууну тандамакмын, анткени ал объектив аркылуу көбүрөөк чагылдырылат.

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

Сегмент 2
Сегмент 2
Сегмент 2
Сегмент 2
Сегмент 2
Сегмент 2

Калыңдыгы 2 3/8 дюйм болгон жыгачтан бекитилген "2 -сегмент" шаблонунан 9 сегментти кесип алыңыз (26 -кадамда табылган). Мен дүкөндүн тегерегиндеги 2x4s сыныктарын колдондум. Сегменттерге кургак түрдө жабышыңыз жана анын кайыш кыскыч менен жакшы шайкеш келишин камсыз кылыңыз. Эгерде баары текшерилсе, желимди жабышпоо үчүн сыртын боектор менен жабыңыз жана кийинки кадамга өтүүдөн мурун жок дегенде бир саат кургатыңыз.

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

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

3/8 дюйм калын жыгачтан ("26 -кадамда табылган") тиркелген "3 -сегмент" шаблонунан 9 сегментти кесип алыңыз. Аларды 2 -сегменттин тигиштери ар бир сегменттин ортосунда жайгашкандай кылып чаптаңыз. Бул шакекти бекемдейт.

16 -кадам: Smooth Ring жана Paint

Smooth Ring жана Paint
Smooth Ring жана Paint
Smooth Ring жана Paint
Smooth Ring жана Paint

Мен чоң шакектин кесилген бөлүгүнөн атайын пескоблок жасадым. Рингдин ичин жана сыртын кум менен жабыштырып, жабыштыруу процессинде пайда болгон жаракаларды толтуруңуз.

Жылмакай болгондон кийин, кара боек жана тунук пальто менен бир нече кат колдонуңуз.

17 -кадам: акрил кесип

Акрил кесүү
Акрил кесүү
Акрил кесүү
Акрил кесүү
Акрил кесүү
Акрил кесүү
Акрил кесүү
Акрил кесүү

Акрилди 30 x 30 дюймдук чарчы кылып кесип, борборун белгилеңиз. Акрилди эки тараптуу скотч менен чаптаңыз. Кирүүчү маршрутизатордун битин колдонуп, ашыкча акрилди алып салыңыз

18 -кадам: Терезенин түсүн колдонуу

Терезенин түсүн колдонуу
Терезенин түсүн колдонуу
Терезенин түсүн колдонуу
Терезенин түсүн колдонуу
Терезенин түсүн колдонуу
Терезенин түсүн колдонуу

Чаңсыз чөйрөдө акрилден коргоочу пленканы алып салыңыз. Спрей сүйкөп, терезенин түсүн сүртүңүз. Терезенин түсүн жабышчаак жагын ылдый караңыз. Крышка же кредит картасын колдонуп, терезенин түсүнүн астындагы бардык суюктукту сыгып алыңыз. Бардык көбүкчөлөр жана бырыштар жок болгондон кийин, курч бычак менен терезенин ашыкча түсүн кыркыңыз.

19 -кадам: Defuser тиркөө

Defuser тиркөө
Defuser тиркөө
Defuser тиркөө
Defuser тиркөө

Мен чоң касап кагазын колдонуп, эритүүчү катары иштедим. Кагазды тегиз жерге коюңуз. Клейдин бетин клей таякчасынан клей менен жаап коюңуз. Желим кургай электе, сааттын алды жагын кагазга каратып коюп, ашыкчасын одоно кесип алыңыз. Кургаткандан кийин, чачты кыркуу үчүн курч бычакты колдонуңуз.

20 -кадам: изоляцияны колдонуу

Изоляцияны колдонуу
Изоляцияны колдонуу

Мен электр лентасын электр менен маалымат линияларын өзүнчө кармоо үчүн колдондум.

21 -кадам: чогултуу

Чогулт
Чогулт
Чогулт
Чогулт
Чогулт
Чогулт

Акрилден башка коргоочу катмарды алып салыңыз. Акрилди шакектин ичине терезенин өңү өйдө каратып коюңуз. Сааттын калган бөлүгүн шакекке салыңыз. Жарык басымын колдонуу үчүн кыскычты колдонуп, шакек аркылуу жана LED тактасына тешик бургулаңыз. Бул болжол менен 1 1/8 дюйм болушу керек. Светодиодго бурулбоо үчүн этият болуңуз. Ферма башынын бурамасын тешикке сайыңыз. Сааттын периметри боюнча жалпы сегиз бураманы кайталаңыз.

22 -кадам: Anchor Points тиркөө

Anchor Points тиркөө
Anchor Points тиркөө

Арткы капкакты бекитүү үчүн клей якор сааттын арткы жагын көрсөтөт. Бул 3/4 дюймдук жана узундугу болжол менен 2 дюйм.

23 -кадам: Power жана LDR сенсор тешиктерин бургулаңыз

Drill Power жана LDR сенсор тешиктери
Drill Power жана LDR сенсор тешиктери

Электр розеткасы үчүн сааттын ылдыйында кубат тешиги жана жарыкка көз каранды каршылыктын (LDR) сенсорунун үстүндө тешик жасаңыз.

24 -кадам: Электрондук кармагычты орнотуңуз

Электрондук кармагычты орнотуңуз
Электрондук кармагычты орнотуңуз
Электрондук кармагычты орнотуңуз
Электрондук кармагычты орнотуңуз

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

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

Арткы капкак
Арткы капкак
Арткы капкак
Арткы капкак
Арткы капкак
Арткы капкак
Арткы капкак
Арткы капкак

Жука фанерадан арткы капкакты сааттын сыртына караганда кичине кесиңиз. Бекитүүчү жерлерге тешик бургула. Арткы борборду таап, эки жакка 8 дюймду өлчөп, тешикчелерди кесип салыңыз (АКШдагы шпилькалар үчүн борборлордо 16 стандарт). Мен негизги тешикти колдоно турган бурамалардын башынан чоңураак бургуладым жана тешикти бир багытта чоңураак кылдым. Кара түскө боеп, капкагын ордуна бекиңиз.

26 -кадам: Код жана файлдар

Дагы, мен бул жерде колдонулган Arduino китепканаларынын көбүн колдонууга жаңыдан келдим, ошондуктан аларды колдонуунун жакшы жолдору бар экенине ишенем.

Мен кодду проекттин масштабы жогорулап же азайып кетсе, канча светодиод колдонуп жатканыңыздын негизинде оңой жаңыртуу үчүн жаздым. Сиз эмне кылышыңыз керек - бул LEDдин баштапкы жана акыркы позицияларын, ошондой эле канча LED ар бир цифранын бөлүгүн жаңыртуу.

Мен стартапта жана саатта ойногон бир нече анимацияларды коштум. Алар судодо кокустук сандар генераторунун негизинде бар.

Сиз саатты түстөрдүн айлануусуна же бир жерде статикалык бойдон калууга орното аласыз. Киришүүдө көрсөтүлгөндөй убакытты окуу үчүн индикатордун цифрасын бөлүп көрсөтсөңүз да болот.

Кодду каалаганыңыздай оңдоп, өзгөртүп коюңуз.

#"RTClib.h" кошуу

#кошуу #аныктоо NUM_LEDS 96 #аныктоо DATA_PIN 3 #аныктоо LDR A0 RTC_DS1307 rtc; логикалык timeChange = false; логикалык printTime = false; // Консолдо өндүрүштү көргүңүз келсе, true деп коюңуз. Мүчүлүштүктөрдү оңдоо үчүн пайдалуу. логикалык redDown = true; логикалык greenDown = жалган; логикалык blueDown = жалган; логикалык цикл = жалган; // Сааттын түстөрүнүн логикалык баса = true айлануусун кааласаңыз, true коюңуз; // "Акыркы цифраны" белгилөө үчүн true коюңуз. // Убакыттын ар бир тобунун башталышынын жана аягынын жайгашуусу 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; // Убакыт бөлүү үчүн колдонулган көбөйткүчтөр int 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 minutes1 = 0; int minutes2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t жаркыраган = 255; int numberOfAnimations = 5; int randomness = 0; // Түстөрдү коюу uint8_t red = 0; uint8_t жашыл = 0; uint8_t blue = 255; uint8_t таъкид_кызыл = 60; uint8_t онцолуу_green = 60; uint8_t таъкид_көк = 255; // LEDлар CRGB леддеринин массивин аныктоо [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_))))); // Startup animation animate (randomandom); } void loop () {// Get DateTime now = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = false; // Буларды RTC жок убакытты колго коюу үчүн колдонуңуз. Мүчүлүштүктөрдү оңдоо үчүн пайдалуу // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Бардык биттерди нөлгө коюу (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Black; } // Саатты коюу // Саатты коюу 1 саат1 = (currentHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Бул (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {үчүн (int i = (HOUR_1_START_LOCATION + hour1 - 1)) күйгүзүү үчүн убакыт бирдигинин жалпы светодиоддорун эсептейт; i> = (HOUR_1_START_LOCATION + hour1-LEDS_PER_HOUR_1); i--) {leds = CRGB (онцолуу_кызыл, жарык_жашыл, жарык_көк); }} // Саатты коюу 2 hour2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Бул (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {үчүн (int i = (HOUR_2_START_LOCATION + hour2 - 1)) күйгүзүү үчүн убакыт бирдигинин жалпы диоддорун эсептейт; i> = (HOUR_2_START_LOCATION + hour2-LEDS_PER_HOUR_2); i--) {leds = CRGB (онцолуу_кызыл, жарык_жашыл, ачык_көк); }} // Минут коюу // Мүнөттү коюу 1 мүнөт1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Бул (инт 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 (бөлөк_кызыл, бөлөк_жашыл, ачык_көк); }} // Орнотуу мүнөтү 2 minutes2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Бул (int i = MINUTE_2_START_LOCATION; i 0) // && мүнөт2 <22) {үчүн (int i = (MINUTE_2_START_LOCATION + мүнөт2 - 1)) күйгүзүлө турган убакыт бирдигинин жалпы светодиоддорун эсептейт; i> = (MINUTE_2_START_LOCATION + мүнөт2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (бөлөк_кызыл, жарык_жашыл, жарык_көк); }} // Экинчини коюу, эгерде (currentSecond! = LastSecond) {timeChange = true; } // Орнотуу экинчи 1 секунд1 = currentSecond % MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (кызыл, жашыл, көк); } // Set second 2 second2 = 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; // Программанын циклдерин санап, setColor функциясын чакырып, CYCLE_SPEED циклдеринин светодиоддорунун түсүн өзгөртүүгө аракет кылыңыз. if (cycleCount жаркыраган) // {// fadeValue = жарык; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Учурдагы убакытты консолго басып чыгарыңыз, эгер (timeChange == true && printTime == true) {printToConsole (); }} // Анимация функциясы бул жакка дагы анимацияларды кошот (v = void) {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:: Black; FastLED.show (); кечигүү (START_UP_DELAY); }} else if (select == 1) {for (int i = 0; i <250; i ++) {int light = random (95); leds [жарык] = CRGB (кызыл, жашыл, көк); FastLED.show (); }} else if (select == 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 (кызыл, жашыл, көк); } delay (34); FastLED.show (); }} else if (select == 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 (кызыл, жашыл, көк); } эгер (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (кызыл, жашыл,Көк); } delay (34); FastLED.show (); }} else if (select == 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } 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:: Black; } 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:: Black; } FastLED.show (); кечигүү (200); }} // Түстүү цикл функциясы void setColor (логикалык циклColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; жашыл--; эгер (жашыл <= 0) {кызыл = 255; redDown = жалган; greenDown = чындык; }} else if (greenDown == true && blueDown == false) {green ++; Көк--; эгер (көк <= 0) {жашыл = 255; greenDown = жалган; blueDown = true; }} else if (blueDown == true && redDown == false) {blue ++; Кызыл--; эгер (кызыл <= 0) {көк = 255; blueDown = жалган; redDown = true; }}} башка {red = 0; жашыл = 0; көк = 255; }} // Serial Monitor функциясына басып чыгаруу void printToConsole () {Serial.print ("Учурдагы убакыт:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); 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 ); эгер (((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 (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

27 -кадам: ырахат алыңыз

Сүрөт
Сүрөт

Жыйынтыктасак, бул саатты көрүү эң сонун жана аны колго алгандан кийин, аны окуу оңой. Эгерде сиз өзүңүздүн саатыңыздын долбоорун түзсөңүз, мага кабарлаңыз!

Сунушталууда: