Mục lục:

Đồng hồ bấm giờ Arduino đơn giản, thiết thực: 4 bước
Đồng hồ bấm giờ Arduino đơn giản, thiết thực: 4 bước

Video: Đồng hồ bấm giờ Arduino đơn giản, thiết thực: 4 bước

Video: Đồng hồ bấm giờ Arduino đơn giản, thiết thực: 4 bước
Video: Arduino | Đồng hồ thời gian thực DS3231 + LCD 2024, Tháng Chín
Anonim
Đồng hồ bấm giờ Arduino đơn giản, thiết thực
Đồng hồ bấm giờ Arduino đơn giản, thiết thực

Tìm kiếm đồng hồ bấm giờ Arduino trên web. Bạn có thể vừa làm điều đó, nếu bạn ở đây. Từ kinh nghiệm cá nhân, tôi có thể nói với bạn rằng bất kỳ đồng hồ bấm giờ nào trên internet đều quá phức tạp (về mã, dành cho người mới bắt đầu) hoặc quá đơn giản hóa và không thực tế, như những chiếc đồng hồ chỉ đếm giây mà không cần đặt lại.

Bạn cũng nghĩ vậy hả? Cũng đoán những gì. Tôi đã làm được, và hơn thế nữa, tôi trực tiếp lấy thông tin đầu vào của mình từ hàm millis () - một dãy số vô tận (cho đến 49 ngày hoặc bất cứ thứ gì). Phần tốt nhất? Nó chỉ có một dòng.

Đặt lại, là phần khó thực sự của đồng hồ bấm giờ. Đối với các lập trình viên trung cấp, nếu bạn chưa có, hãy tiếp tục và cố gắng tự làm điều này, với giây, phút và giờ cùng nhau. Bạn sẽ hiểu những gì tôi đang nói.

Đối với người mới bắt đầu, hãy đọc tiếp và khám phá tài năng của trí óc tôi.

Đùa thôi, nhưng giải pháp mà tôi đưa ra khá gọn gàng. Đây là những gì nó là:

Bước 1: Giải pháp

Giải pháp
Giải pháp

Vì vậy, vấn đề đang đặt lại. Những gì chúng ta muốn là một chu kỳ lặp lại liên tục của các con số, từ đầu ra vô tận của các số tuần tự (millis () - về cơ bản nó chỉ đếm mili giây hoặc thực tế là 1.024 mili giây, nhưng bất cứ điều gì).

Điều đầu tiên nghĩ đến là sử dụng sự khác biệt, như time1 -time2 và độ trễ. Quên đi. Cần ít nhất sáu dòng mã và một câu lệnh if để khởi động.

Vì vậy, đây là cách để làm điều đó. Chúng tôi có một giới hạn (59). Chúng tôi muốn mọi thứ từ 0 đến 59 lặp đi lặp lại. Thế nào?

Điều gì sẽ xảy ra nếu… chúng ta lấy phần còn lại… của hàm mili chia cho 59…. Chơi lô tô!

Vì vậy, nó phải như vậy:

(60 [là giá trị ban đầu vì giới hạn là 59] + mili () / 1000 [1000 mili giây là một giây])% 60

Ok, lemme giải thích. (%) hoặc modulus, về cơ bản là một toán tử như (+) để tìm phần còn lại. Như 9% 2 = 1.

Vì thế:

  • phần còn lại của (60 + 0)% 60 = 0
  • phần còn lại của (60 + 1)% 60 = 1
  • phần còn lại của (60 + 58)% 60 = 58
  • phần còn lại của (60 + 59)% 60 = 59
  • phần còn lại của (60 + 60)% 60 = 60
  • phần còn lại của (60 + 61)% 60 = 1

Nhìn thấy!

Bây giờ, cho các bộ phận.

Bước 2: Các bộ phận

Các bộ phận
Các bộ phận

Không được nhiều

  1. Arduino bất kỳ
  2. Bất kỳ màn hình nào (Tôi đã sử dụng OLED 0,96 ", nhưng bạn có thể sử dụng bất cứ thứ gì bạn có, chỉ cần đảm bảo đặt đúng các biến vào các chức năng hiển thị của màn hình của bạn.)

Đó là nó.

Bước 3: Mã

Đây rồi. Nó được nhận xét khá rõ ràng, vì vậy sẽ không có vấn đề gì. Thư viện và init cho 0,96 OLED có trong mã. Hãy thay thế nó bằng màn hình của riêng bạn nếu nó khác.

// Thư viện OLED 0,96"

#bao gồm

#bao gồm

#bao gồm

#bao gồm

// Đơn vị OLED 0,96"

#define OLED_RESET 4

Màn hình Adafruit_SSD1306 (OLED_RESET);

int giây;

int phút;

int giờ;

void setup () {

// Một số đơn vị OLED 0,96 khác

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay (); display.setTextSize (2); display.setTextColor (TRẮNG); }

void loop () {

giây = (60 + mili () / 1000)% 60;

phút = (60 + mili () / 60000)% 60; giờ = (25 + mili () / 3600000)% 25;

display.clearDisplay ();

display.setCursor (0, 22); // in số giờ kể từ khi đặt lại display.print (giờ); display.print ("h:");

// in số phút kể từ khi đặt lại

display.print (phút);

display.print ("m:");

// in số giây kể từ khi đặt lại display.print (seconds); display.print ("s");

display.setCursor (0, 0);

display.print ("Đồng hồ bấm giờ"); display.drawLine (0, 18, 128, 18, WHITE); display.display ();

}

Bước 4: Kết thúc En…

Kết thúc En…
Kết thúc En…

À chính nó đấy! Bây giờ hãy làm những gì bạn muốn với nó. Thời gian một số quả trứng, hoặc tiếp quản khu vực lân cận của bạn.

Chúc mừng, Aarush

Đề xuất: