본문 바로가기

아두이노

RTC(Real Time Clock) 1 - Software RTC

아두이노에서 날짜와 시간을 사용하려면 어떤 방법이 있을까요?

크게 소프트웨어 라이브러리를 사용하는 Software RTC와 하드웨어 RTC가 있습니다.

 

Software RTC

-별도의 하드웨어가 필요하지 않아요.

-아두이노의 전원이 꺼지면 시간 정보도 날아가서 매번 시간 설정해야 해요

 

아두이노 마이크로컨트롤러에서 제공하는 하드웨어에는 타이머/카운터가 있습니다.

 

아두이노 IDE > 스케치 > 라이브러리 포함하기 >라이브러리 관리 > software RTC를 검색합니다.

라이브러리 포함하기 > 라이브러리 매니저

검색된 swRTC by Leonardo Milani, lesto 를 설치한다.

 

1.라이브러리 포함하기

  #include <swRTC.h>

2.swRTC의 객체를 생성한다.

  swRTC rtc;

3.생성된 swRTC객체의 시간과 날짜를 설정한다. 매개변수로 지정한 값이 범위를 벗어나는 잘못된 값이면 false값을 리턴한다.

 rtc.setTime(12,0,0);

 rtc.setDate(12,01,2020);

4.RTC가 동작, RTC가 정지하게 한다.

 rtc.StopRTC();

 rtc.StartRTC();

5.생성된 swRTC객체로 부터 초 값을 얻어온다.

 rtc.getYear();

 rtc.getMonth();

 rtc.getDay();

 rtc.getHours();

 rtc.getMinutes();

 rtc.getSeconds();

 

#include <swRTC.h>

swRTC rtc;

byte state=1;
byte second;


void setup() {
  rtc.stopRTC();
  rtc.setTime(18,44,0);
  rtc.setDate(10,2,2020);
  rtc.startRTC();
  
  Serial.begin(9600);
}

void loop() {
  if(second!=rtc.getSeconds()) {
    second=rtc.getSeconds();
    displayDateTime();
  }
}

void displayDateTime() {
  Serial.print(int2str(rtc.getYear(),4) + ".");
  Serial.print(int2str(rtc.getMonth(),2) + ".");
  Serial.print(int2str(rtc.getDay(),2) + ".");

  Serial.print(int2str(rtc.getHours(),2) + ":");
  Serial.print(int2str(rtc.getMinutes(),2) + ":");
  Serial.println(int2str(rtc.getSeconds(),2));

}

String int2str(int n, int len) {
  String str="";
  for(int i=0;i<len;i++) {
    int remain = n  % 10;
    n = n/10;
    str = char(remain + '0') + str;
  }
  return str;
}

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

아두이노에서 조도센서 사용하기  (0) 2020.02.07
틸트(기울기센서) 사용하기  (0) 2020.02.07
서보모터 작동  (0) 2020.02.06
아두이노 통합개발환경(IDE) 설치하기  (0) 2020.02.03