Получить время в 24 часовом формате от RTC
У меня есть модуль DS3231 RTC.
Я хотел бы получить время от RTC в формате 24 часа, а не 12 часов. Библиотека, которую я использую, требует, чтобы я передал 2 логических значения в Clock.getHour ()
, однако изменение этих значений не изменяет возвращаемый формат времени.
Код;
/*
DS3231_test.pde
Эрик Айарс
4/11
Тест/демонстрация процедур чтения для DS3231 RTC.
Включите последовательный монитор после загрузки, чтобы проверить, все ли
работает так, как должно
*/
#include <DS3231.h>
#include <Wire.h>
DS3231 clock;
bool century = false;
bool h12Flag;
bool pmFlag;
byte alarmDay, alarmHour, alarmMinute, alarmSecond, alarmBits;
bool alarmDy, alarmH12Flag, alarmPmFlag;
void setup() {
// Start the I2C interface
Wire.begin();
// Start the serial interface
Serial.begin(57600);
}
void loop() {
// send what's going on to the serial monitor.
// Start with the year
Serial.print("2");
if (century) { // Won't need this for 89 years.
Serial.print("1");
} else {
Serial.print("0");
}
Serial.print(clock.getYear(), DEC);
Serial.print(' ');
// then the month
Serial.print(clock.getMonth(century), DEC);
Serial.print(" ");
// then the date
Serial.print(clock.getDate(), DEC);
Serial.print(" ");
// and the day of the week
Serial.print(clock.getDoW(), DEC);
Serial.print(" ");
// Finally the hour, minute, and second
Serial.print(clock.getHour(h12Flag, pmFlag), DEC);
Serial.print(" ");
Serial.print(clock.getMinute(), DEC);
Serial.print(" ");
Serial.print(clock.getSecond(), DEC);
// Add AM/PM indicator
if (h12Flag) {
if (pmFlag) {
Serial.print(" PM ");
} else {
Serial.print(" AM ");
}
} else {
Serial.print(" 24h ");
}
// Display the temperature
Serial.print("T=");
Serial.print(clock.getTemperature(), 2);
// Tell whether the time is (likely to be) valid
if (clock.oscillatorCheck()) {
Serial.print(" O+");
} else {
Serial.print(" O-");
}
// Indicate whether an alarm went off
if (clock.checkIfAlarm(1)) {
Serial.print(" A1!");
}
if (clock.checkIfAlarm(2)) {
Serial.print(" A2!");
}
// New line on display
Serial.println();
// Display Alarm 1 information
Serial.print("Alarm 1: ");
clock.getA1Time(alarmDay, alarmHour, alarmMinute, alarmSecond, alarmBits, alarmDy, alarmH12Flag, alarmPmFlag);
Serial.print(alarmDay, DEC);
if (alarmDy) {
Serial.print(" DoW");
} else {
Serial.print(" Date");
}
Serial.print(' ');
Serial.print(alarmHour, DEC);
Serial.print(' ');
Serial.print(alarmMinute, DEC);
Serial.print(' ');
Serial.print(alarmSecond, DEC);
Serial.print(' ');
if (alarmH12Flag) {
if (alarmPmFlag) {
Serial.print("pm ");
} else {
Serial.print("am ");
}
}
if (clock.checkAlarmEnabled(1)) {
Serial.print("enabled");
}
Serial.println();
// Display Alarm 2 information
Serial.print("Alarm 2: ");
clock.getA2Time(alarmDay, alarmHour, alarmMinute, alarmBits, alarmDy, alarmH12Flag, alarmPmFlag);
Serial.print(alarmDay, DEC);
if (alarmDy) {
Serial.print(" DoW");
} else {
Serial.print(" Date");
}
Serial.print(" ");
Serial.print(alarmHour, DEC);
Serial.print(" ");
Serial.print(alarmMinute, DEC);
Serial.print(" ");
if (alarmH12Flag) {
if (alarmPmFlag) {
Serial.print("pm");
} else {
Serial.print("am");
}
}
if (clock.checkAlarmEnabled(2)) {
Serial.print("enabled");
}
// display alarm bits
Serial.println();
Serial.print("Alarm bits: ");
Serial.println(alarmBits, BIN);
Serial.println();
delay(1000);
}
Как мне это сделать?
@Coder9390, 👍0
1 ответ
Лучший ответ:
Библиотека, которую я использую, требует, чтобы я передал 2 логических значения в Clock.getHour (), однако изменение этих значений не изменяет возвращаемый формат времени.
Похоже, вы говорите здесь о параметрах, которые во-вторых предназначены для получения текущего состояния флага AM/PM и конфигурации, а не для изменения типа значения, которое вы получаете в возврате.
Вы можете вызвать функцию setClockMode, которая настроит чип на отчет в 24-часовом режиме. Если вы назовете эту передачу ложной
, getHour
начнет возвращать 24-часовое время.
- Как установить RTC в ES32 с помощью NTP-сервера?
- Как использовать внешний кристалл 32 кГц для ESP32 S3 с Arduino IDE?
- ограничить длину сгенерированной временной метки из ESP32 с DS3231 до 13
- DS3231 RTC не работает с ESP32
- ESP32 как сохранить время RTC во время brownout
- Обратная связь ESP32 от NTP
- Примените патч к библиотеке для пользовательских изменений в Arduino IDE.
- Не удается прочитать I2C из RTC