นวัตกรรม สิ่งประดิษฐ์ และเทคโนโลยี

กรุณา เข้าสู่ระบบ หรือ สมัครสมาชิก.

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
การค้นหาขั้นสูง  

ผู้เขียน หัวข้อ: เชื่อมต่อ Realtime clock DS3231  (อ่าน 176 ครั้ง)

NAWATTAKAM

  • Administrator
  • Sr. Member
  • *****
  • กระทู้: 410
เชื่อมต่อ Realtime clock DS3231
« เมื่อ: มีนาคม 13, 2019, 10:49:03 AM »



การต่อขา
SCL → A5
SDA → A4
VCC → 5V
GND → GND


ติดตั้ง ไลบรารี่ DS3231 ก่อน
https://github.com/NorthernWidget/DS3231


Arduino

โค๊ด

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

RTClib RTC;
#define DS3231_ADDRESS 0x68



byte decToBcd(byte val)   ////////// แปลงฐานสิบเป็นเลข BCD
{
return ( (val/10*16) + (val%10) );
}


////////////////  ฟังชั่น กำหนดเวลา
void setDateTime()
{

byte second = 45;        // วินาที 0-59
byte minute = 37;        // นาที 0-59
byte hour = 10;           // ชั่วโมง 0-23
byte weekDay = 2;       //ลำดับวันในหนึ่งสัปดาห์ 1-7   
byte monthDay = 13;    //วันที่ 1-31
byte month = 3;          // เดือน 1-12
byte year = 19;           //  ปี ค.ศ.  0-99 

byte zero = 0x00;

Wire.beginTransmission(DS3231_ADDRESS);
Wire.write(zero);

Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(weekDay));
Wire.write(decToBcd(monthDay));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year)); 

Wire.write(zero); //start

Wire.endTransmission();

}


void setup () {
    Serial.begin(9600);  //// แสดงผลที่ ซีเรียลมอนิเตอร์
    Wire.begin();
    setDateTime();       //// กำหนดเวลาใหม่
}


void loop ()
{
 
    delay(1000);


////////// แสดงวันเดือน ปี
    DateTime now = RTC.now();
    Serial.print(now.day(), DEC);  Serial.print('/');  Serial.print(now.month(), DEC);   Serial.print('/');Serial.print(now.year()+543, DEC);/// +543 แสดง พ.ศ.

////////// แสดงเวลา
    Serial.print(' ');   Serial.print(now.hour(), DEC);  Serial.print(':');   Serial.print(now.minute(), DEC);   Serial.print(':'); Serial.print(now.second(), DEC);
    Serial.println();
   

}



บันทึกการเข้า