Đã được đăng vào 11/12/2019 @ 12:00
Hiển thị thời gian thực (RTC DS1307) lên LCD16x2 bằng giao tiếp I2C trong môi trường Arduino
Mục lục
hiện
Ở bài viết hôm trước mình đã hướng dẫn các bạn cách sử dụng Module thời gian thực DS1307 và cách hiển thị ký tự lên màn hình LCD 16×2 bằng giao tiếp I2C.
Tiếp tục trong chuỗi bài viết về LCD hôm nay mình sẽ hướng dẫn các bạn làm thế nào để hiển thị thời gian lên LCD16x2.
Để hiểu hơn về bài viết hôm nay các bạn đọc lại bài viết bên dưới rồi chúng ta tiếp tục nha.
- Đọc thêm: Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino
- Đọc thêm: Đồng hồ thời gian thực (Read Time Clock – DS1307) sử dụng Arduino
Hiển thị thời gian thực lên LCD16x2 sử dụng module RTC DS1307
Màn hình LCD 16×2 | Arduino UNO R3 |
GND | GND |
VCC | 5V |
SDA | A4/SDA |
SCL | A5/SCL |
Module RTC DS1307 | |
GND | GND |
VCC | 5V |
SDA | A4/SDA |
SCL | A5/SCL |
Linh kiện cần thiết cho dự án
Tên linh kiện | Số lượng |
Arduino Uno R3 | 1 |
Module RTC DS1307 | 1 |
Màn hình LCD 16×2 | 1 |
Module I2C LCD 16×2 | 1 |
Dây cắm | 1 |
Thư viện
- Thư viện hỗ trợ sử dụng module RTC DS1307: Tải ngay.
- Thư viện hỗ trợ sử dụng màn hình LCD I2C: Tải ngay.
Code mẫu
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include "RTClib.h" RTC_DS1307 rtc; LiquidCrystal_I2C lcd(0x3F,16,2); char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; void setup () { Serial.begin(9600); lcd.init(); lcd.backlight(); if (! rtc.begin()) { lcd.print("Couldn't find RTC"); while (1); } if (! rtc.isrunning()) { lcd.print("RTC is NOT running!"); } rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//auto update from computer time //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));// to set the time manualy } void loop () { DateTime now = rtc.now(); lcd.setCursor(4, 1); if(now.hour()<=9) { lcd.print("0"); lcd.print(now.hour()); } else { lcd.print(now.hour()); } lcd.print(':'); if(now.minute()<=9) { lcd.print("0"); lcd.print(now.minute()); } else { lcd.print(now.minute()); } lcd.print(':'); if(now.second()<=9) { lcd.print("0"); lcd.print(now.second()); } else { lcd.print(now.second()); } lcd.print(" "); lcd.setCursor(1, 0); lcd.print(daysOfTheWeek[now.dayOfTheWeek()]); lcd.print(","); if(now.day()<=9) { lcd.print("0"); lcd.print(now.day()); } else { lcd.print(now.day()); } lcd.print('/'); if(now.month()<=9) { lcd.print("0"); lcd.print(now.month()); } else { lcd.print(now.month()); } lcd.print('/'); if(now.year()<=9) { lcd.print("0"); lcd.print(now.year()); } else { lcd.print(now.year()); } }
Giải thích code
Trong bài viết Đồng hồ thời gian thực (Read Time Clock – DS1307) sử dụng Arduino mình đã giải thích rất chi tiết cách hoạt động của hàm các bạn xem lại bài viết để có thể hiểu hơn nhé.
Nguồn: arduinokit.vn
Bình luận mới nhất