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

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

Ở 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 RTC 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.

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
thoi-gian-thuc-ds1307-hien-thi-len-lcd1602-giao-tiep-bang-i2c-su-dung-arduino

Linh kiện cần thiết cho dự án

Tên linh kiện Số lượng Shopee
Arduino Uno R3 1 Mua ngay
Cáp nạp 1 Mua ngay
Module RTC DS1307 1 Mua ngay
Màn hình LCD 16×2 1 Mua ngay
Module I2C LCD 16×2 1 Mua ngay
Dây cắm (Đực – Cái) 1 Mua ngay

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 RTC DS1307

#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()); 
    }
}

Bạn sẽ học được gì

  • Có kiến thức cơ bản về Robotics
  • Chế tạo Robot dò đường thông minh
  • Đánh thức nhà khoa học bên trong bạn
  • Tìm hiểu thêm về Robotics, các thuật toán Robot tự động
  • Kiến thức nền tảng để chế tạo các máy móc tự động phục vụ đời sống sinh hoạt, lao động sản xuất
  • Kiến thức để chế tạo sản phẩm, tham gia các cuộc thi khoa học công nghệ trong nước và quốc tế

KHÓA HỌC
CHẾ TẠO ROBOT DÒ ĐƯỜNG

Đã có 284 học viên đăng ký

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é.

Lời kết

Tham gia cộng đồng Arduino KIT Để nhận được nhiều kiến thức bổ ích, các bạn Đăng ký để nhận thông báo khi có bài viết mới nhé. Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino. Nếu các bạn thấy bài viết bổ ích nhớ LikeShare cho mọi người cùng học nhé.

Chúc các bạn thành công.

Trân trọng.

Bài viết liên quan

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments