Mundarija:

Kriptik devor soati: 27 qadam (rasmlar bilan)
Kriptik devor soati: 27 qadam (rasmlar bilan)

Video: Kriptik devor soati: 27 qadam (rasmlar bilan)

Video: Kriptik devor soati: 27 qadam (rasmlar bilan)
Video: Открытие колоды командира маэстрос резня, улицы новой Капенны 2024, Iyul
Anonim
Kriptik devor soati
Kriptik devor soati

Vaqt o'tishi biz nazorat qila olmaydigan narsadir. Agar biz uxlayotgan, uyg'ongan, zerikkan yoki mashg'ul bo'lganimizda ham xuddi shunday tezlikda sodir bo'ladi. Hozirgi voqealar bilan vaqt o'tishini unutmaslik kerak. Vaqt o'tishini kutib turibmiz, nima uchun vaqt o'tishini tomosha qilishni yanada jozibador qilmasligimiz kerak.

Bu soat Germaniyaning Berlin shahrida topilgan Mengenlehreuhrdan ilhomlangan va xuddi shu tarzda o'qilishi mumkin. Xuddi asl nusxada bo'lgani kabi, vaqtni yoritilgan, rangli maydonlar orqali ko'rsatadi.

U 52 ta "raqamli" hududlarni yoritadigan 96 ta LEDga ega. Asl nusxadan farqli o'laroq, u gorizontal chiziqlar o'rniga sekundli halqani o'z ichiga olgan dumaloq dizaynga ega. Tashqi tasma o'rta nuqta bilan birgalikda soniyalarni bildiradi, keyingi ikkita tasma daqiqalarni, oxirgi ichki chiziqlar soatni ko'rsatadi.

Agar sizning qo'lingizda bir nechta qoldiq materiallar va qo'shimcha vaqt bo'lsa, nega bu vaqtni uni ko'rsatadigan biror narsa qilish uchun ishlatmasligingiz kerak!

Agar men bu loyihani qaytadan qilsam, bir nechta o'zgartirishlar kiritaman. Birinchidan, men ramka va LED taxtani qora o'rniga oq rangga bo'yagan bo'lardim. Bu old tomondan katta optikasi orqali ko'proq yorug'likni aks ettiradi. Men ham LEDlarni kiritish uchun oxirigacha kutardim. Menga taxtani oldinroq tugatish kerak edi, bu menga kod yozishda yordam berishi mumkin edi. Shunday qilib, keling, avval uni o'qishni o'rganamiz!

Rasm
Rasm

1 -qadam: Soatni qanday o'qish kerak

Soat ichki doiralardan tashqi tomonga o'qiladi. To'rtta maydonning ichki halqasi har biri beshta to'liq soatni, ikkinchi halqadan tashqari, to'rtta maydonni ham o'z ichiga oladi, bu har birida to'liq soatni bildiradi va soat qiymatini 24 soatlik formatda ko'rsatadi. Uchinchi halqa o'n bitta maydondan iborat bo'lib, ularning har biri beshta to'liq daqiqani bildiradi, keyingi halqada yana to'rtta maydon bor, ularning har biri bitta to'liq daqiqani belgilaydi. Nihoyat, 29 ta maydonning tashqi halqasi juft soniyalarni bildiradi, markazda yorug'lik yonib turganda, toq (yonganda) yoki juft sonli (o'chmagan) sonlarni bildiradi.

Rasm
Rasm

Masalan, yuqoridagi rasmda besh soatlik raqamlarning 1 tasi, bir soatlik raqamlarning 3 tasi, besh daqiqali raqamlarning 8 tasi, bir daqiqali raqamlarning 4 tasi va ikkita ikkinchi raqamning 23 tasi va ikkinchi ikkinchi raqam yonadi.

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

Rasm
Rasm

Yuqorida ko'rsatilgan vaqt: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 3:17:11

Rasm
Rasm

Yuqorida ko'rsatilgan vaqt: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33

2 -qadam: asboblar va materiallar

Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar

Elektron materiallar:

  • Arduino Nano
  • Haqiqiy vaqt soati
  • Manzil LEDlari
  • Quvvat vilkasi
  • Quvvat kabeli
  • USB quvvat vilkasi
  • Yengil qarshilik va muvozanatli qarshilik (agar siz tunda xiralashishini xohlasangiz)
  • Tel

Yog'ochga ishlov beradigan materiallar:

  • 3/4 dyuymli kontrplak
  • Yupqa kontrplak
  • Yog'och qoldiqlari (men 2x4s ishlatardim, lekin qattiq yog'och ham ishlaydi)
  • Bo'yamoq
  • Akril 30 x 36 dyuymli varaq (mahalliy uy -ro'zg'or do'konidan topilgan)
  • Oyna rangi
  • Deraza rangini surtish uchun suyuqlik (men buzadigan amallar shishasida bolalar shampuni bilan aralashtirilgan suvdan foydalandim)
  • Windex
  • Qassob qog'ozi
  • Vintlar
  • Sprey yopishtiruvchi
  • Yelim
  • Yelim tayoqchasi

Asboblar:

  • Hukmdor
  • Xacto pichog'i
  • Lenta
  • Ikki tomonlama lenta
  • Kompas
  • Doira kesish dastgohi
  • Jigsaw
  • Tishli arra
  • Ish mil
  • Palm Sander
  • Disk Sander
  • Router jadvali
  • Avl
  • Matkap va matkap uchlari/haydovchilar
  • Qisqichlar
  • Lehimlash temir
  • Lehim
  • Tel -striptizchilar

3 -qadam: shablonlarni yig'ish

Shablonlarni yig'ish
Shablonlarni yig'ish
Shablonlarni yig'ish
Shablonlarni yig'ish

Katta shablon uchun Adobe Reader plakat sozlamasi yordamida chop eting. Har bir qog'ozning chekkalarini kesib oling va lenta bilan yopishtiring. Vertikal, gorizontal va diagonal chiziqlar shablonni tekislashga yordam beradi. Sahifalar tartibsiz bo'lsa, tartibni saqlashga yordam beradigan kichik raqamlar bilan yozilgan.

Barcha kerakli andozalar va fayllar 26 -qadamda topilgan.

4 -qadam: qo'pol kesilgan doiralar

Qattiq kesilgan doiralar
Qattiq kesilgan doiralar
Qattiq kesilgan doiralar
Qattiq kesilgan doiralar

Ikkita shablonni 3/4 dyuymli kontrplak varag'iga qo'yib, kompas yordamida kerak bo'lgandan biroz kattaroq doiralarni chizib oling. Jigsaw yordamida qo'pol shaklni kesib oling.

5 -qadam: o'lchamiga qarab kesib oling

Hajmi bo'yicha kesib oling
Hajmi bo'yicha kesib oling
Hajmi bo'yicha kesib oling
Hajmi bo'yicha kesib oling

Tasma ustidagi aylana kesish moslamasidan foydalanib, aylanalarni oxirgi o'lchamiga kesib oling.

6 -qadam: Shablonni qo'llash

Shablonni qo'llash
Shablonni qo'llash
Shablonni qo'llash
Shablonni qo'llash
Shablonni qo'llash
Shablonni qo'llash

Spray yopishtiruvchi yordamida har bir shablonni aylanaga qo'llang. Naqshning o'rtasiga tirnoq qo'ying, uni aylana bo'ylab joylashtiring.

7 -qadam: shablonni kesish

Shablonni kesish
Shablonni kesish
Shablonni kesish
Shablonni kesish
Shablonni kesish
Shablonni kesish

Jigsaw yordamida shablonning har bir alohida oynasini kesib tashlang. Agar siz CNC -ga kirishingiz mumkin bo'lsa, bu qadam ancha oson bo'lardi! Men bu jarayonga yordam berish uchun har bir oynada teshik ochdim. Siz kesishni boshlaganingizda, shablon tusha boshlaydi. Agar bu sodir bo'lsa, siz uni kichik lenta bilan mahkamlashingiz mumkin.

8 -qadam: silliqlash

Zımpara
Zımpara
Zımpara
Zımpara
Zımpara
Zımpara

Tayoqqa, milga ishlov beruvchiga va xurmo zımpara uchun qo'llaniladigan zımpara qog'ozidan foydalanib, jigsawdan qolgan qo'pol kesmani qumlang va tekislang.

9 -qadam: LEDlar uchun matkap tutqichlari

LEDlar uchun burg'ulash ushlagichlari
LEDlar uchun burg'ulash ushlagichlari
LEDlar uchun burg'ulash ushlagichlari
LEDlar uchun burg'ulash ushlagichlari
LEDlar uchun burg'ulash ushlagichlari
LEDlar uchun burg'ulash ushlagichlari
LEDlar uchun burg'ulash ushlagichlari
LEDlar uchun burg'ulash ushlagichlari

Har bir teshikning o'rtasini burilish bilan belgilang va LEDlar uchun teshiklarni burang. Men matkapni ishlov beriladigan qismga perpendikulyar saqlashga yordam beradigan qo'llanma va orqa tarafdagi o'tinni puflamaslik uchun taxtadan foydalanardim.

10 -qadam: taxtalarni birlashtirish

Kengashlarni birlashtirish
Kengashlarni birlashtirish
Kengashlarni birlashtirish
Kengashlarni birlashtirish
Kengashlarni birlashtirish
Kengashlarni birlashtirish

Old va orqa taxtalarni almashtiring va LED panelining orqa qismidagi ramka qismlarini o'rnating. Ramkani LED taxtasining old qismiga qaytaring va teshiklarni burang va bo'laklarni bir -biriga burab qo'ying.

Qo'shimcha ma'lumot olish uchun rasm yozuvlariga qarang.

11 -qadam: LEDlarni joylashtiring

LEDlarni joylashtiring
LEDlarni joylashtiring
LEDlarni joylashtiring
LEDlarni joylashtiring

LED panelini LED panelining orqa qismidan o'tkazing. Teshiklar bir -biridan ikkinchisiga o'tishdan boshqa simlarni kesishning hojati yo'q, shunday masofada bo'lishi kerak.

Orqa tomondan, LEDlar markazdan boshlanadi va keyin soat sohasi farqli o'laroq, keyingi halqaga o'tadi.

12 -qadam: 1 -qismni biriktiring

1 -qismni biriktiring
1 -qismni biriktiring
1 -qismni biriktiring
1 -qismni biriktiring
1 -qismni biriktiring
1 -qismni biriktiring

3/4 dyuymli kontrplakga biriktirilgan "Segment 1" shablonidan 9 ta segmentni kesib oling (26 -qadamda topilgan). LED panelini elim va qisqichlar bilan mahkamlang. Agar siz sabrsiz bo'lsangiz, uni mixlar bilan mahkamlashingiz mumkin.

Quriganidan so'ng, qirrasini disk silliqlash moslamasi bilan tekislang.

13 -qadam: bo'yoq

Bo'yamoq
Bo'yamoq
Bo'yamoq
Bo'yamoq
Bo'yamoq
Bo'yamoq
Bo'yamoq
Bo'yamoq

Dvigatel paneli va ramkani ham buzadigan amallar bilan bo'yash. Agar men buni yana qilsam, men qora emas, oq rangdan foydalanishni tanlagan bo'lardim, chunki u ob'ektiv orqali ko'proq aks etardi.

14 -qadam: 2 -qism

2 -qism
2 -qism
2 -qism
2 -qism
2 -qism
2 -qism

Qalinligi 3/8 dyuym bo'lgan yog'ochdan yasalgan "Segment 2" shablonidan 9 segmentni kesib oling (26 -bosqichda topilgan). Men do'kon atrofidan 2x4 o'lchamdagi qoldiqlardan foydalandim. Segmentlarni quruq joylashtiring va tasma qisqichi bilan yaxshi mos kelishini ta'minlang. Agar hamma narsa tekshirilsa, elim yopishmasligi uchun sirtini bo'yoqlar lentasi bilan yoping va keyingi bosqichga o'tishdan oldin kamida bir soat quriting.

15 -qadam: 3 -qism

3 -segment
3 -segment
3 -segment
3 -segment
3 -segment
3 -segment

Qalinligi 3/8 dyuymli yog'ochdan biriktirilgan "3 -segment" shablonidan 9 ta segmentni kesib oling (26 -bosqichda topilgan). 2 -qismdagi tikuvlar har bir segmentning o'rtasida bo'lishi uchun ularni yopishtiring. Bu halqani mustahkamlaydi.

16 -qadam: silliq halqa va bo'yoq

Silliq halqa va bo'yoq
Silliq halqa va bo'yoq
Silliq halqa va bo'yoq
Silliq halqa va bo'yoq

Men katta halqaning kesilgan qismidan maxsus silliqlash blokini yasadim. Ringning ichki va tashqi qismini qumlang va yopishtirish jarayonida paydo bo'lishi mumkin bo'lgan yoriqlarni to'ldiring.

Silliq bo'lgandan so'ng, bir necha marta qora bo'yoq va shaffof lakni qo'llang.

17 -qadam: Akrilni kesib oling

Akrilni kesib oling
Akrilni kesib oling
Akrilni kesib oling
Akrilni kesib oling
Akrilni kesib oling
Akrilni kesib oling
Akrilni kesib oling
Akrilni kesib oling

Akrilni 30 x 30 dyuymli kvadratga kesib oling va o'rtasini belgilang. Akrilni ikki tomonlama lenta bilan mahkamlang. Yopishtiruvchi yo'riqnoma bitidan foydalanib, ortiqcha akrilni olib tashlang

18 -qadam: Deraza rangini qo'llang

Deraza rangini qo'llang
Deraza rangini qo'llang
Deraza rangini qo'llang
Deraza rangini qo'llang
Deraza rangini qo'llang
Deraza rangini qo'llang

Chang bo'lmagan muhitda himoya plyonkani akrildan olib tashlang. Spreyi qo'llang va deraza oynasining orqa qismini olib tashlang. Yopishqoq tomonini pastga qarating. Siqish yoki kredit kartasidan foydalanib, deraza oynasi ostidagi barcha suyuqlikni siqib chiqaring. Barcha pufakchalar va ajinlar olib tashlangandan so'ng, o'tkir pichoq yordamida oynaning ortiqcha rangini qirqing.

19 -qadam: Defuserni ulang

Defuserni biriktiring
Defuserni biriktiring
Defuserni biriktiring
Defuserni biriktiring

Men defuser sifatida katta qassob qog'ozidan foydalanardim. Qog'ozni tekis yuzaga qo'ying. Ramkaning yuzini yopishtiruvchi tayoqdan elim bilan yoping. Yelim quriguncha, soatning old qismini qog'ozga qarating va ortiqcha qismini qo'pol qilib kesib oling. Quriganidan so'ng, kesish uchun o'tkir pichoqni ishlating.

20 -qadam: izolyatsiyani qo'llang

Izolyatsiyani qo'llang
Izolyatsiyani qo'llang

Quvvat va ma'lumot uzatish liniyalarini alohida saqlash uchun men elektr tasmasini ishlatardim.

21 -qadam: yig'ing

Yig'ish
Yig'ish
Yig'ish
Yig'ish
Yig'ish
Yig'ish

Akrildan boshqa himoya qatlamini olib tashlang. Akrilni halqa ichiga, derazaning bo'yog'i yuqoriga qaragan holda joylashtiring. Qolgan soatni ringga siljiting. Yengil bosim o'tkazish uchun qisqichni ishlating, halqa orqali va LED taxtasida teshik ochiladi. Bu orqa tomondan taxminan 1/1 dyuym bo'lishi kerak. LEDni burg'ulashdan ehtiyot bo'ling. Quvur boshining vintini teshikka burang. Soat perimetri bo'ylab jami sakkizta vintni takrorlang.

22 -qadam: Ankraj nuqtalarini biriktiring

Anchor ballarini biriktiring
Anchor ballarini biriktiring

Orqa qopqoqni mahkamlash uchun elim langari soatning orqa tomoniga ishora qiladi. Bu qalinligi 3/4 dyuym va uzunligi taxminan 2 dyuym.

23 -qadam: Quvvat va LDR sensori teshiklari

Matkap quvvati va LDR sensori teshiklari
Matkap quvvati va LDR sensori teshiklari

Elektr vilkasi uchun soatning pastki qismidan quvvat teshigini, yuqori qismidan esa nurga qarshilik rezistori (LDR) uchun teshik oching.

24 -qadam: Elektron ushlagichni o'rnating

Elektron ushlagichni o'rnating
Elektron ushlagichni o'rnating
Elektron ushlagichni o'rnating
Elektron ushlagichni o'rnating

RTC va Arduino Nano uchun 3D bosma ushlagichni o'rnating. Sxemada ko'rsatilganidek, barcha elektronikalarni ulang.

25 -qadam: Orqa qopqoq

Orqa qopqoq
Orqa qopqoq
Orqa qopqoq
Orqa qopqoq
Orqa qopqoq
Orqa qopqoq
Orqa qopqoq
Orqa qopqoq

Soat tashqarisidan kichikroq bo'lgan ingichka kontrplakdan orqa qopqog'ini kesib oling. O'rnatish joylariga teshiklarni burang. Orqa tomonning markazini toping va har ikki yo'nalishda 8 dyuymni o'lchang, shunda teshiklar kesiladi (AQShda pog'onali markazlarda 16 standart). Men asosiy teshikni ishlatadigan vintlar boshidan kattaroq qilib burg'iladim va teshikni bir tomonga kattaroq ochdim. Qora rangga bo'yab, qopqog'ini joyiga mahkamlang.

26 -qadam: Kod va fayllar

Shunga qaramay, men bu erda ishlatilgan Arduino kutubxonalaridan juda ko'p foydalanganim uchun juda yangi, shuning uchun ulardan foydalanishning yaxshiroq usullari borligiga aminman.

Men kodni, agar loyiha kattalashtirilsa yoki kamaytirilsa, qancha LED ishlatayotganingizga qarab osongina yangilanishi uchun yozdim. Siz qilishingiz kerak bo'lgan narsa - LEDning boshlang'ich va oxirgi pozitsiyalarini, shuningdek, har bir raqamga qancha LEDni kiritish.

Men ishga tushirish vaqtida ham, soat bo'yicha ham o'ynaydigan bir nechta animatsiyalarni qo'shdim. Ular bortida tasodifiy sonlar generatoriga asoslangan tasodifiy sudo.

Siz soatni ranglar oralig'ida aylantirib turishingiz yoki bitta holatda turishingiz mumkin. Kirish qismida ko'rsatilgandek, vaqtni o'qish uchun indikator raqamini ajratib ko'rsatish mumkin.

Kodni xohlaganingizcha tahrir qiling va o'zgartiring.

#"RTClib.h" ni qo'shing

#clude #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; boolean timeChange = false; boolean printTime = noto'g'ri; // Konsolda chiqishni ko'rishni xohlasangiz rost qilib qo'ying. Nosozliklarni tuzatish uchun foydali. boolean redDown = rost; boolean greenDown = noto'g'ri; boolean blueDown = noto'g'ri; boolean tsikli = noto'g'ri; // Agar soat ranglari boolean ta'kidlashni = to'g'ri aylantirilishini xohlasangiz, rostni belgilang; // "Oxirgi raqam" ni ajratish uchun rostni belgilang. // har bir vaqt guruhining boshi va oxiri joylari 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; // Vaqtni ajratish uchun ishlatiladigan multiplikatorlar const int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Buni ishga tushirish animatsiyasini tezlashtirish yoki sekinlashtirish uchun o'zgartiring const int CYCLE_SPEED = 1; // Rangni o'zgartirish tsikli uchun bu erda tezlikni o'zgartiring (1dan yuqori bo'lishi kerak) // O'zgaruvchilarni e'lon qilish int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int soat1 = 0; int soat2 = 0; int daqiqa1 = 0; int minut2 = 0; int sekund1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t yorqin = 255; int numberOfAnimations = 5; int tasodifiylik = 0; // Ranglarni o'rnating uint8_t red = 0; uint8_t yashil = 0; uint8_t ko'k = 255; uint8_t ta'kidlash_red = 60; uint8_t ta'kidlash_green = 60; uint8_t ta'kidlash_blue = 255; // LEDlar CRGB leds [NUM_LEDS] qatorini aniqlang; void setup () {Serial.begin (19200); FastLED.addLeds (LEDlar, NUM_LEDS); LEDS.setBrightness (yorqin); FastLED.clear (); rtc.begin (); // Vaqtni belgilash uchun quyida izoh qoldirmang. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))))); // animatsion animatsiyani ishga tushirish (tasodifiylik); } void loop () {// DateTime vaqtini hozir oling = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = noto'g'ri; // RTC holda vaqtni qo'lda o'rnatish uchun ulardan foydalaning. Nosozliklarni tuzatish uchun foydali // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Barcha bitlarni nolga qaytaring (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Qora; } // Soatni o'rnatish // Soatni o'rnatish 1 soat1 = (joriyHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Bu (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {uchun (int i = (HOUR_1_START_LOCATION + hour1 - 1)) yonadigan vaqt birligining umumiy LEDlarini hisoblab chiqadi; i> = (HOUR_1_START_LOCATION + hour1-LEDS_PER_HOUR_1); i--) {leds = CRGB (ta'kidlash_qizil, ta'kidlash_yashil, ta'kidlash_ko'k); }} // Belgilangan soat 2 soat2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Bu vaqt birligining jami LEDlari yonadi (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {for (int i = (HOUR_2_START_LOCATION + hour2 - 1); i> = (HOUR_2_START_LOCATION + hour2-LEDS_PER_HOUR_2); i--) {leds = CRGB (ta'kidlash_qizil, ta'kidlash_yashil, ta'kidlash_ko'k); }} // Minutni belgilash // Daqiqani belgilash 1 daqiqa1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Bu vaqt birligidagi LEDlarning umumiy sonini hisobga oladi (int i = MINUTE_1_START_LOCATION; i 0) // && minutes1 <24) {for (int i = (MINUTE_1_START_LOCATION + daqiqa1 - 1); i> = (MINUTE_1_START_LOCATION + daqiqa1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (ta'kidlash_qizil, ta'kidlash_yashil, ta'kidlash_kor); }} // 2 daqiqani belgilang2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Bu vaqt birligining jami LEDlarini yonadi (int i = MINUTE_2_START_LOCATION; i 0) // && minutes2 <22) {for (int i = (MINUTE_2_START_LOCATION + minut2 - 1)); i> = (MINUTE_2_START_LOCATION + daqiqa2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (ta'kidlash_qizil, ta'kidlash_yashil, ta'kidlash_kor); }} // Ikkinchisini o'rnating, agar (currentSecond! = LastSecond) {timeChange = true; } // Ikkinchi 1 soniyani o'rnating1 = currentSecond % MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (qizil, yashil, ko'k); } // Ikkinchi 2 soniyani o'rnating2 = 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 (ta'kidlash_qizil, ta'kidlash_yashil, ta'kidlash_ ko'k); }} lastSecond = currentSecond; // Dastur tsikllarini hisoblang va LEDlarning rangini o'zgartirish uchun setColor funktsiyasini chaqiring CYCLE_SPEED. agar (CycleCount yorqin) // {// fadeValue = yorqin; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Joriy vaqtni konsolda chop eting, agar (timeChange == true && printTime == true) {printToConsole (); }} // Animatsiya funktsiyasi bu erda xohlaganingizcha ko'proq animatsiyalarni qo'shadi (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (qizil, yashil, ko'k); FastLED.show (); kechikish (START_UP_DELAY); } uchun (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Qora; FastLED.show (); kechikish (START_UP_DELAY); }} if if (ni tanlang == 1) {for (int i = 0; i <250; i ++) {int light = random (95); leds [yorug'lik] = CRGB (qizil, yashil, ko'k); FastLED.show (); }} else if (tanlang == 2) {leds [0] = CRGB (qizil, yashil, ko'k); uchun (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION+i] = CRGB (qizil, yashil, ko'k); agar (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_START_LOCATION + i] = CRGB (qizil, yashil, ko'k); } agar (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_START_LOCATION + i] = CRGB (qizil, yashil, ko'k); } agar (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (qizil, yashil, ko'k); } agar (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (qizil, yashil, ko'k); } kechiktirish (34); FastLED.show (); }} else if (tanlang == 3) {leds [0] = CRGB (qizil, yashil, ko'k); uchun (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_END_LOCATION - i] = CRGB (qizil, yashil, ko'k); agar (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_END_LOCATION - i] = CRGB (qizil, yashil, ko'k); } agar (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_END_LOCATION - i] = CRGB (qizil, yashil, ko'k); } agar (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_END_LOCATION - i] = CRGB (qizil, yashil, ko'k); } agar (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (qizil, yashil,ko'k); } kechiktirish (34); FastLED.show (); }} if if (== 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); kechikish (200); uchun (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (qizil, yashil, ko'k); } FastLED.show (); kechikish (200); uchun (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Qora; } FastLED.show (); kechikish (200); uchun (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (qizil, yashil, ko'k); } FastLED.show (); kechikish (200); uchun (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Qora; } FastLED.show (); kechikish (200); }} // Rangli velosiped funksiyasi void setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; yashil-; agar (yashil <= 0) {qizil = 255; redDown = noto'g'ri; greenDown = rost; }} boshqa if (greenDown == true && blueDown == false) {green ++; ko'k-; agar (ko'k <= 0) {yashil = 255; greenDown = noto'g'ri; blueDown = rost; }} if if (blueDown == true && redDown == false) {blue ++; qizil-; agar (qizil <= 0) {ko'k = 255; blueDown = noto'g'ri; redDown = rost; }}} boshqa {qizil = 0; yashil = 0; ko'k = 255; }} // Serial Monitor funktsiyasiga chop etish void printToConsole () {Serial.print ("Joriy vaqt:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); uchun (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (leds ); agar (i % 2 == 0) {Serial.print (""); }} Serial.println (""); uchun (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (leds ); agar (((i - HOUR_1_START_LOCATION + 1) % 3) == 0) {Serial.print (""); }} Serial.println (""); uchun (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (leds ); agar (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); uchun (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (leds ); agar (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print (""); }} Serial.println (""); uchun (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (leds ); Serial.print (""); } Serial.println (""); Serial.println (LEDlar [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

27 -qadam: Xursand bo'ling

Rasm
Rasm

Xulosa qilib aytadigan bo'lsak, bu soatni tomosha qilish juda zo'r va uni qo'lga kiritganingizda, o'qish nisbatan oson. Agar siz o'zingiz soat loyihasini qilsangiz, menga xabar bering!

Tavsiya: