Часы с DS3231 показывают время в 12-часовом формате

Игоряха
Offline
Зарегистрирован: 31.03.2018
Часы на Ардуине 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);
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А файл DS3231.h хотя бы открывали?

А если открывали, то неужели строки 

void setClockMode(bool h12); 
       // Set 12/24h mode. True is 12-h, false is 24-hour.

никаких мыслей не навеяли?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

А зачем напрягаться, если на блюдечке поднесут всё?

Игоряха
Offline
Зарегистрирован: 31.03.2018

ЕвгенийП пишет:

А файл DS3231.h хотя бы открывали?

А если открывали, то неужели строки 

void setClockMode(bool h12); 
       // Set 12/24h mode. True is 12-h, false is 24-hour.

никаких мыслей не навеяли?

Нет, до вашего ответа не открывал.

После прочтения пришли мысли, что должно быть: "bool h12=false". Но где это должно быть не знаю. В строку 015 добавлял - не помогло.

Подскажите, если не трудно.

 

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Игоряха пишет:

После прочтения пришли мысли, что должно быть: "bool h12=false". Но где это должно быть не знаю. В строку 015 добавлял - не помогло.

Подскажите, если не трудно.

Там должно быть вовсе не то, о чём Вы подумали.

Такие вещи я не подсказываю. Могу подсказать книжку, которую Вам следует изучить. От этого Вам была бы реальная польза. Вы ведь не понимаете ни строки в том, что написано. Изучить книжку Вам будет гораздо полезнее, что если Вам сейчас напишут что куда вставить и Вы сделаете это по-прежнему ни буквы не понимая.