안경잡이개발자

728x90
반응형

  실시간 시계(Real Time Clock, 이하 RTC)란 현재 시간 정보를 항시 가지고 있는 컴퓨터 시계 부품을 의미합니다.

  일반적으로 개인용 컴퓨터(PC)는 RTC를 내부적으로 가지고 있으며, RTC는 내장 건전지를 사용하여 전원이 꺼지더라도 디지털 회로의 카운터에 의존하여 현재 시간 정보를 가지고 있습니다.

 

  사실 성능이 좋지 않은 임베디드 기기의 경우 RTC를 가지고 있지 않은 경우도 많습니다. 이 경우 추가적인 부품을 연결하여 RTC를 이용해야 합니다. Teensy Board에 관해서 말씀을 드리자면, Teensy 3.5와 Teensy 3.6의 경우 내장된 RTC를 가지고 있습니다. 아예 내장된(Built-in) 부품이기 때문에 바로 라이브러리를 호출하여 사용할 수 있어요.

  Teensy의 Time Library 관련 문서는 다음의 경로에서 확인하실 수 있습니다.

 

  ▶ Teensy Time Library: www.pjrc.com/teensy/td_libs_Time.html

 

Time Library, Timekeeping and Time/Date Manipulation on Teensy

Time Library Time, by Michael Margolis, adds timekeeping ability in hours, minutes, seconds, days, months and years. Time Library using Teensy 3.0 RTC Hardware Requirements Time does not require any special hardware. Internally, Time depends upon Arduino's

www.pjrc.com

 

  Teensy 3.5과 3.6 버전은 32.768 kHz의 Built-in 크리스탈을 이용하여 시간 정보를 기록한다고 하네요. 이를 이용하는 간단한 예시는 다음과 같이 작성할 수 있습니다.

 

#include <TimeLib.h>

void setup() {
  // Teensy의 RTC를 이용하여 Time Library를 초기화
  setSyncProvider(getTeensy3Time);
  Serial.begin(115200);
  while (!Serial);
}

void loop() {
  // 매 초마다 현재 시각을 출력
  digitalClockDisplay();  
  delay(1000);
}

// 현재 시각을 출력하는 함수
void digitalClockDisplay() {
  Serial.print("Timestamp (from 1970): ");
  Serial.println(now());
  Serial.print(year());
  Serial.print("/");
  Serial.print(month());
  Serial.print("/");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.println();
}

time_t getTeensy3Time() {
  return Teensy3Clock.get();
}

// 숫자 정보를 깔끔하게 출력해주는 함수(10보다 작은 수라면 앞에 0을 붙임)
void printDigits(int digits) {
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

 

  실행 결과는 다음과 같습니다.

 

728x90
반응형