Mục lục:
Video: Đồng hồ chính xác: 3 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
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
Để 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)
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:
Đồng hồ đo điện áp chính xác & chính xác Arduino (0-90V DC): 3 bước
Đồng hồ đo điện áp chính xác & chính xác Arduino (0-90V DC): Trong tài liệu hướng dẫn này, tôi đã chế tạo một vôn kế để đo điện áp cao DC (0-90v) với độ chính xác và độ chính xác tương đối bằng cách sử dụng Arduino Nano. Các phép đo thử nghiệm tôi đã thực hiện đủ chính xác, chủ yếu là trong khoảng 0,3v so với điện áp thực được đo bằng
Xúc xắc điện tử - Arduino Die / xúc xắc 1 đến 6 Xúc xắc + D4, D5, D8, D10, D12, D20, D24 và D30: 6 bước (có Hình ảnh)
Xúc xắc điện tử - Arduino Die / xúc xắc 1 đến 6 Xúc xắc + D4, D5, D8, D10, D12, D20, D24 và D30: Đây là một dự án arduino đơn giản để tạo ra một con xúc xắc điện tử. Có thể chọn cho 1 đến 6 viên xúc xắc hoặc 1 trong 8 viên xúc xắc đặc biệt. Lựa chọn được thực hiện đơn giản bằng cách xoay một bộ mã hóa quay. Đây là các tính năng: 1 xúc xắc: hiển thị các chấm lớn 2-6 xúc xắc: hiển thị các chấm
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s): 3 bước
Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s): Có thể hướng dẫn này sẽ chỉ cho bạn cách đặt thời gian trên Đồng hồ thời gian thực DS3231 bằng Arduino và một ứng dụng Java nhỏ sử dụng kết nối nối tiếp của Arduino. Logic cơ bản của chương trình này: 1. Arduino gửi một yêu cầu nối tiếp
Một thí nghiệm chỉnh lưu chính xác: 11 bước
Thử nghiệm chỉnh lưu chính xác: Gần đây tôi đã thực hiện một thử nghiệm về mạch chỉnh lưu chính xác và nhận được một số kết luận sơ bộ. Xét rằng mạch chỉnh lưu chính xác là mạch thông dụng, kết quả của thí nghiệm này có thể cung cấp một số thông tin tham khảo