Arduino:
Lấy ngày hiện tại

Làm thế nào:

Hãy khiến Arduino của chúng ta thông minh về ngày tháng. Chúng ta sẽ sử dụng một mô-đun RTC, như DS3231, có độ chính xác cao và có pin dự phòng.

#include <Wire.h>
#include <RTClib.h>

RTC_DS3231 rtc;

void setup() {
  Serial.begin(9600);
  
  if (!rtc.begin()) {
    Serial.println("Không tìm thấy RTC");
    while (1);
  }
  
  if (rtc.lostPower()) {
    Serial.println("RTC mất nguồn, hãy thiết lập thời gian!");
    // dòng sau đây thiết lập RTC với ngày và giờ khi bản sketch này được biên dịch
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  DateTime now = rtc.now();
  
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  
  delay(3000); // đợi 3 giây trước khi cập nhật ngày
}

Kết quả Mẫu:

2023/4/5

Tìm hiểu sâu:

Bối cảnh lịch sử? Những máy tính đầu tiên không cần biết ngày tháng. Điều này chỉ trở nên quan trọng khi chúng ta bắt đầu ghi lại và có các hệ thống đa người dùng. Ngày nay, điều đó đã trở nên được kỳ vọng.

Các phương án thay thế cho RTCs bao gồm sử dụng Giao thức Thời gian Mạng (NTP) khi kết nối với internet, hoặc các mô-đun GPS cung cấp thông tin thời gian và ngày chính xác.

Chi tiết thực hiện quan trọng. Không phải tất cả RTCs đều được tạo ra như nhau. Một số, như DS1307, ít chính xác hơn và có thể bị lệch hơn theo thời gian. Thư viện như RTClib.h che giấu sự khác biệt giữa các mô-đun, làm cho cuộc sống của bạn dễ dàng hơn.

Sử dụng NTP qua WiFi đòi hỏi một cách tiếp cận khác. Bạn cần một ESP8266 hoặc ESP32 với truy cập internet, và bao gồm các thư viện như WiFi.hNTPClient.h. Mẫu mã code thay đổi—bạn thực hiện các yêu cầu định kỳ tới một máy chủ thời gian và phân tích kết quả cho ngày tháng.

Xem thêm: