Arduino and RTC1307 module

บทความนี้จะเป็นตัวอย่างการใช้งานระหว่าง Arduino MEGA 2560 กับโมดูล RTC1307 แบบง่ายๆ โมดูล RTC ย่อมาจาก Real Time Clock ทำหน้าที่ นับเวลาตามเวลาจริงไปเรื่อยๆ ประโยชน์ของ RTC ก็คือ สามารถนำไปใช้กับโปรเจคที่ต้องการความแม่นยำเกี่ยวกับ วันที่และเวลา เช่น ตั้งเวลารดน้ำต้นไม้ หรือนาฬิกาปลุก เพราะถ้าหากใช้แค่ Arduino อย่างเดียว เมื่อเราเขียนโปรแกรมควมคุม จะมีค่า delay ทั้งจากที่เราเขียนเอง หรือการทำงานบางอย่างในโปรแกรมนั้น ทำให้ไม่เหมาะกับงานโปรเจคประเภทนี้ RTC จึงเป็นทางเลือกที่ดีมากเลยทีเดียว

สิ่งที่ต้องเตรียม

1. Arduino MEGA 2560 หรือตัวอื่นๆก็ได้ ในตัวอย่างจะใช้ MEGA 2560
2. Module RTC1307
3. Protoboard สายไฟ หรืออุปกรณ์อื่นๆที่จะใช้ในการทดลอง

Libary ที่ใช้ในโปรเจคนี้

1. RTClib.zip

การต่อสาย

Arduino MEGA 2560 Pins Module / Pins
5V หรือ 3.3VVcc
GNDGND
SDA (MEGA 2560 คือ 20)SDA
SCL (MEGA 2560 คือ 21)SCL

โค้ด

SAP_RTC_Module

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

RTC_DS1307 rtcp;
void setup () {
  Serial.begin(115200);
  Serial.println("Program start");
  delay(1000);
  Serial.println("Start RTC");
  if (! rtcp.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }
}
void loop(){
if (! rtcp.isrunning()) {
  Serial.println("RTC is NOT running!");
  delay(1000);
  return;
}

//rtcp.adjust(DateTime(2019, 4, 23, 15, 54, 50)); //คำสั่งตั้งค่าวันที่และเวลา

DateTime now = rtcp.now();

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
}

ผลการทำงาน

โปรแกรมจะแสดงค่าไปที่ Serial ให้ลองเปิด Serial Monitor จะพบว่ามีเวลารันอยู่ตามภาพด้านล่าง
RTC 1307 output
ถ้าหากเวลาไม่ตรง หรือขึ้นว่า RTC is NOT running! ให้ใช้งานคำสั่ง
rtcp.adjust(DateTime(2019, 4, 23, 15, 54, 50));
เพื่อตั้งค่าวันที่และเวลา

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *