아두이노에서 날짜, 시간 출력하기.
먼저 아두이노에서 링크를 통해 Time 라이브러리는 받는다. 압축을 해제하고 각 폴더들을 아두이노 라이브러리폴더안에 넣는다. (그냥 압축 풀고 통째로 넣으면 헤더파일을 읽어오지 못한다.)
다운로드 주소 http://playground.arduino.cc/Code/Time 아두이노 라이브러리 경로 C:\Program Files (x86)\Arduino\libraries 혹은 C:\Users\사용자명\Documents\Arduino\libraries
라이브러리를 사용하는 2가지 방법이 있다. 먼저 아두이노 설치경로안에 libraries 폴더 안에 넣거나, Documents 폴더내의 아두이노 폴더에 넣는 방법이다. 다른 점은 크게 없고, 어떻게 화면에 나누어지는가의 차이인 것 같다. 아래 사진은 Documents 폴더 내의 아두이노 라이브러리에 넣은 화면이다.(초록색)
실행하기
코드는 라이브러리 설치 후에 '파일 > 예제'에 있는 TimeRTC 코드를 조금 수정한 것으로, RTC(Real Time Clock)칩에 저장된 값을 불러와서 출력한다.
#include <Time.h> #include <Wire.h> #include <DS1307RTC.h> void setup() { Serial.begin(9600); setSyncProvider(RTC.get); setTime(17,39,0,24,2,15); if(timeStatus()!= timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time"); } void loop() { digitalClockDisplay(); delay(1000); } void digitalClockDisplay(){ Serial.print(hour()); printDigits(minute()); printDigits(second()); Serial.print(" "); Serial.print(day()); Serial.print(" "); Serial.print(month()); Serial.print(" "); Serial.print(year()); Serial.println(); } void printDigits(int digits){ Serial.print(":"); if(digits < 10) Serial.print('0'); Serial.print(digits); }
시간 설정 setTime(hr, min, sec, day, month, year); 예 : setTime(17,39,0,24,2,15); // 2015.2.24 17:39:00
업로드하고 난 뒤에, 시리얼 모니터를 확인하면 다음과 같은 화면을 보여준다.
관련 문제점
에러 : 'BYTE' was not declared in this scope
에러 : must be const in order to be put into read-only section by means of '__attribute__((progmem))'
결론
먼저 실행하기 전에 컴파일단계에서 에러때문에 꽤나 답답하였다. 위 코드에서 문제점은 현재시각을 출력하지 않는다는 점이다. 앞으로 컴퓨터나 핸드폰의 시간을 받아와서 출력하도록 해봐야겠다. 혹은 인터넷의 시간을 가져오는 방법도 찾아봐야겠다.
'대학 생활 > IoT(RaspberryPi, Arduino)' 카테고리의 다른 글
[Arduino] 7-세그먼트 사용하기. (0) | 2015.03.04 |
---|---|
[Raspberry Pi] 라즈베리파이 초기 설정 및 프로그램 설치 (0) | 2015.03.02 |
[Arduino] 에러 : must be const in order to be put into read-only section by means of '__attribute__((progmem))' (0) | 2015.02.24 |
[Arduino] 에러 : 'BYTE' was not declared in this scope (0) | 2015.02.24 |