Mục lục:

Đồng hồ chính xác: 3 bước
Đồng hồ chính xác: 3 bước

Video: Đồng hồ chính xác: 3 bước

Video: Đồng hồ chính xác: 3 bước
Video: Kiến thức đồng hồ #1: Hướng dẫn chỉnh đồng hồ đúng cách -Sai lầm thường gặp khi chỉnh lịch thứ ngày 2024, Tháng mười một
Anonim
Đồng hồ chính xác
Đồng hồ chính xác

Tất cả chúng ta đều cần đồng hồ, vậy tại sao không tự tạo đồng hồ cho riêng bạn trong tài liệu hướng dẫn này, tôi sẽ chỉ cho bạn cách tạo Đồng hồ chính xác khi bạn đặt sẽ tự động theo dõi thời gian hiện tại trong nền của mọi thứ. Trong khi cũng chỉ cần rất ít nguồn cung cấp và không cần hàn.

Quân nhu

Đầu tiên, bạn sẽ cần một Arduino nhưng bất kỳ Arduino nào cũng sẽ hoạt động

Tiếp theo, bạn sẽ cần một loại dây nhảy chung.

2 công tắc nút ấn Sparkfun 12mm

Breadboard truyền thống

và màn hình LCD 1602 16 chân

Bước 1: Đấu dây

Đấu dây
Đấu dây

Để chiếc đồng hồ này hoạt động, bạn cần phải lên dây theo một cách rất cụ thể, nếu không bạn sẽ nhận được một loạt các số ngẫu nhiên trên màn hình chứ không phải là thời gian.

Bước 2: Mã

Vì chúng tôi không sử dụng RTC nên mã sẽ hơi dài nhưng may mắn thay, tôi đã thực hiện tất cả công việc khó khăn cho bạn và cung cấp nó ở đây.

Chỉ cần Sao chép và Dán cái này vào Arduino IDE hoặc Trình chỉnh sửa web.

#include "LiquidCrystal.h"

// Điều này xác định hệ thống dây màn hình LCD tới các cổng DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Cài đặt ràng buộc màn hình LCD kỹ thuật số int cs = 9; // chân 9 cho độ tương phản PWM const int Contra = 100; // độ tương phản mặc định

// hiển thị thời gian ban đầu là 12:59:45 PM int h = 12; int m = 59; int s = 45; int flag = 1; //BUỔI CHIỀU

// Các nút đặt thời gian int button1; int button2;

// Định nghĩa chân cho Nút đặt thời gian int hs = 0; // chân 0 cho Cài đặt giờ int ms = 1; // chân 1 cho Cài đặt phút

// Hết thời gian đèn nền const int Time_light = 150; int bl_TO = Time_light; // Backlight Time-Out int bl = 10; // Chân đèn nền const int backlight = 120; // không còn nữa thì 7mA !!!

// Để đọc Thời gian chính xác, hãy sử dụng Đồng hồ thời gian thực của Arduino chứ không chỉ delay () static uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // tránh các điện trở Pullup bên ngoài cho Nút 1 pinMode (ms, INPUT_PULLUP); // và Nút 2 analogWrite (cs, tương phản); // Điều chỉnh Tương tự VO analogWrite (bl, backlight); // Turn trên Backlight now = millis (); // đọc giá trị ban đầu RTC}

void loop () {lcd.begin (16, 2); // mỗi giây // Cập nhật màn hình LCD // In TIME theo Giờ, Min, Sec + AM / PM lcd.setCursor (0, 0); lcd.print ("Thời gian"); if (h <10) lcd.print ("0"); // luôn có 2 chữ số lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (các);

if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // cho Dòng 2 lcd.print ("Đồng hồ chính xác");

// cải thiện sự thay thế của độ trễ (1000) // Độ chính xác tốt hơn nhiều, không còn phụ thuộc vào thời gian thực hiện vòng lặp

for (int i = 0; i <5; i ++) // tạo 5 vòng lặp 200ms thời gian, để phản hồi nút nhanh hơn {

while ((now-last_time) <200) // delay200ms {now = millis (); } // vòng lặp 200ms bên trong last_time = now; // chuẩn bị cho vòng lặp tiếp theo

// đọc Cài đặt Nút button1 = digitalRead (hs); // Đọc Nút Nút2 = digitalRead (ms);

// Hết thời gian đèn nền bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Đèn nền TẮT bl_TO ++; } // Nhấn bất kỳ để kích hoạt Backlight if (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, đèn nền); // đợi cho đến khi Nút được giải phóng while ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Đọc Buttons button2 = digitalRead (ms); }} else // Xử lý Nút 1 hoặc Nút 2 khi được nhấn trong khi Đèn nền bật {if (button1 == 0) {h = h + 1; bl_TO = Time_light; analogWrite (bl, đèn nền); }

if (button2 == 0) {s = 0; m = m + 1; bl_TO = Time_light; analogWrite (bl, đèn nền); }

/ * ---- quản lý tràn giây, phút, giờ sáng / chiều ---- * / if (s == 60) {s = 0; m = m + 1; } if (m == 60) {m = 0; h = h + 1; } if (h == 13) {h = 1; cờ = cờ + 1; if (flag == 2) flag = 0; }

if ((button1 == 0) | (button2 == 0)) // Cập nhật hiển thị nếu nhấn nút đặt thời gian {// Cập nhật màn hình LCD // In TIME theo Giờ, Min, Sec + AM / PM lcd.setCursor (0, 0); lcd.print ("Thời gian"); if (h <10) lcd.print ("0"); // luôn có 2 chữ số lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (các);

if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // cho Dòng 2 lcd.print ("Đồng hồ chính xác"); }

} // kết thúc nếu khác} // kết thúc cho

// vòng lặp 1000ms bên ngoài

s = s + 1; // giây tăng dần. đếm // ---- quản lý tràn giây, phút, giờ sáng / chiều ---- if (s == 60) {s = 0; m = m + 1; } if (m == 60) {m = 0; h = h + 1; } if (h == 13) {h = 1; cờ = cờ + 1; if (flag == 2) flag = 0; }

// Kết thúc vòng lặp}

Bước 3: Sơ đồ (Đây không thực sự là một bước)

Sơ đồ (Đây không thực sự là một bước)
Sơ đồ (Đây không thực sự là một bước)

Nếu bất cứ ai đọc đây là một mọt sách công nghệ thì đây cũng là một sơ đồ bạn có thể nhìn nó phát điên.

Hãy tận hưởng và vui vẻ và hơn hết là luôn tươi mới.

Đề xuất: