Mục lục:

Đồng hồ treo tường Cryptic: 27 bước (có hình ảnh)
Đồng hồ treo tường Cryptic: 27 bước (có hình ảnh)

Video: Đồng hồ treo tường Cryptic: 27 bước (có hình ảnh)

Video: Đồng hồ treo tường Cryptic: 27 bước (có hình ảnh)
Video: TÍNH DỪNG, ĐỒNG LIÊN KẾT TRÊN DỮ LIỆU BẢNG (Panel unitroot test, panel cointegration test) 2024, Tháng bảy
Anonim
Đồng hồ treo tường bí ẩn
Đồng hồ treo tường bí ẩn

Thời gian trôi qua là thứ mà chúng ta không thể kiểm soát được. Nó xảy ra với tốc độ tương tự nếu chúng ta đang ngủ, đang thức, đang buồn chán hoặc đang tham gia. Với những sự kiện hiện tại, điều quan trọng cần nhớ là thời gian sẽ trôi qua. Trong khi chúng ta đang chờ đợi thời gian trôi qua, tại sao không tạo ra thứ gì đó khiến thời gian trôi qua hấp dẫn hơn để xem.

Đồng hồ này được lấy cảm hứng từ Mengenlehreuhr được tìm thấy ở Berlin, Đức và có thể được đọc theo cách tương tự. Cũng giống như bản gốc, nó cho biết thời gian bằng các trường màu được chiếu sáng.

Nó có 96 đèn LED chiếu sáng 52 vùng chữ số. Không giống như bản gốc, nó có thiết kế hình tròn bao gồm một vòng giây, thay vì bố cục thanh ngang. Dải bên ngoài chỉ giây kết hợp với dấu chấm ở giữa, hai dải tiếp theo chỉ phút, với các dải cuối cùng bên trong chỉ giờ.

Nếu bạn có một số phế liệu và thời gian dư thừa trong tay, tại sao không sử dụng thời gian này để làm một cái gì đó sẽ hiển thị nó!

Có một số thay đổi tôi sẽ thực hiện đối với dự án này nếu tôi được thực hiện lại. Đầu tiên, tôi sơn khung và bảng LED màu trắng thay vì màu đen. Điều này sẽ phản chiếu nhiều ánh sáng hơn qua thấu kính lớn ở phía trước. Tôi cũng sẽ đợi cho đến khi kết thúc để lắp đèn LED. Tôi cần bảng được hoàn thành sớm hơn để nó có thể giúp tôi viết mã. Với điều đó, trước tiên chúng ta hãy học cách đọc nó!

Hình ảnh
Hình ảnh

Bước 1: Cách đọc Đồng hồ

Đồng hồ được đọc từ các vòng tròn bên trong ra bên ngoài. Vòng trong của bốn trường biểu thị năm giờ đầy đủ, mỗi trường cùng với vòng thứ hai, cũng gồm bốn trường, mỗi trường biểu thị một giờ đầy đủ, hiển thị giá trị giờ ở định dạng 24 giờ. Vòng thứ ba bao gồm mười một trường, mỗi trường biểu thị năm phút đầy đủ, vòng tiếp theo có bốn trường khác, mỗi trường đánh dấu một phút đầy đủ. Cuối cùng, vòng ngoài của 29 trường biểu thị giây chẵn với đèn ở trung tâm nhấp nháy để biểu thị giây lẻ (khi sáng) hoặc số chẵn (khi không sáng).

Hình ảnh
Hình ảnh

Ví dụ, hình trên có 1 trong năm chữ số giờ, 3 trong số một chữ số giờ, 8 trong số năm chữ số phút, 4 trong số một chữ số phút, và 23 trong số hai chữ số thứ hai và chữ số thứ hai ở giữa sáng lên.

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

Hình ảnh
Hình ảnh

Thời gian hiển thị ở trên là: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 3:17:11 CH

Hình ảnh
Hình ảnh

Thời gian hiển thị ở trên là: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 5:18:33 PM

Bước 2: Công cụ và vật liệu

Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu

Vật liệu Điện tử:

  • Arduino Nano
  • Đồng hồ thời gian thực
  • Đèn LED địa chỉ
  • Cắm điện
  • Dây cáp điện
  • Cắm điện USB
  • Điện trở phụ thuộc ánh sáng và điện trở cân bằng (nếu bạn muốn nó mờ vào ban đêm)
  • Dây điện

Vật liệu chế biến gỗ:

  • Ván ép 3/4 inch
  • Ván ép mỏng
  • Gỗ phế liệu (Tôi đã sử dụng 2x4s nhưng gỗ cứng cũng sẽ hoạt động)
  • Sơn
  • Tấm acrylic 30 x 36 in. (Tìm thấy tại cửa hàng sửa chữa nhà ở địa phương)
  • Window Tint (cố gắng tìm nguồn cục bộ. Nếu không có sẵn, bạn có thể tìm một trang tính đủ lớn tại đây)
  • Window Tint Application Fluid (Tôi đã sử dụng nước trộn với dầu gội trẻ em trong một chai xịt)
  • Windex
  • Giấy bán thịt
  • Vít
  • Xịt keo dính
  • Keo dính
  • Keo dán

Công cụ:

  • Cái thước kẻ
  • Dao x-acto
  • Băng
  • Băng keo hai mặt
  • Compa
  • Đồ gá cắt vòng tròn
  • Ghép hình
  • Cưa
  • Spindle Sander
  • Palm Sander
  • Máy đánh đĩa
  • Bảng định tuyến
  • Awl
  • Máy khoan và mũi khoan / Trình điều khiển
  • Kẹp
  • Sắt hàn
  • Hàn
  • Dụng cụ cắt dây

Bước 3: Lắp ráp các mẫu

Lắp ráp các mẫu
Lắp ráp các mẫu
Lắp ráp các mẫu
Lắp ráp các mẫu

Đối với mẫu lớn, hãy in nó ra bằng cách sử dụng cài đặt áp phích trong Adobe Reader. Cắt bỏ các lề cho từng tờ giấy và dán băng dính lại với nhau. Các đường dọc, ngang và chéo sẽ giúp sắp xếp mẫu. Tất cả các trang đều có những con số nhỏ trên đó để giúp giữ chúng có tổ chức nếu chúng không theo thứ tự.

Tất cả các mẫu và tệp cần thiết được tìm thấy trong Bước 26.

Bước 4: Cắt thô các vòng tròn

Vòng tròn cắt thô
Vòng tròn cắt thô
Vòng tròn cắt thô
Vòng tròn cắt thô

Đặt hai mẫu trên một tấm ván ép 3/4 inch, vẽ các vòng tròn lớn hơn một chút so với nhu cầu bằng compa. Dùng máy ghép hình, cắt bỏ hình thô.

Bước 5: Cắt theo kích thước

Cắt theo kích cỡ
Cắt theo kích cỡ
Cắt theo kích cỡ
Cắt theo kích cỡ

Sử dụng một đồ gá cắt hình tròn trên máy cưa vòng, cắt các hình tròn theo kích thước cuối cùng.

Bước 6: Áp dụng Mẫu

Áp dụng Mẫu
Áp dụng Mẫu
Áp dụng Mẫu
Áp dụng Mẫu
Áp dụng Mẫu
Áp dụng Mẫu

Sử dụng keo xịt, dán từng mẫu thành hình tròn. Chèn một chiếc đinh vào giữa mẫu để căn giữa nó trên hình tròn.

Bước 7: Cắt mẫu

Cắt mẫu
Cắt mẫu
Cắt mẫu
Cắt mẫu
Cắt mẫu
Cắt mẫu

Sử dụng ghép hình, cắt từng cửa sổ riêng lẻ của mẫu. Nếu bạn có quyền truy cập vào máy CNC, bước này sẽ dễ dàng hơn nhiều! Tôi đã khoan một lỗ trên mỗi cửa sổ để giúp thực hiện quá trình này. Khi bạn bắt đầu cắt, mẫu có thể bắt đầu rời ra. Nếu điều này xảy ra, bạn có thể cố định nó bằng những miếng băng dính nhỏ.

Bước 8: Chà nhám

Chà nhám
Chà nhám
Chà nhám
Chà nhám
Chà nhám
Chà nhám

Dùng giấy nhám bôi vào que, máy chà nhám trục chính và máy chà nhám cọ, chà nhám và làm phẳng vết cắt thô do ghép hình để lại.

Bước 9: Khoan lỗ cho đèn LED

Lỗ khoan cho đèn LED
Lỗ khoan cho đèn LED
Lỗ khoan cho đèn LED
Lỗ khoan cho đèn LED
Lỗ khoan cho đèn LED
Lỗ khoan cho đèn LED
Lỗ khoan cho đèn LED
Lỗ khoan cho đèn LED

Đánh dấu tâm của mỗi lỗ bằng dùi và khoan lỗ thông gió cho đèn LED. Tôi đã sử dụng một thanh hướng dẫn để giúp giữ cho mũi khoan vuông góc với phôi của tôi và một tấm ván sau để tránh thổi gỗ ở mặt sau.

Bước 10: Kết hợp các bảng

Kết hợp các bảng
Kết hợp các bảng
Kết hợp các bảng
Kết hợp các bảng
Kết hợp các bảng
Kết hợp các bảng

Hoán đổi bảng mặt trước và mặt sau và theo dõi các phần của khung ở mặt sau bảng LED. Di chuyển khung trở lại mặt trước của bảng LED và khoan lỗ và bắt vít các mảnh lại với nhau.

Xem ghi chú hình ảnh để biết thêm thông tin.

Bước 11: Chèn đèn LED

Chèn đèn LED
Chèn đèn LED
Chèn đèn LED
Chèn đèn LED

Đẩy các đèn LED qua mặt sau của bảng LED. Các lỗ phải được đặt cách nhau vừa đủ để bạn không cần phải cắt bất kỳ dây nào ngoại trừ việc di chuyển từ vòng tròn này sang vòng tròn tiếp theo.

Từ phía sau, các đèn LED bắt đầu ở trung tâm và sau đó chạy ngược chiều kim đồng hồ rồi đến vòng tiếp theo.

Bước 12: Đính kèm Phân đoạn 1

Đính kèm phân đoạn 1
Đính kèm phân đoạn 1
Đính kèm phân đoạn 1
Đính kèm phân đoạn 1
Đính kèm phân đoạn 1
Đính kèm phân đoạn 1

Cắt 9 phân đoạn từ mẫu "Phân đoạn 1" được đính kèm trên ván ép 3/4 inch (tìm thấy ở bước 26). Gắn vào bảng LED bằng keo và kẹp. Nếu thiếu kiên nhẫn bạn cũng có thể dùng đinh để kẹp vào vị trí.

Sau khi khô, chà nhám mép bằng máy đánh đĩa.

Bước 13: Sơn

Sơn
Sơn
Sơn
Sơn
Sơn
Sơn
Sơn
Sơn

Phun sơn cả bảng LED và khung. Nếu tôi làm điều này một lần nữa, tôi sẽ chọn sử dụng sơn màu trắng thay vì màu đen vì nó sẽ phản chiếu nhiều hơn qua ống kính.

Bước 14: Phân đoạn 2

Phân đoạn 2
Phân đoạn 2
Phân đoạn 2
Phân đoạn 2
Phân đoạn 2
Phân đoạn 2

Cắt 9 phân đoạn từ mẫu "Phân đoạn 2" được gắn từ gỗ dày 2 3/8 inch (tìm thấy trong bước 26). Tôi đã sử dụng một số mảnh ghép 2x4 từ xung quanh cửa hàng. Làm khô các phân đoạn vừa khít và đảm bảo nó vừa khít bằng kẹp băng. Nếu mọi thứ đã kiểm tra, hãy phủ bên ngoài bằng băng keo để giữ cho keo không bị dính và để khô ít nhất một giờ trước khi chuyển sang bước tiếp theo.

Bước 15: Phân đoạn 3

Phân đoạn 3
Phân đoạn 3
Phân đoạn 3
Phân đoạn 3
Phân đoạn 3
Phân đoạn 3

Cắt 9 phân đoạn từ mẫu "Phân đoạn 3" được đính kèm từ gỗ vụn dày 3/8 inch (tìm thấy trong bước 26). Dán chúng để các đường nối từ Phân đoạn 2 nằm ở giữa mỗi Phân đoạn 3. Điều này sẽ tăng cường sức mạnh cho vòng.

Bước 16: Làm mịn vòng và sơn

Vòng trơn và sơn
Vòng trơn và sơn
Vòng và sơn mịn
Vòng và sơn mịn

Tôi đã tạo một khối chà nhám tùy chỉnh từ mảnh cắt của chiếc nhẫn lớn. Đánh nhám bên trong và bên ngoài chiếc nhẫn và lấp đầy bất kỳ vết nứt nào có thể xuất hiện trong quá trình dán keo.

Sau khi sơn mịn, phủ một vài lớp sơn đen và lớp sơn trong.

Bước 17: Cắt Acrylic

Cắt acrylic
Cắt acrylic
Cắt acrylic
Cắt acrylic
Cắt acrylic
Cắt acrylic
Cắt acrylic
Cắt acrylic

Cắt acrylic thành một hình vuông có kích thước 30 x 30 inch và đánh dấu tâm. Đính acrylic bằng băng dính hai mặt. Sử dụng một bit bộ định tuyến cắt phẳng, loại bỏ phần acrylic dư thừa

Bước 18: Áp dụng màu Window

Áp dụng màu cửa sổ
Áp dụng màu cửa sổ
Áp dụng màu cửa sổ
Áp dụng màu cửa sổ
Áp dụng màu cửa sổ
Áp dụng màu cửa sổ

Trong môi trường không có bụi, hãy gỡ bỏ lớp màng bảo vệ khỏi acrylic. Áp dụng xịt và loại bỏ lớp nền khỏi màu cửa sổ. Áp dụng màu cửa sổ dính bên xuống. Sử dụng chổi cao su hoặc thẻ tín dụng, vắt hết chất lỏng ra khỏi lớp sơn màu cửa sổ. Khi tất cả bong bóng và nếp nhăn đã được loại bỏ, hãy dùng dao sắc cắt bớt phần cửa sổ thừa.

Bước 19: Đính kèm Defuser

Đính kèm Kẻ lừa đảo
Đính kèm Kẻ lừa đảo
Đính kèm Kẻ lừa đảo
Đính kèm Kẻ lừa đảo

Tôi đã sử dụng một mảnh giấy lớn để làm chất khử mùi. Trải giấy trên một bề mặt phẳng. Phủ keo từ keo dính lên mặt khung. Trước khi keo khô, úp mặt trước của đồng hồ xuống giấy và cắt thô phần thừa. Sau khi khô, hãy sử dụng một con dao sắc để cắt bớt nước.

Bước 20: Dán cách nhiệt

Áp dụng cách nhiệt
Áp dụng cách nhiệt

Tôi đã sử dụng băng dính điện để giữ cho đường dây điện và dữ liệu tách biệt nhau.

Bước 21: Lắp ráp

Tập hợp
Tập hợp
Tập hợp
Tập hợp
Tập hợp
Tập hợp

Loại bỏ lớp bảo vệ khác khỏi acrylic. Đặt acrylic vào bên trong chiếc nhẫn với màu cửa sổ hướng lên trên. Trượt phần còn lại của đồng hồ vào vòng. Sử dụng một chiếc kẹp để tạo áp lực ánh sáng trong khi khoan một lỗ xuyên qua vòng đệm và vào bảng LED. Đây phải là khoảng 1 1/8 inch tính từ phía sau. Cẩn thận không khoan vào đèn LED. Vặn vít đầu giàn vào lỗ. Lặp lại tổng cộng tám vít xung quanh chu vi của đồng hồ.

Bước 22: Gắn điểm neo

Đính kèm điểm neo
Đính kèm điểm neo

Keo neo chỉ vào mặt sau của đồng hồ để nắp sau gắn vào. Chúng dày 3/4 inch và dài khoảng 2 inch.

Bước 23: Khoan điện và lỗ cảm biến LDR

Công suất khoan và lỗ cảm biến LDR
Công suất khoan và lỗ cảm biến LDR

Khoan một lỗ nguồn qua đáy đồng hồ cho phích cắm nguồn và một lỗ trên đỉnh cho cảm biến điện trở phụ thuộc ánh sáng (LDR).

Bước 24: Cài đặt Giá đỡ Điện tử

Cài đặt Giá đỡ Điện tử
Cài đặt Giá đỡ Điện tử
Cài đặt Giá đỡ Điện tử
Cài đặt Giá đỡ Điện tử

Lắp giá đỡ in 3D cho RTC và Arduino Nano. Kết nối tất cả các thiết bị điện tử như được hiển thị trong sơ đồ.

Bước 25: Nắp lưng

Cover lại
Cover lại
Cover lại
Cover lại
Cover lại
Cover lại
Cover lại
Cover lại

Cắt một tấm bìa sau từ ván ép mỏng chỉ nhỏ hơn mặt ngoài của đồng hồ. Khoan lỗ vào các điểm neo. Tìm tâm của mặt sau và đo ra 8 inch theo một trong hai hướng để cắt lỗ khóa (tiêu chuẩn 16 ở các trung tâm đinh tán ở Mỹ). Tôi khoan lỗ chính chỉ lớn hơn đầu vít mà tôi sẽ sử dụng và khoan lỗ lớn hơn theo một hướng. Sơn màu đen và gắn nắp vào vị trí.

Bước 26: Mã và tệp

Một lần nữa, tôi khá mới sử dụng nhiều thư viện Arduino được sử dụng ở đây nên tôi chắc chắn rằng có nhiều cách tốt hơn để sử dụng chúng.

Tôi đã viết mã để có thể dễ dàng cập nhật dựa trên số lượng đèn LED bạn đang sử dụng nếu dự án được mở rộng quy mô lên hoặc xuống. Tất cả những gì bạn cần làm là cập nhật vị trí bắt đầu và kết thúc của đèn LED cũng như số lượng đèn LED là một phần của mỗi chữ số.

Tôi đã thêm một vài hoạt ảnh phát khi khởi động cũng như vào giờ. Chúng là ngẫu nhiên dựa trên trình tạo số ngẫu nhiên mà nó có trên tàu.

Bạn có thể đặt đồng hồ chuyển động qua các màu hoặc giữ nguyên ở một trạng thái tĩnh. Bạn thậm chí có thể đánh dấu chữ số chỉ báo để giúp đọc thời gian như trong phần giới thiệu.

Hãy chỉnh sửa và thay đổi mã như bạn muốn.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; boolean timeChange = false; boolean printTime = false; // Đặt thành true nếu bạn muốn xem kết quả đầu ra trong bảng điều khiển. Hữu ích cho việc gỡ lỗi. boolean redDown = true; boolean greenDown = false; boolean blueDown = false; chu trình boolean = false; // Đặt true nếu bạn muốn màu đồng hồ theo chu kỳ boolean highlight = true; // Đặt true để tô sáng 'chữ số cuối cùng'. // Vị trí bắt đầu và kết thúc của mỗi nhóm thời gian 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; // Các cấp số nhân dùng để chia nhỏ thời gian const int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Thay đổi điều này để tăng tốc hoặc làm chậm hoạt ảnh khởi động const int CYCLE_SPEED = 1; // Thay đổi tỷ lệ ở đây cho chu kỳ thay đổi màu (phải trên 1) // Khai báo các biến int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int giờ1 = 0; int giờ2 = 0; int phút1 = 0; int phút2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t sáng = 255; int numberOfAnimations = 5; int ngẫu nhiên = 0; // Đặt Màu uint8_t red = 0; uint8_t green = 0; uint8_t blue = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Xác định mảng led CRGB led [NUM_LEDS]; void setup () {Serial.begin (19200); FastLED.addLeds (đã dẫn, NUM_LEDS); LEDS.setBrightness (sáng); FastLED.clear (); rtc.begin (); // Dòng bỏ ghi chú bên dưới để đặt thời gian. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Khởi động animation animate (randomness); } void loop () {// Lấy thời gian DateTime now = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = sai; // Sử dụng chúng để đặt thời gian theo cách thủ công mà không cần RTC. Hữu ích cho việc gỡ lỗi // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Đặt lại tất cả các bit về 0 for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Black; } // Đặt giờ // Đặt giờ 1 giờ1 = (currentHour% MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Điều này sẽ đếm tổng số đèn LED của đơn vị thời gian sáng lên trong (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {for (int i = (HOUR_1_START_LOCATION + hour1 - 1); i> = (HOUR_1_START_LOCATION + giờ1 - LEDS_PER_HOUR_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Đặt giờ 2 giờ2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Điều này sẽ đếm tổng số đèn LED của đơn vị thời gian sáng lên trong (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {for (int i = (HOUR_2_START_LOCATION + hour2 - 1); i> = (HOUR_2_START_LOCATION + giờ2 - LEDS_PER_HOUR_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Đặt phút // Đặt phút 1 phút1 = (currentMinute% MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Điều này sẽ đếm tổng số đèn LED của đơn vị thời gian sáng lên trong (int i = MINUTE_1_START_LOCATION; i 0) // && minutes1 <24) {for (int i = (MINUTE_1_START_LOCATION + minutes1 - 1); i> = (MINUTE_1_START_LOCATION + phút1 - LEDS_PER_MINUTE_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Đặt phút 2 phút2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Điều này sẽ đếm tổng số đèn LED của đơn vị thời gian sáng lên trong (int i = MINUTE_2_START_LOCATION; i 0) // && minutes2 <22) {for (int i = (MINUTE_2_START_LOCATION + minutes2 - 1); i> = (MINUTE_2_START_LOCATION + phút2 - LEDS_PER_MINUTE_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Đặt thứ hai if (currentSecond! = LastSecond) {timeChange = true; } // Đặt thứ hai 1 second1 = currentSecond% MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (đỏ, lục, lam); } // Đặt thứ hai 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 (highlight_red, highlight_green, highlight_blue); }} lastSecond = currentSecond; // Đếm chu kỳ của chương trình và gọi hàm setColor để thay đổi màu của đèn LED từng chu kỳ CYCLE_SPEED. if (cycleCount sáng) // {// fadeValue = sáng; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // In thời gian hiện tại ra bảng điều khiển if (timeChange == true && printTime == true) {printToConsole (); }} // Chức năng hoạt ảnh thêm nhiều hoạt ảnh hơn ở đây nếu bạn muốn void animate (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (đỏ lục lam); FastLED.show (); trì hoãn (START_UP_DELAY); } for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; FastLED.show (); trì hoãn (START_UP_DELAY); }} else if (select == 1) {for (int i = 0; i <250; i ++) {int light = random (95); led [ánh sáng] = CRGB (đỏ, lục, lam); FastLED.show (); }} else if (select == 2) {leds [0] = CRGB (red, green, blue); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION + i] = CRGB (đỏ, lục, lam); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_START_LOCATION + i] = CRGB (đỏ, lục, lam); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_START_LOCATION + i] = CRGB (đỏ, lục, lam); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (đỏ, lục, lam); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (đỏ, lục, lam); } trễ (34); FastLED.show (); }} else if (select == 3) {leds [0] = CRGB (red, green, blue); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_END_LOCATION - i] = CRGB (đỏ, lục, lam); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_END_LOCATION - i] = CRGB (đỏ, lục, lam); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_END_LOCATION - i] = CRGB (đỏ, lục, lam); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_END_LOCATION - i] = CRGB (đỏ, lục, lam); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (đỏ, lục,màu xanh dương); } trễ (34); FastLED.show (); }} else if (select == 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); chậm trễ (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (đỏ, lục, lam); } FastLED.show (); chậm trễ (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Đen; } FastLED.show (); chậm trễ (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (đỏ, lục, lam); } FastLED.show (); chậm trễ (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Đen; } FastLED.show (); chậm trễ (200); }} // Hàm xoay vòng màu void setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; màu xanh lá--; if (green <= 0) {red = 255; redDown = false; greenDown = true; }} else if (greenDown == true && blueDown == false) {green ++; màu xanh dương--; if (blue <= 0) {green = 255; greenDown = false; blueDown = true; }} else if (blueDown == true && redDown == false) {blue ++; màu đỏ--; if (red <= 0) {blue = 255; blueDown = false; redDown = true; }}} else {red = 0; xanh lá cây = 0; xanh lam = 255; }} // Chức năng Print to Serial Monitor 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 ); 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 ); if (((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 ); if (((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 (đã dẫn [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

Bước 27: Tận hưởng

Hình ảnh
Hình ảnh

Kết luận, chiếc đồng hồ này thật tuyệt vời để xem và một khi bạn hiểu rõ về nó, nó tương đối dễ đọc. Nếu bạn thực hiện dự án đồng hồ của riêng mình, hãy cho tôi biết!

Đề xuất: