Mündəricat:

Cryptic Divar Saatı: 27 Addım (Şəkillərlə birlikdə)
Cryptic Divar Saatı: 27 Addım (Şəkillərlə birlikdə)

Video: Cryptic Divar Saatı: 27 Addım (Şəkillərlə birlikdə)

Video: Cryptic Divar Saatı: 27 Addım (Şəkillərlə birlikdə)
Video: Heydər Əliyev və Həyat yoldaşını Birdə belə görün #azerbaijan #president #prezident #xeberler #xeber 2024, Iyul
Anonim
Cryptic Divar Saatı
Cryptic Divar Saatı

Zamanın keçməsi idarə edə bilmədiyimiz bir şeydir. Yuxuda, oyaq olanda, cansıxıcı olanda və ya nişanlandıqda da eyni nisbətdə olur. Mövcud hadisələrlə zamanın keçəcəyini xatırlamaq vacibdir. Vaxt keçməsini gözləyərkən, niyə zaman keçməsini izləmək üçün daha cazibədar edən bir şey etməyək.

Bu saat Almaniyanın paytaxtı Berlində tapılan Mengenlehreuhrdan ilhamlandı və eyni şəkildə oxuna bilər. Orijinal kimi, işıqlı, rəngli sahələr vasitəsi ilə vaxtı bildirir.

52 'rəqəmli' bölgəni işıqlandıran 96 LED -ə malikdir. Orijinaldan fərqli olaraq, üfüqi bir çubuq düzeni yerinə saniyə halqası olan dairəvi dizaynı var. Xarici bant orta nöqtə ilə birlikdə saniyələri göstərir, sonrakı iki bant dəqiqələri, son daxili bantlar isə saatları göstərir.

Əlinizdə bir az hurda materialınız və əlavə vaxtınız varsa, niyə bu vaxtı göstərəcək bir şey etmək üçün istifadə etməyəsiniz!

Yenidən etmək istəsəm bu layihədə bir neçə dəyişiklik edərdim. Əvvəlcə çərçivəni və LED lövhəni qara əvəzinə ağ rəngə boyayardım. Bu, öndəki böyük lensdən daha çox işığı əks etdirəcək. LED -lərin yerləşdirilməsini də sona qədər gözləyərdim. Kodun yazılmasında mənə kömək edə bilməsi üçün lövhənin daha erkən bitməsinə ehtiyacım var idi. Yoldan çıxaraq, əvvəlcə onu necə oxumağı öyrənək!

Şəkil
Şəkil

Addım 1: Saatı necə oxumaq olar

Saat daxili dairələrdən xaricə oxunur. Dörd sahənin daxili halqası, hər biri beş tam saatı, ikinci halqanın yanında, hər biri bir tam saatı ifadə edən və 24 saat formatında saat dəyərini göstərən dörd sahəni də ifadə edir. Üçüncü halqa hər biri beş tam dəqiqəni ifadə edən on bir sahədən ibarətdir, növbəti halqada hər biri bir dəqiqəni qeyd edən başqa dörd sahə var. Nəhayət, 29 sahənin xarici halqası tək saniyələri ifadə edir, mərkəzdəki işıq tək (yandırıldıqda) və ya cüt saylı (işıqsız olduqda) saniyələri göstərir.

Şəkil
Şəkil

Məsələn, yuxarıdakı görüntüdə beş saatlıq rəqəmlərdən 1 -i, bir saatlıq rəqəmdən 3 -ü, beş dəqiqəlik rəqəmlərdən 8 -i, bir dəqiqəlik rəqəmlərdən 4 -ü, iki saniyəlik rəqəmdən 23 -ü və ikinci ikinci rəqəm yanır.

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

Şəkil
Şəkil

Yuxarıda göstərilən zaman: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 3:17:11

Şəkil
Şəkil

Yuxarıda göstərilən zaman: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33

Addım 2: Alətlər və materiallar

Alətlər və Materiallar
Alətlər və Materiallar
Alətlər və Materiallar
Alətlər və Materiallar
Alətlər və Materiallar
Alətlər və Materiallar

Elektronika materialları:

  • Arduino Nano
  • Real vaxt saatı
  • Ünvanlı LEDlər
  • Güc Fişi
  • Güc Kabeli
  • USB Güc Fişi
  • İşıqdan asılı rezistor və balanslaşdırılmış rezistor (gecə qaralmasını istəyirsinizsə)
  • Tel

Ağac emalı üçün materiallar:

  • 3/4 düymlük kontrplak
  • İncə kontrplak
  • Hurda Ağacı (2x4s istifadə etdim, amma sərt ağac da işləyərdi)
  • Çəkmək
  • Akrilik 30 x 36 düymlük vərəq (yerli ev təmir mağazasında tapılıb)
  • Pəncərə Tonu (yerli mənbəyə çalışın. Heç biri yoxdursa, burada kifayət qədər böyük bir vərəq tapa bilərsiniz)
  • Pəncərə Tonu Tətbiq Mayesi (bir sprey şüşəsində uşaq şampunu ilə qarışdırılmış su istifadə etdim)
  • Windex
  • Qəssab Kağızı
  • Vintlər
  • Sprey yapışdırıcı
  • Yapışqan
  • Yapışqan çubuq

Alətlər:

  • Hökmdar
  • Xacto Bıçağı
  • Tape
  • İki tərəfli lent
  • Kompas
  • Dairəvi Kəsmə Jig
  • Yapboz
  • Şerit testere
  • Mil Sander
  • Palm Sander
  • Disk Sander
  • Router masası
  • Awl
  • Matkap və Matkap Uçları/Sürücülər
  • Kelepçeler
  • Lehimleme dəmir
  • Lehim
  • Tel çıxarıcılar

Addım 3: Şablonları yığın

Şablonları yığın
Şablonları yığın
Şablonları yığın
Şablonları yığın

Böyük bir şablon üçün Adobe Reader -də afişa ayarını istifadə edərək çap edin. Hər bir kağızın kənarlarını kəsin və bir -birinə yapışdırın. Şaquli, üfüqi və diaqonal xətlər şablonu düzəltməyə kömək edəcək. Səhifələrin hamısı sıradan çıxdıqları təqdirdə təşkilatlanmalarına kömək etmək üçün kiçik rəqəmlərə malikdir.

Lazım olan bütün şablonlar və fayllar 26 -cı addımda tapılmışdır.

Addım 4: Kobud kəsmə dairələri

Kobud kəsmə dairələri
Kobud kəsmə dairələri
Kobud kəsmə dairələri
Kobud kəsmə dairələri

İki şablonu 3/4 düymlük kontrplak bir təbəqəyə qoyaraq, pusula ilə lazım olandan bir qədər böyük dairələr çəkin. Yapbozdan istifadə edərək kobud formanı kəsin.

Addım 5: Ölçüyə kəsin

Ölçüyə kəsin
Ölçüyə kəsin
Ölçüyə kəsin
Ölçüyə kəsin

Şerit üzərində bir dairə kəsmə qurğusu istifadə edərək dairələri son ölçüyə kəsin.

Addım 6: Şablonu tətbiq edin

Şablon tətbiq edin
Şablon tətbiq edin
Şablon tətbiq edin
Şablon tətbiq edin
Şablon tətbiq edin
Şablon tətbiq edin

Sprey yapışqan istifadə edərək, hər şablonu bir dairəyə tətbiq edin. Şablonun ortasına bir çivi daxil edərək dairənin ortasına qoyun.

Addım 7: Şablonu kəsin

Kəsmə Şablonu
Kəsmə Şablonu
Kəsmə Şablonu
Kəsmə Şablonu
Kəsmə Şablonu
Kəsmə Şablonu

Yapbozdan istifadə edərək şablonun hər bir fərdi pəncərəsini kəsin. Bir CNC -ə çıxışınız varsa, bu addım daha asan olardı! Bu prosesə kömək etmək üçün hər pəncərədə bir delik açdım. Kəsməyə başladığınız zaman şablon çıxmağa başlaya bilər. Bu baş verərsə, onu kiçik lent parçaları ilə sabitləyə bilərsiniz.

Addım 8: Zımpara

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

Bir çubuq, bir mil zımpara və xurma zımpara tətbiq olunan zımpara kağızı istifadə edərək, yapbozun buraxdığı kobud kəsikləri düzəldin.

Addım 9: LEDlər üçün matkap tutacaqları

LEDlər üçün qazma tutacaqları
LEDlər üçün qazma tutacaqları
LEDlər üçün qazma tutacaqları
LEDlər üçün qazma tutacaqları
LEDlər üçün qazma tutacaqları
LEDlər üçün qazma tutacaqları
LEDlər üçün qazma tutacaqları
LEDlər üçün qazma tutacaqları

Hər bir çuxurun mərkəzini bir çəngəl ilə işarələyin və LEDlər üçün boşluqlar açın. Matkapı iş parçama dik saxlamağa kömək etmək üçün bir bələdçi və arxa taxtanı üfürməmək üçün arxa lövhədən istifadə etdim.

Addım 10: Lövhələri birləşdirin

Lövhələri birləşdirin
Lövhələri birləşdirin
Lövhələri birləşdirin
Lövhələri birləşdirin
Lövhələri birləşdirin
Lövhələri birləşdirin

Ön və arxa lövhələri dəyişdirin və LED lövhənin arxasındakı çərçivənin iz hissələrini dəyişdirin. Çərçivəni yenidən LED lövhənin önünə keçirin və deliklər qazın və parçaları vidalayın.

Daha çox məlumat üçün şəkil qeydlərinə baxın.

Addım 11: LEDləri daxil edin

LEDləri daxil edin
LEDləri daxil edin
LEDləri daxil edin
LEDləri daxil edin

LED lövhəsini arxadan keçirin. Deliklər kifayət qədər aralı olmalıdır ki, bir dairədən digərinə keçməkdən başqa heç bir tel kəsməyiniz lazım olmayacaq.

Arxadan, LEDlər mərkəzdən başlayır və sonra saat əqrəbinin əksinə, sonra növbəti halqaya qədər işləyir.

Addım 12: Segment 1 əlavə edin

Segmenti 1 əlavə edin
Segmenti 1 əlavə edin
Segmenti 1 əlavə edin
Segmenti 1 əlavə edin
Segmenti 1 əlavə edin
Segmenti 1 əlavə edin

3/4 düymlük kontrplaka yapışdırılmış "Segment 1" şablonundan 9 seqmenti kəsin (26 -cı addımda tapılıb). Yapışqan və sıxaclarla LED lövhəyə yapışdırın. Səbirsiz olsanız, dırnaqlardan istifadə edərək yerində bağlaya bilərsiniz.

Quruduqdan sonra kənarını disk zımpara ilə təmizləyin.

Addım 13: Boyayın

Çəkmək
Çəkmək
Çəkmək
Çəkmək
Çəkmək
Çəkmək
Çəkmək
Çəkmək

Həm LED lövhəni, həm də çərçivəni boyayın. Yenidən bunu etsəydim, obyektivdən daha çox əks olunacağı üçün qara rəng əvəzinə ağ boya istifadə etməyi seçərdim.

Addım 14: Segment 2

Segment 2
Segment 2
Segment 2
Segment 2
Segment 2
Segment 2

Qalınlığı 2 3/8 olan ağacdan yapışdırılmış "Segment 2" şablonundan 9 seqmenti kəsin (26 -cı addımda tapılıb). Dükanın ətrafından 2x4s bir neçə hurda istifadə etdim. Segmentləri quru şəkildə bərkidin və bir bərkidici ilə yaxşı oturduğundan əmin olun. Hər şey yoxlanılırsa, yapışqanın yapışmaması üçün kənarını boyayıcı lentlə örtün və növbəti mərhələyə keçməzdən əvvəl ən azı bir saat qurudun.

Addım 15: Segment 3

Segment 3
Segment 3
Segment 3
Segment 3
Segment 3
Segment 3

Qalınlığı 3/8 düym olan "Segment 3" şablonundan 9 seqmenti kəsin (26 -cı addımda tapılıb). 2 -ci seqmentin tikişləri hər seqmentin 3 ortasında olması üçün onları yapışdırın. Bu halqanı gücləndirəcəkdir.

Addım 16: Hamar Üzük və Boya

Hamar Üzük və Boya
Hamar Üzük və Boya
Hamar Üzük və Boya
Hamar Üzük və Boya

Böyük halqanın kəsilmiş hissəsindən xüsusi zımpara bloku düzəltdim. Üzükün içini və xaricini zımpara edin və yapışdırma prosesi zamanı yarana biləcək çatlaqları doldurun.

Hamar olduqdan sonra bir neçə qat qara boya və şəffaf lak tətbiq edin.

Addım 17: Akrilik kəsin

Akrilik kəsin
Akrilik kəsin
Akrilik kəsin
Akrilik kəsin
Akrilik kəsin
Akrilik kəsin
Akrilik kəsin
Akrilik kəsin

Akrili 30 x 30 düym ölçülü bir kvadrat halına salın və ortasını işarələyin. Akrili iki tərəfli lentlə yapışdırın. Yuyulma üçün bir marşrutlaşdırıcı bit istifadə edərək, artıq akrili çıxarın

Addım 18: Pəncərə Tonu tətbiq edin

Pəncərə Tonu tətbiq edin
Pəncərə Tonu tətbiq edin
Pəncərə Tonu tətbiq edin
Pəncərə Tonu tətbiq edin
Pəncərə Tonu tətbiq edin
Pəncərə Tonu tətbiq edin

Tozsuz bir mühitdə qoruyucu filmi akrildən çıxarın. Püskürtmə tətbiq edin və pəncərənin boyasından arxa hissəni çıxarın. Pəncərə rəngini yapışqan tərəfi aşağı çəkin. Bir silecek və ya kredit kartı istifadə edərək, bütün mayeni pəncərənin altından çıxarın. Bütün baloncuklar və qırışlar çıxarıldıqdan sonra, kəskin bıçaqla pəncərənin artıq rəngini kəsin.

Addım 19: Defuser əlavə edin

Defuser əlavə edin
Defuser əlavə edin
Defuser əlavə edin
Defuser əlavə edin

Defuser rolunu oynamaq üçün böyük bir qəssab kağızı istifadə etdim. Kağızı düz bir səthə qoyun. Çərçivənin üzünü yapışqan çubuqdan yapışqan ilə örtün. Yapışqan quruyana qədər saatın ön tərəfini üzü aşağıya qoyun və artıqlığı kobud şəkildə kəsin. Quruduqdan sonra yuyulmasını kəsmək üçün iti bıçaq istifadə edin.

Addım 20: İzolyasiya tətbiq edin

İzolyasiya tətbiq edin
İzolyasiya tətbiq edin

Güc və məlumat xətlərini ayrı saxlamaq üçün elektrik lentindən istifadə etdim.

Addım 21: yığın

Toplaşmaq
Toplaşmaq
Toplaşmaq
Toplaşmaq
Toplaşmaq
Toplaşmaq

Akrilikdən digər qoruyucu təbəqəni çıxarın. Akrili üzük içərisində pəncərə tonu yuxarıya baxacaq şəkildə halqanın içərisinə qoyun. Saatin qalan hissəsini halqaya sürüşdürün. Üzükdən və LED lövhəsinə bir delik açılarkən yüngül təzyiq tətbiq etmək üçün bir sıxac istifadə edin. Bu, arxadan təxminən 1 1/8 düym olmalıdır. Bir LED -ə daxil olmamaq üçün diqqətli olun. Bir kafes başı vidasını çuxura vidalayın. Saat perimetri ətrafında cəmi səkkiz vida üçün təkrarlayın.

Addım 22: Çapa nöqtələri əlavə edin

Çapa nöqtələrini əlavə edin
Çapa nöqtələrini əlavə edin

Yapışqan ankraj, arxa qapağın bağlanması üçün saatın arxasına işarə edir. Bunlar 3/4 düym qalınlığında və təxminən 2 düym uzunluğundadır.

Addım 23: Güc və LDR Sensor Deliklərini Qazın

Matkap Gücü və LDR Sensor Delikləri
Matkap Gücü və LDR Sensor Delikləri

Elektrik fişi üçün saatın altından bir güc çuxuru və işığa bağlı rezistor (LDR) sensoru üçün yuxarıdan bir delik açın.

Addım 24: Elektron tutucusunu quraşdırın

Elektron tutucunu quraşdırın
Elektron tutucunu quraşdırın
Elektron tutucunu quraşdırın
Elektron tutucunu quraşdırın

RTC və Arduino Nano üçün 3D çap tutucusunu quraşdırın. Bütün elektronikləri sxematik şəkildə göstərildiyi kimi bağlayın.

Addım 25: Arxa qapaq

Arxa qapaq
Arxa qapaq
Arxa qapaq
Arxa qapaq
Arxa qapaq
Arxa qapaq
Arxa qapaq
Arxa qapaq

Arxa qapağı saatın xaricindən daha kiçik olan nazik kontrplakdan kəsin. Bağlama nöqtələrinə deliklər qazın. Arxanın mərkəzini tapın və açar delikləri kəsmək üçün hər iki istiqamətdə 8 düym ölçün (ABŞ -da saplama mərkəzlərində standart 16). Əsas çuxuru istifadə edəcəyim vintlərin başından daha böyük qazdım və çuxuru bir istiqamətdə daha böyük açdım. Qara rəngə boyayın və qapağı yerinə yapışdırın.

Addım 26: Kod və Fayllar

Yenə də burada istifadə olunan bir çox Arduino kitabxanasını istifadə etmək üçün kifayət qədər yeniyəm, buna görə əminəm ki, onlardan istifadə etməyin daha yaxşı yolları var.

Layihə yuxarı və ya aşağı salındıqda istifadə etdiyiniz LED sayına əsasən kodu asanlıqla yeniləmək üçün yazdım. Etməyiniz lazım olan hər şey, LED -in başlanğıc və bitiş mövqelərini, həmçinin hər bir rəqəmin neçə LED -inin olduğunu yeniləməkdir.

Başlanğıcda və saatda oynayan bir neçə animasiya əlavə etdim. Gəmisində olan təsadüfi ədəd generatoruna əsaslanaraq sudo təsadüfi olur.

Saatı rənglər arasında keçmək və ya bir yerdə statik qalmaq üçün təyin edə bilərsiniz. Girişdə göstərildiyi kimi vaxtın oxunmasına kömək etmək üçün göstərici rəqəmini də vurğulaya bilərsiniz.

Kodu istədiyiniz kimi redaktə etmək və dəyişdirməkdən çekinmeyin.

#"RTClib.h" daxil edin

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; boolean timeChange = yalan; boolean printTime = yalan; // Konsolda çıxışı görmək istəyirsinizsə doğru olaraq təyin edin. Ayıklama üçün faydalıdır. boolean redDown = doğru; boolean greenDown = yanlış; boolean blueDown = yanlış; boolean dövrü = yalan; // Saat rənglərinin boolean vurğulamaq = doğru çevrilməsini istəyirsinizsə, doğru olaraq təyin edin; // 'Son rəqəmi' vurğulamaq üçün doğru olaraq təyin edin. // hər bir zaman qrupunun başlanğıc və son yerləri const 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; // Vaxtı bölmək üçün istifadə edilən çarpanlar int const MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Başlanğıc animasiyasını sürətləndirmək və ya yavaşlatmaq üçün bunu dəyişdirin const CYCLE_SPEED = 1; // Rəng dəyişmə dövrü üçün dərəcəni burada dəyişin (1 -dən yuxarı olmalıdır) // Dəyişənləri elan edin int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int saat1 = 0; int saat2 = 0; int dəqiqə1 = 0; int dəqiqə2 = 0; int saniyə1 = 0; int saniyə2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t parlaq = 255; int numberOfAnimations = 5; int təsadüfi = 0; // Rəngləri təyin edin uint8_t red = 0; uint8_t yaşıl = 0; uint8_t mavi = 255; uint8_t high_red = 60; uint8_t vurğulamaq_green = 60; uint8_t qeyd_mavi = 255; // LEDlər CRGB ledlərinin [NUM_LEDS] sıra təyin edin; void setup () {Serial.begin (19200); FastLED.addLeds (ledlər, NUM_LEDS); LEDS.setBrightness (parlaq); FastLED.clear (); rtc.begin (); // Vaxtı təyin etmək üçün aşağıdakı sətirdə şərh yazmayın. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))); // Başlanğıc animasiya canlı (təsadüfi); } void loop () {// Zamanı alın DateTime indi = rtc.now (); currentHour = indi.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = yalan; // RTC olmadan vaxtı əl ilə təyin etmək üçün bunları istifadə edin. Ayıklama üçün faydalıdır // currentHour = 5; // cari dəqiqə = 30; // currentSecond = 30; // Bütün bitləri sıfıra sıfırlayın (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Qara; } // Saatı Ayarla // Saatı təyin et 1 saat1 = (cariHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Bu, (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {for (int i = (HOUR_1_START_LOCATION + hour1 - 1)) üçün yandırılacaq vaxt vahidinin ümumi LED -lərini sayacaq; i> = (HOUR_1_START_LOCATION + saat1-LEDS_PER_HOUR_1); i--) {leds = CRGB (vurgulama_qırmızı, vurgulama_yaşıl, vurğulama_mavi); }} // Saatı 2 saat təyin et2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Bu (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {üçün (int i = (HOUR_2_START_LOCATION + hour2 - 1); y> = (HOUR_2_START_LOCATION + saat2-LEDS_PER_HOUR_2); i--) {leds = CRGB (vurgulama_qırmızı, vurgulama_yaşıl, vurğulama_mavi); }} // Dəqiqəni Ayarla // Dəqiqəni 1 dəqiqəyə təyin et1 = (cariMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Bu, (int i = MINUTE_1_START_LOCATION; i 0) // && dəqiqə1 <24) {üçün (int i = (MINUTE_1_START_LOCATION + dəqiqə1 - 1)) yandırılacaq vaxt vahidinin ümumi LED -lərini sayacaq; i> = (MINUTE_1_START_LOCATION + dəqiqə1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (vurgulama_qırmızı, vurgulama_yaşıl, vurğulama_mavi); }} // Dəqiqəni 2 dəqiqə təyin edin2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Bu, (int i = MINUTE_2_START_LOCATION; i 0) // && minutes2 <22) {üçün (int i = (MINUTE_2_START_LOCATION + dəqiqə2 - 1)) yandırılacaq vaxt vahidinin ümumi LEDlərini sayacaq; i> = (MINUTE_2_START_LOCATION + dəqiqə2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (vurgulama_qırmızı, vurgulama_yaşıl, vurğulama_mavi); }} // Saniyəni təyin edin, əgər (currentSecond! = LastSecond) {timeChange = true; } // Saniyəni 1 saniyə təyin edin1 = currentSecond % MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (qırmızı, yaşıl, mavi); } // İkinci 2 saniyəni təyin et2 = 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 (vurgulama_qırmızı, vurgulama_yaşıl, vurğulamaq_mavi); }} lastSecond = currentSecond; // Proqramın dövrünü sayın və LEDlərin rəngini dəyişmək üçün setColor funksiyasını çağırın CYCLE_SPEED dövrü. əgər (cycleCount parlaq) // {// fadeValue = parlaq; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Cari vaxtı konsola yazın, əgər (timeChange == true && printTime == true) {printToConsole (); }} // Animasiya funksiyası buraya istədiyiniz kimi daha çox animasiya əlavə edin (int seçin) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (qırmızı, yaşıl, mavi); FastLED.show (); gecikmə (START_UP_DELAY); } üçün (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; FastLED.show (); gecikmə (START_UP_DELAY); }} else if (seçin == 1) {for (int i = 0; i <250; i ++) {int light = random (95); led [işıq] = CRGB (qırmızı, yaşıl, mavi); FastLED.show (); }} else if (seçin == 2) {leds [0] = CRGB (qırmızı, yaşıl, mavi); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {led [SECOND_2_START_LOCATION+i] = CRGB (qırmızı, yaşıl, mavi); əgər (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_START_LOCATION + i] = CRGB (qırmızı, yaşıl, mavi); } əgər (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {led [MINUTE_2_START_LOCATION + i] = CRGB (qırmızı, yaşıl, mavi); } əgər (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (qırmızı, yaşıl, mavi); } əgər (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (qırmızı, yaşıl, mavi); } gecikmə (34); FastLED.show (); }} else if (seçin == 3) {leds [0] = CRGB (qırmızı, yaşıl, mavi); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {led [SECOND_2_END_LOCATION - i] = CRGB (qırmızı, yaşıl, mavi); əgər (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {led [MINUTE_1_END_LOCATION - i] = CRGB (qırmızı, yaşıl, mavi); } əgər (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {led [MINUTE_2_END_LOCATION - i] = CRGB (qırmızı, yaşıl, mavi); } əgər (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {led [HOUR_1_END_LOCATION - i] = CRGB (qırmızı, yaşıl, mavi); } əgər (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {led [HOUR_2_END_LOCATION - i] = CRGB (qırmızı, yaşıl,mavi); } gecikmə (34); FastLED.show (); }} başqa halda (seçin == 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); gecikmə (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {led = CRGB (qırmızı, yaşıl, mavi); } FastLED.show (); gecikmə (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Qara; } FastLED.show (); gecikmə (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {led = CRGB (qırmızı, yaşıl, mavi); } FastLED.show (); gecikmə (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Qara; } FastLED.show (); gecikmə (200); }} // Rəngli velosiped funksiyası void setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; yaşıl-; əgər (yaşıl <= 0) {qırmızı = 255; redDown = yalan; greenDown = doğru; }} başqa halda (greenDown == true && blueDown == false) {green ++; mavi--; əgər (mavi <= 0) {yaşıl = 255; greenDown = yalan; blueDown = doğru; }} başqa halda (blueDown == true && redDown == false) {blue ++; qırmızı-; əgər (qırmızı <= 0) {mavi = 255; blueDown = yalan; redDown = doğru; }}} başqa {red = 0; yaşıl = 0; mavi = 255; }} // Serial Monitor funksiyasına çap et void printToConsole () {Serial.print ("Current Time:"); 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 ); əgər (i % 2 == 0) {Serial.print (""); }} Serial.println (""); for (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (leds ); əgər (((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 ); əgər (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); üçün (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (leds ); əgər (((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 (ledlər [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (led ); } Serial.println (); Serial.println (); }

Addım 27: Zövq alın

Şəkil
Şəkil

Nəticə olaraq, bu saatı izləmək çox gözəldir və onu ələ keçirdikdən sonra oxumaq nisbətən asandır. Öz saat layihənizi edirsinizsə, mənə bildirin!

Tövsiyə: