В основном я пишу простой фрагмент кода, который увеличивает каждую секунду и отображает время и дату, что меня расстраивает, и я уверен, что пропускаю что-то очевидное.
Так что я будуотображать время в формате MJD (измененная юлианская дата) в формате ЧЧ: ММ: СС, но также разрешать жестко запрограммированный MJD представлять событие високосной секунды, а затем корректно отображать високосную секунду.
Это работает, однакопропускает 23: 59: 59.
Я в конечном итоге планирую портировать на простой старый AVR, так что я действительно не хочу возиться с библиотеками arduino.
int second = 0, minute = 0, hour = 0;
long mjd = 55000;
long leap = 55964;
void setup()
{
Serial.begin(9600);
Serial.print("MDJ ");
Serial.print(mjd);
Serial.print(" ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.println(second);
}
void loop()
{
second++;
if (mjd == leap && hour == 23 && minute == 59 && second == 59) {
second++;
} else {
if (second > 59) {
minute++;
second = 0; // reset seconds to zero
}
}
if (minute > 59) {
hour++;
minute = 0;
}
if (hour > 23) {
mjd++;
hour = 0;
}
Serial.print("MDJ ");
Serial.print(mjd);
Serial.print(" ");
if (hour < 10)
Serial.print("0");
Serial.print(hour);
Serial.print(":");
if (minute < 10)
Serial.print("0");
Serial.print(minute);
Serial.print(":");
if (second < 10)
Serial.print("0");
Serial.println(second);
delay(1000);
}