알고 보니 시간이 증가하지 않는다. 말인 즉슨 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개) 제어 (5) | 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 개발 보드 (1) | 2024.11.24 |
| ESP32 부저 회로도 (0) | 2024.11.22 |
| ESP32 WROOM 핀아웃: ESP32 GPIO 핀 사용 (1) | 2024.11.19 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩