Thứ Ba, 19 tháng 12, 2017

Arduino với DS1307 hiển thị thời gian thực lên màn hình LCD 16x2

Để ngắn gọn hơn và đi vào chủ đề chính mình không giới thiệu lại phần cứng hỗ trợ!

Bước 1: Kết nối như sơ đồ nguyên lí.

Đối với module thời gian thực DS1307 mặc dù nó có nhiều chân, nhưng ở đây mình chỉ sử dụng:
Chân Vcc
Chân GND
Chân SDA và SCL
***Chú ý: Module thời gian thực DS1307 đã tích hợp sẵn PIN.

Bước 2: Viết Code chạy thực nghiệm.

***Copy đoạn code bên dưới và dán vào chương trình IDE và nhớ thêm đúng thư viện hỗ trợ bên dưới link nhé!

Thư viện hỗ trợ.

1. RTClib-master
http://www.mediafire.com/file/dbctizgv7l4kcxl/RTClib-master.rar

2. LCD(LiquidCrystal)

Code tham khảo:

#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup ()
{
  while (!Serial);
  lcd.begin(16,2);
  Serial.begin(57600);
  if (! rtc.begin())
  {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (! rtc.isrunning())
  {
    Serial.println("RTC is NOT running!");
 
  }
}

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);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    DateTime future (now + TimeSpan(7,12,30,6));
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    Serial.println();
    delay(3000);

    lcd.setCursor(0, 0);// cot  hang
    lcd.print(future.hour(), DEC);
    lcd.setCursor(2, 0);// cot  hang
    lcd.print(":");
    lcd.setCursor(3, 0);// cot  hang
    lcd.print(future.minute(), DEC);
    lcd.setCursor(5, 0);// cot  hang
    lcd.print(":");
    lcd.setCursor(6, 0);// cot  hang
    lcd.print(future.second(), DEC);
    lcd.setCursor(0, 1);// cot  hang
    lcd.print(future.day(), DEC);
    lcd.setCursor(2, 1);// cot  hang
    lcd.print("/");
    lcd.setCursor(3, 1);// cot  hang
    lcd.print(future.month(), DEC);
    lcd.setCursor(5, 1);// cot  hang
    lcd.print("/");
    lcd.setCursor(6, 1);// cot  hang
    lcd.print(future.year(), DEC);
 }
//Email: cuối web.

1 nhận xét:

  1. DateTime future (now + TimeSpan(7,12,30,6));
    dòng này nghĩa là sao vậy ad?

    Trả lờiXóa