그러고보니 저한테도 질문이 하나 들어왔는데 과제하시는 여러분들도 다들 필요한 내용인 거 같아서
같이 아시면 좋겠다 하고 전체메일 보내봅니다.
프로세싱에서 오늘의 날짜를 획득하기 위한 함수입니다. :)
int yy=year();
int mm=month();
int dd=day();
이렇게 하면 yy에 올해의 연도가, mm에 현재 달이, dd에 현재 날짜가 정수형으로 들어갑니다.
(함수의 리턴값이 정수형이기 때문에 정수형 변수로 받아주어야합니다)
프로세싱에서 출력을 하는 팀은 이 변수를 적절하게 그냥 사용하면 될 것이고
아르두이노를 출력에 사용하는 팀은 시리얼 통신을 이용해서 아르두이노로 보내면 되겠지요.
레퍼런스를 자세히 읽지는 않아서 확실한 얘기는 아닌데, 아마 획득하는 시간 값은
현재 프로세싱이 돌아가는 컴퓨터의 내부 시계에서 값을 가져오는 걸 겁니다. (사실
타임 서버라도 이용하지 않는 이상은 그 방법밖에 없을테고 -_-;;;)
해당 함수는 레퍼런스에도 나와있으니 자세한 내용은 레퍼런스를 참고하시면 되겠습니다.
시간도 저런식으로 받을 수 있으니 시간이 필요한 팀은 레퍼런스를 참고해주세요.
(사실 참고할것도 없이 시분초는 똑같이 hour, minute, second 함수고 리턴값은 똑같이 정수입니다. ㅎㅎ)
프로세싱이나 기타 다른 컴퓨터에서의 플랫폼 도움 없이 아르두이노만 사용하는 팀의 경우에는 문제가 좀 골치아파지는데,
아르두이노에는 현재 날짜와 시간을 저장하는 클럭IC가 없습니다. 시간에 관련한 함수는 아르두이노 보드가
현재 프로그램을 실행하기 시작한 시점부터 현재까지의 경과시간만을 밀리 초(그러니까 1/1000초)단위와
마이크로 초(1/1000000초) 단위로 측정하는 기능과 밀리초, 혹은 마이크로초 단위로 딜레이를 주는 기능밖에 없습니다.
따라서 적절한 방안을 강구하지 않으면 아르두이노만으로 달력 기능을 재현하기는 어려울 수 있습니다.
간단히 생각해본 방법이라면 프로그램을 실행할 때 시작시점의 날짜와 시간이 들어가는 변수(어쩔 수 없이 코드에서 직접 값을
줄 수밖에 없겠지요. 아니면 스위치 같은 걸로 입력받아서 변수값을 조정할 수 있게 하거나요)를 두고
이 변수값에 일정 경과시간이 지날 때마다 값을 더해주는 식으로 만드는 방법이 있을 거 같습니다.
아르두이노에서 시간을 재주는 함수는
unsigned long ms=millis(); // 시작시간부터 현재까지 경과시간을 밀리초 단위로 값 받기
unsigned long mics=micros(); // 시작시간부터 현재까지 경과시간을 마이크로초 단위로 값 받기
이런 식으로 사용해주시면 됩니다. unsigned long 값이라 받을 수 있는 값 자체는 상당히 크지만 millis 함수의 경우는
약 50일, micros 함수의 경우는 70분 정도가 지나면 변수가 받을 수 있는 값의 한계를 넘어(overflow라고 합니다)
0으로 리셋이 된다고 하니 이 부분도 감안을 하셔서 코딩을 하셔야 할거 같습니다. (사실 마이크로초 단위로
시간을 잴 이유는 달력의 경우엔 별로 없겠지요...-_-)