외부 소스없이 arduino에서 현재 시간과 날짜를 얻는 방법은 무엇입니까?

저는 Arduino Uno와 SD 카드 실드를 사용하여 프로젝트를 진행하고 있습니다. 매일 특정 시간에 변수를 SD 카드에 저장하고 싶습니다. . Arduino에서 현재 시간을 어떻게 얻을 수 있습니까? 어떤 도움이라도 감사하겠습니다.

참고 : Arduino는 PC에 연결되어 있지 않습니다.

답변

An 정확한 방법은 millis() 함수를 사용하는 것입니다. Arduino가 시작된 이후 밀리 초 단위로 값을 반환합니다. 특정 시간에 Arduino를 시작하면 정확한 날짜와 시간을 계산할 수 있습니다.


왜 외부 모듈이 아닌가 ?? DS3231과 같은 RTC는 5 달러에 불과하며 온도 센서가 포함되어 있습니다!

댓글

  • millis () 함수가 약 50 일 후에 처리됩니다.
  • @AndreCourchesne : arduino.stackexchange.com/questions/12587/ …
  • 그렇다면 그것이 감싸면 어떨까요? 올바르게 작성된 시계 프로그램은 이에 대해 신경 쓰지 않습니다.

답변

외부 소스없이

당신은 할 수 없습니다. Arduino Uno에는 실시간 시계가 없습니다. 실시간 시계는 다음과 같습니다. eBay에서 $ 1. 예를 들어 DS1307 또는 DS3231. eBay에서 배터리 홀더, 크리스탈, 칩 및 회로 기판을 포함하여 시계 칩이 미리 조립 된 5 개의 보드를 eBay에서 $ US 4.20에 구매했습니다. 배터리는 제공되지 않습니다.

그것을 I2C 핀 (A4 및 A5)에 연결하고 적절한 스케치를 사용하여 시간을 한 번 설정하면 롤 준비가 완료됩니다.


무언가를하고 싶은 경우 24 시간마다 (반드시 오전 9시 36 분에는 아님) millis를 사용하여 적절한 밀리 초가 경과 한시기를 찾을 수 있습니다. 는 대략 49 일마다 포장되지만 걱정할 필요가 없습니다 .

주의하십시오. s는 날짜와 시간을 기록 할 수는 없지만 무언가를 기록 할 수 있습니다 (예 : 온도) 매일, 로깅을 시작했을 때만 알면됩니다.

답변

한 가지 고려할 가능성은 다음과 같습니다. Uno의 전원을 제어하는 24 시간 플러그인 타이머 를 사용합니다.

예 : 다음과 같이 표시됩니다.

여기에 이미지 설명 입력

회로는 다음과 같습니다 : AC 콘센트-> 타이머-> USB 충전기-> Arduino

오후 11시 30 분에 Uno의 전원을 끄고 다시 켜도록 타이머를 설정할 수 있습니다. 한밤중.

이러한 설정에서 millis()는 마지막 Uno 시작 이후 시간이며 일반적으로 이전 자정 이후 시간입니다.

디버깅 할 때 Uno-start 시간을 자정 이외로 설정할 수 있습니다.

주의 사항 :

  • 상황에 따라 매일 30 분 ( 또는 타이머 증분이 무엇이든) 다운 타임
  • 정전으로 인한 타이머 이동을 허용 할 수 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다