Часы с DS3231 показывают время в 12-часовом формате
- Войдите на сайт для отправки комментариев
Пнд, 23/09/2019 - 20:20
Часы на Ардуине ProMini с RTC DS3231 и синхронизацией от GPS-модуля NEO-6M. Время выводилось на OLED-дисплей в 24-часовом формате.
После экспериментов с библиотекой u8g2 (в поисках других шрифтов) часы стали отображаться в 12-часовом формате.
В монитор порта вывожу время с модуля GPS и RTC, так вот с модуля GPS идет в 24-формате, а после записи в RTC часы преобразуются в 12-часовой.
Зависимость между попыткой установки библиотеки u8g2 и форматом отображения не вижу, скорее всего совпадение.
Есть у кого соображения, как вернуть 24-часовой формат?
Спасибо.
#include <DS3231.h> #include <OLED_I2C.h> #include <Wire.h> #include <TinyGPS.h> #include <SoftwareSerial.h> DS3231 Clock; OLED myOLED(SDA, SCL, 8); TinyGPS gps; SoftwareSerial gpsSerial(4, 3); void gpsdump(TinyGPS &gps); bool newdata = false; extern uint8_t MegaNumbers[]; bool Century = false; bool h12; bool PM; int m; int h; int s; void setup() { gpsSerial.begin(9600); Serial.begin(9600); myOLED.begin(); myOLED.setFont(MegaNumbers); Wire.begin(); } void loop() { bool newdata = false; unsigned long start = millis(); // Every 5 seconds we print an update while (millis() - start < 5000) { if (gpsSerial.available()) { char c = gpsSerial.read(); //Serial.print(c); // uncomment to see raw GPS data if (gps.encode(c)) { newdata = true; break; // uncomment to print new data immediately! } } } if (newdata) { gpsdump(gps); } // ============================================= Вывод на дисплей ================================== s = Clock.getSecond(); m = Clock.getMinute(); h = Clock.getHour(h12, PM); if (h < 10) { myOLED.printNumI(h, 29, 12); } else { myOLED.printNumI(h, 5, 12); } myOLED.print("-", 53, 12); if (m < 10) { myOLED.print("0", 77, 12); myOLED.printNumI(m, 101, 12); } else { myOLED.printNumI(m, 77, 12); } myOLED.update(); delay(500); if (h < 10) { myOLED.printNumI(h, 29, 12); } else { myOLED.printNumI(h, 5, 12); } myOLED.print("/", 53, 12); if (m < 10) { myOLED.print("0", 77, 12); myOLED.printNumI(m, 101, 12); } else { myOLED.printNumI(m, 77, 12); } myOLED.update(); delay(200); } // ---------------------------------- Данные с GPS и синхронизация --------------------------------------- void gpsdump(TinyGPS &gps) { unsigned long age, date, time, chars; int year; byte month, day, hour, minute, second, hundredths; gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age); Serial.print(h); Serial.print(":"); Serial.println(m); h = hour + 3; if (h > 23) { h = h - 24; } Clock.setHour(h); Clock.setMinute(minute); Clock.setSecond(second); }
А файл DS3231.h хотя бы открывали?
А если открывали, то неужели строки
никаких мыслей не навеяли?
А зачем напрягаться, если на блюдечке поднесут всё?
А файл DS3231.h хотя бы открывали?
А если открывали, то неужели строки
никаких мыслей не навеяли?
Нет, до вашего ответа не открывал.
После прочтения пришли мысли, что должно быть: "bool h12=false". Но где это должно быть не знаю. В строку 015 добавлял - не помогло.
Подскажите, если не трудно.
После прочтения пришли мысли, что должно быть: "bool h12=false". Но где это должно быть не знаю. В строку 015 добавлял - не помогло.
Подскажите, если не трудно.
Там должно быть вовсе не то, о чём Вы подумали.
Такие вещи я не подсказываю. Могу подсказать книжку, которую Вам следует изучить. От этого Вам была бы реальная польза. Вы ведь не понимаете ни строки в том, что написано. Изучить книжку Вам будет гораздо полезнее, что если Вам сейчас напишут что куда вставить и Вы сделаете это по-прежнему ни буквы не понимая.