내가 보려고 만든 블로그

아두이노 ds1302 realtime_clock 본문

아두이노

아두이노 ds1302 realtime_clock

hjh1023 2020. 9. 8. 13:46
반응형

 

#include <stdio.h>
#include <DS1302.h>
 
namespace {
 
// DS1302와 연결되는 아두이노 핀 번호
const int kCePin   = 8;   // Chip Enable
const int kIoPin   = 7;   // Input/Output
const int kSclkPin = 6;   // Serial Clock
 
//  DS1302 오브젝트 생성
DS1302 rtc(kCePin, kIoPin, kSclkPin);
 
// 요일 코드에 알맞는 문자열 출력
String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "Sunday";
    case Time::kMonday: return "Monday";
    case Time::kTuesday: return "Tuesday";
    case Time::kWednesday: return "Wednesday";
    case Time::kThursday: return "Thursday";
    case Time::kFriday: return "Friday";
    case Time::kSaturday: return "Saturday";
  }
  return "(unknown day)";
}
 
// 날짜, 시간 출력 함수
void printTime() {
  // 칩에 저장된 시간을 읽어옵니다. 
  Time t = rtc.time();
 
  // 요일 코드에 알맞는 문자열 가져오기
  const String day = dayAsString(t.day);
 
  // 날짜와 시간 정보를 임시 버퍼에 형식에 맞추어 담아둡니다.
  char buf[50];
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
           day.c_str(),
           t.yr, t.mon, t.date,
           t.hr, t.min, t.sec);
 
  // 임시 버퍼의 내용을 출력합니다.
  Serial.println(buf);
}
 
}  // namespace
 
void setup() {
  Serial.begin(115200);
 
  // 새로운 날짜와 시간 정보를 칩에 저장합니다. 
  // 이 작업은 시간을 맞출때만 사용하며, 평상시에는 주석(//) 처리되어 있어야 합니다.
   rtc.writeProtect(false);
   rtc.halt(false);
   Time t(2020, 9, 8, 11, 24, 00, Time::kTuesday);
   rtc.time(t);
}
 
// 1초마다 날짜와 시간을 출력합니다.
void loop() {
  printTime();
  delay(1000);
}
반응형

'아두이노' 카테고리의 다른 글

아두이노 5v Relay  (0) 2020.09.08
아두이노 시계  (0) 2020.09.08
아두이노 4x4 keypad Test  (0) 2020.09.08
아두이노 3color led test  (0) 2020.09.08
아두이노 DHT11 온습도 센서  (0) 2020.09.08