วันอังคารที่ 25 กันยายน พ.ศ. 2561

สอนใช้งาน DS3231 โมดูลนาฬิกา ตั้งเวลา

Module นาฬิกา หรือมีอีกชื่อหนึ่งว่า Real time clock (RTC) ถ้าน้องๆนึกถึง Arduino เมื่อไม่มีการจ่ายไฟโปรแกรมของ Arduino ก็จะหยุดทำงาน เราจึงมี RTC เพื่อทำการเก็บเวลาไว้เมื่อจ่ายไฟให้กับวงจร Arduino ก็จะดึงเวลามาใช้งานได้ทันที หรือการ ตั้งค่าคำนวนเวลาของ Arduino อาจจะมีปัญหา ความแม่นยำไม่ตรงบ้าง Library มีการ delay ทำให้เวลาไม่ตรงบ้าง เราก็สามารถใช้ Module อ้างอิ่งเวลาได้อย่างชัดเจนแน่นอน หรือจะนำไปใช้ในการบอกเวลา เพื่อลดน้ำต้นไม้ เปิดปิดไฟตามเวลาก็ได้เช่นกัน
ข้อระวังของ Module RTC DS3231
โมดูลจะมีไฟเลี้ยงเดินอยู่ตลอดเวลาให้เก็บใส่ถุงแยกออกเป็นสัดส่วนให้ดี อย่าใส่ร่วมกับอุปกรณ์อื่นๆอาจจะทำให้เกิดการช๊อตส่งผลให้ตัว Module เสียหายได้
เตรียมอุปกรณ์กันก่อนเลยครับ
  • Arduino (ได้ทุกรุ่น)
  • Module RTC DS3231
  • สายไฟจัมเปอร์สำหรับต่อ Module กับ Arduino
การต่อวงจรดังนี้เลย
Arduino UnoModule DS323
5VVCC
GNDGND
A4SDA
A5SCL
การต่อวงจรจะต่อแบบ I2C ลองศึกษา Board Arduino ที่ใช้ ขา I2C อยู่ที่ตำแหน่งไหนก็เสียบให้ตรงด้วยครับ
มาถึงในส่วนของ Code
ก่อนอื่นให้ทำการ Download Library ก่อนเลยครับ : http://9arduino.nisit.net/library/RTClib.zip
** สำหรับน้องๆที่ติดตั้ง Library ไม่เป็นสามารถเข้าไปดูการติดตั้ง Libarty ได้ที่ คลิก
Code ตัวอย่าง
#include <Wire.h>
#include <SPI.h>  
#include <RTClib.h>
RTC_DS3231 RTC;
void setup () {
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();    
  RTC.adjust(DateTime(__DATE__, __TIME__));   //จุดนี้เป็นการตั้งเวลา ตั้งครั้งแรกเสร็จแล้วให้ // ไว้ด้วย
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  DateTime now = RTC.now();
  RTC.setAlarm1Simple(2158);  //เป็นการตั้งเวลาปลุก เวลา 22.58 น.
  RTC.turnOnAlarm(1);  //ปลุกช่วงเวลาที่ 1
  if (RTC.checkAlarmEnabled(1)) {
    Serial.println("Alarm Enabled");
  }
}
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(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    if (RTC.checkIfAlarm(1)) {   // เมื่อถึงเวลาให้ทำการปลุกโดยการทำตามเงือนไขใน if
      Serial.println("Alarm Triggered");
    }
    Serial.println();
    delay(3000);
}
//ที่มา www.9arduino.com

ไม่มีความคิดเห็น:

แสดงความคิดเห็น