참고자료

아두이노, 오렌지보드 등의 오픈소스하드웨어를 사용하는데 필요한 것들을 알아봅니다.

라이브러리 사용하기 (2)

2014-08-11 10:04:25

개요

시간, 날짜를 표시하는 것은 매우 많이 사용될 것입니다.
여러 LCD등을 사용하여 원하는 형식대로 시간과, 날짜를 표시하는 일이 많이 있기 때문입니다.


출처 : www.sparkyswidgets.com


출처 : nicuflorica.blogspot.com
 
시간과 날짜를 출력하는 방법은 크게 두 가지가 있습니다.
이번 컨텐츠에서는 외부라이브러리를 사용하여 시간, 날짜를 알아내고
시리얼 모니터에 출력하겠습니다. 
물론 전원이 꺼질 때마다 시간 정보 등이 유지 되지 않지만 특별한 장치가 필요없고
가장 간단한 방법입니다.

 
 

 

 

 

 

부품목록

 

NO 부품명 수량
1 아두이노 우노 R3 1

 

 

부품명 아두이노 우노 R3
파트 X1

 

소프트웨어 Coding

/*
 외부라이브러리 사용해서 시간, 날짜 출력하기
*/

//외부라이브러리 사용
#include 
#include 

swRTC rtc;              //swRTC 객체 선언

void setup() {
  rtc.stopRTC();           //정지
  rtc.setTime(9,48,10);    //시간, 분, 초 초기화
  rtc.setDate(11,8,2014);  //일, 월, 년도 초기화 
  rtc.startRTC();          //시작
  Serial.begin(9600);      //시리얼 포트 초기화
}

void loop() {
  Serial.print(rtc.getHours(), DEC);     //시간 출력
  Serial.print(":");
  Serial.print(rtc.getMinutes(), DEC);   //분 출력
  Serial.print(":");
  Serial.println(rtc.getSeconds(), DEC); //초 출력
 
  Serial.print(rtc.getDay(), DEC);       //일 출력 
  Serial.print("/");
  Serial.print(rtc.getMonth(), DEC);     //월 출력
  Serial.print("/");
  Serial.println(rtc.getYear(), DEC);    //년도 출력
  delay(1000);
}

 

소프트웨어 & 하드웨어 설명

 

1. 사전설명

날짜, 시간을 출력하기 위해서는 외부라이브러리를 사용하는 소프트웨어적인 방법과 RTC를 사용하는
하드웨어적이 방법이 있습니다. 전원을 킬 때마다 시간설정을 다시 해야 하지만 특별한 부품이 필요하거나 
코드가 복잡한 것이 아니기 때문에 편리합니다.

다만, 주의사항이 있습니다.
외부라이브러리와 마이크로컨트롤러 안에 있는 타이머를 통해서 시간을 알아냅니다. 
동시에 많은 아두이노 함수 들은 타이머에 의존하고 있습니다. 
즉 타이머 기능을 사용할 경우 관련된 함수, 핀은 사용할 수 없습니다.
 

  아두이노 우노 PWM핀
timer0 5,6
timer1 9,10
timer2 3,11


예를 들어 timer2를 사용할 경우 PWM 핀으로 3,11을 사용 할 없습니다.
 

 

2. 스케치

 

//외부라이브러리 사용
#include 
#include 

swRTC rtc;              //swRTC 객체 선언


이번에 사용하는 외부라이브러리는 swRTC입니다.
다운로드 한 후 라이브러리 파일안에 넣습니다.
시간, 날짜와 관련된 함수를 사용하기 위해서 swRTC 객체를 만듭니다.

 

 

 

 

void setup() {
  rtc.stopRTC();           //정지
  rtc.setTime(9,48,10);    //시간, 분, 초 초기화
  rtc.setDate(8,11,2014);  //월, 일, 년도 초기화 
  rtc.startRTC();          //시작
  Serial.begin(9600);      //시리얼 포트 초기화
}


setTime, setDate를 통해서 시간, 날짜를 설정합니다.
stopRTC, startRTC함수를 통해 시작, 정지를 합니다.

 

 

 

 

void loop() {
  Serial.print(rtc.getHours(), DEC);     //시간 출력
  Serial.print(":");
  Serial.print(rtc.getMinutes(), DEC);   //분 출력
  Serial.print(":");
  Serial.println(rtc.getSeconds(), DEC); //초 출력
 
  Serial.print(rtc.getDay(), DEC);       //일 출력 
  Serial.print("/");
  Serial.print(rtc.getMonth(), DEC);     //월 출력
  Serial.print("/");
  Serial.println(rtc.getYear(), DEC);    //년도 출력
  delay(1000);
}


함수명을 보면 무슨 뜻인지 알 수 있을 겁니다. DEC라는 것은 십진수를 의미합니다.
get**으로 가져온 값들은 바이트 값이기 때문에 십진수로 변환해서 출력하기 위해서 DEC를 적어줍니다.

swRTC를 통해서 윤년, 요일 등까지 알아낼 수 있습니다.

 

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

라이브러리, 기타