반응형
알고 보니 시간이 증가하지 않는다. 말인 즉슨 RTC가 고장이 났다는 말이다.
처음부터 다시한다. 주옥같다!
처음 시간을 설정한 후, 경과 시간(예: 1시간 40분)이 지났는지 확인하는 코드는 DS1302에서 현재 시간을 읽고, 설정한 시간과의 차이를 계산하여 구현할 수 있습니다. 아래는 그에 맞는 코드를 제안합니다.
맨 위의 라이브러리를 확인하세요. 개발 환경이 다를 수 있습니다.
#include <ThreeWire.h>
#include <RtcDS1302.h>
// DS1302 핀 설정
#define RST_PIN 4
#define DAT_PIN 5
#define CLK_PIN 6
ThreeWire myWire(DAT_PIN, CLK_PIN, RST_PIN);
RtcDS1302<ThreeWire> Rtc(myWire);
RtcDateTime startTime;
const uint32_t targetInterval = 1 * 60 * 60 + 40 * 60; // 1시간 40분 (6000초)
void setup() {
Serial.begin(9600);
Rtc.Begin();
if (!Rtc.IsDateTimeValid()) {
Serial.println("RTC 시간 초기화 오류!");
RtcDateTime compiled = RtcDateTime(2024, 11, 24, 14, 30, 0); // 초기화 시간
Rtc.SetDateTime(compiled);
}
Rtc.SetIsRunning(true);
startTime = Rtc.GetDateTime();
Serial.println("기준 시간이 설정되었습니다:");
printDateTime(startTime);
}
void loop() {
RtcDateTime now = Rtc.GetDateTime();
// 디버깅용 출력
Serial.print("기준 시간: ");
printDateTime(startTime);
Serial.print("현재 시간: ");
printDateTime(now);
uint32_t elapsedTime = now.TotalSeconds() - startTime.TotalSeconds();
Serial.print("경과 시간 (초): ");
Serial.println(elapsedTime);
if (elapsedTime >= targetInterval) {
Serial.println("1시간 40분이 경과했습니다!");
} else {
uint32_t remainingTime = targetInterval - elapsedTime;
Serial.print("남은 시간 (초): ");
Serial.println(remainingTime);
}
delay(1000);
}
void printDateTime(const RtcDateTime& dt) {
char buffer[20];
snprintf_P(buffer,
sizeof(buffer),
PSTR("%04u/%02u/%02u %02u:%02u:%02u"),
dt.Year(),
dt.Month(),
dt.Day(),
dt.Hour(),
dt.Minute(),
dt.Second());
Serial.println(buffer);
}
결과는 아래와 같습니다.
초기 설정
기준 시간이 설정되었습니다:
2024/11/24 14:30:00
매초 출력 메시지
기준 시간: 2024/11/24 14:30:00
현재 시간: 2024/11/24 14:30:01
경과 시간 (초): 1
남은 시간 (초): 5999
목표 시간 도달
기준 시간: 2024/11/24 14:30:00
현재 시간: 2024/11/24 16:10:00
경과 시간 (초): 6000
1시간 40분이 경과했습니다!
반응형
'ESP32' 카테고리의 다른 글
ESP32 4개의 센서 모니터링, 18개의 릴레이(12개 릴레이 + 예약된 릴레이 6개) 제어 (4) | 2024.11.29 |
---|---|
ESP32 간략한 역사, 시작 방법, 제공되는 개발 지원 (2) | 2024.11.27 |
ESP32 Arduino IDE에 설치하기 (2) | 2024.11.26 |
Arduino core for the ESP32, Github 자료 (2) | 2024.11.26 |
ESP32 SerialBT 사용할 때 파싱 문자 반복 인식 (0) | 2024.11.25 |
ESP32-S3 개발 기판 2.4G Wi-Fi 모듈용 아두이노용 ESP IDF ESP32-S3-WROOM-1 N8R2 N16R8 44핀 Type-C 8M PSRAM ESP32 S3 (1) | 2024.11.24 |
ESP32 부저 회로도 (0) | 2024.11.22 |
ESP32 WROOM 핀아웃: ESP32 GPIO 핀 사용 (1) | 2024.11.19 |
더욱 좋은 정보를 제공하겠습니다.~ ^^