Arduino Đồng hồ LCD
Trong bài hướng dẫn này, chúng ta sẽ học cách làm đồng hồ LCD bằng:
- Đọc ngày và giờ từ mô-đun RTC DS3231 và hiển thị trên LCD I2C 16x2
- Đọc ngày và giờ từ mô-đun RTC DS1307 và hiển thị trên LCD I2C 16x2
Bạn có thể chọn một trong hai mô-đun RTC: DS3231 và DS1307. Xem DS3231 vs DS1307
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | LCD I2C | ||
| 1 | × | Real-Time Clock DS3231 Module | ||
| 1 | × | Alternatively, Real-Time Clock DS1307 Module | ||
| 1 | × | CR2032 battery | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về mô-đun RTC LCD, DS3231 và DS1307
Nếu bạn chưa biết về LCD, DS3231 và DS1307 (cấu hình chân, cách hoạt động, cách lập trình ...), hãy tìm hiểu về chúng trong các bài hướng dẫn sau:
Cài đặt thư viện LCD và RTC
- Đi tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
- Tìm kiếm “LiquidCrystal I2C”, sau đó tìm thư viện LiquidCrystal_I2C của Frank de Brabander
- Nhấp vào nút Cài đặt để cài đặt thư viện LiquidCrystal_I2C.

- Tìm kiếm “RTClib”, sau đó tìm thư viện RTC của Adafruit. Thư viện này hoạt động với cả DS3231 và DS1307
- Nhấp vào nút Cài đặt để cài đặt thư viện RTC.

- Bạn có thể được yêu cầu cài đặt thêm một số phụ thuộc thư viện khác
- Nhấn nút Cài đặt Tất cả để cài đặt tất cả các phụ thuộc của thư viện.

Đọc thời gian từ mô-đun RTC DS3231 và hiển thị lên LCD
Sơ đồ dây điện

This image is created using Fritzing. Click to enlarge image
Mã Arduino - DS3231 và LCD
/*
* Mã Arduino này được phát triển bởi newbiely.vn
* Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc.
* Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập:
* https://newbiely.vn/tutorials/arduino/arduino-lcd-clock
*/
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows
RTC_DS3231 rtc;
void setup() {
Serial.begin(9600);
lcd.init(); // initialize the lcd
lcd.backlight(); // open the backlight
// SETUP RTC MODULE
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (true)
;
}
// automatically sets the RTC to the date & time on PC this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop() {
DateTime now = rtc.now();
int year = now.year();
int month = now.month();
int day = now.day();
int hour = now.hour();
int minute = now.minute();
int second = now.second();
lcd.clear();
lcd.setCursor(0, 0); // start to print at the first row
lcd.print("Date: ");
lcd.print(year);
lcd.print("/");
lcd.print(month);
lcd.print("/");
lcd.print(day);
lcd.setCursor(0, 1); // start to print at the second row
lcd.print("Time: ");
lcd.print(hour);
lcd.print(":");
lcd.print(minute);
lcd.print(":");
lcd.print(second);
delay(1000); // Update every second
}
Hướng dẫn từng bước
- Sao chép mã ở phía trên và mở bằng Arduino IDE
- Nhấp chuột vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
- Xem kết quả trên LCD
Đọc thời gian từ mô-đun DS1307 RTC và hiển thị trên LCD
Sơ đồ nối dây

This image is created using Fritzing. Click to enlarge image
Mã Arduino - DS1307 và LCD
/*
* Mã Arduino này được phát triển bởi newbiely.vn
* Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc.
* Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập:
* https://newbiely.vn/tutorials/arduino/arduino-lcd-clock
*/
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
lcd.init(); // initialize the lcd
lcd.backlight(); // open the backlight
// SETUP RTC MODULE
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (true)
;
}
// automatically sets the RTC to the date & time on PC this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop() {
DateTime now = rtc.now();
int year = now.year();
int month = now.month();
int day = now.day();
int hour = now.hour();
int minute = now.minute();
int second = now.second();
lcd.clear();
lcd.setCursor(0, 0); // start to print at the first row
lcd.print("Date: ");
lcd.print(year);
lcd.print("/");
lcd.print(month);
lcd.print("/");
lcd.print(day);
lcd.setCursor(0, 1); // start to print at the second row
lcd.print("Time: ");
lcd.print(hour);
lcd.print(":");
lcd.print(minute);
lcd.print(":");
lcd.print(second);
delay(1000); // Update every second
}
Hướng dẫn từng bước
- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
- Xem kết quả trên màn hình LCD
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.