Ср ноя 20, 2019 12:06:56
/*
s – текущее время, секунды
m – текущее время, минуты
h – текущее время, часы
ss – эталонное время, секунды
mm – эталонное время, минуты
hh – эталонное время, часы
*/
if (h > 12) h = h - 12; // привести к 12 часовому виду
if (hh > 12) hh= hh - 12;
long sec = (ss - s) +
(mm - m) * 60L +
(hh - h) * 3600L;
long rev = 43200L - sec ; // направление + по часовой - против
if (rev < sec ) sec =-rev; // куда ближе крутить стрелки
Чт ноя 21, 2019 21:58:12
Пт ноя 22, 2019 11:19:40
Пт ноя 22, 2019 12:49:31
Пт ноя 22, 2019 12:58:08
Пт ноя 22, 2019 14:42:58
Пт ноя 22, 2019 19:58:37
/*
s – текущее время, секунды
m – текущее время, минуты
h – текущее время, часы
ss – эталонное время, секунды
mm – эталонное время, минуты
hh – эталонное время, часы
*/
uint8_t h = 12,
m = 55,
s = 33;
for (uint8_t i=0; i<23;i++)
{
uint8_t hh = i,
mm = 10,
ss = 33;
Serial.print ("Time: ");
Serial.print (h);
Serial.print (":");
Serial.print (m);
Serial.print (":");
Serial.print (s);
Serial.print (" >>> ");
Serial.print (hh);
Serial.print (":");
Serial.print (mm);
Serial.print (":");
Serial.println (ss);
if (h > 12) h = h - 12; // привести к 12 часовому виду
if (hh > 12) hh= hh - 12;
// Первый результат. Смещение в секундах.
// Положительное число вращение вправо (по часовой стрелке),
// Отрицательное - влево (против часовой стрелки).
long sec = (ss - s) +
(mm - m) * 60L +
(hh - h) * 3600L;
// Если применить абсолютные значения можно узнать оба (влево, вправо) смещения.
// Но при этом потеряем направление вращения.
long var1 = abs(sec); // Прямое направление
long var2 = 43200L - var1; // Противоположное направление (43200 = 12 часов * 3600 секунд)
Serial.print ("Variant 1: ");
Serial.println (var1);
Serial.print ("Variant 2: ");
Serial.println (var2);
// Получаем направление вращения, но тут я не уверен…
// Выбираем наименьшее значение смещения.
// Если первоначальное направление в право, меняем на противоположное.
if (var2 < var1 )
{
if (sec > 0) sec=-var2; else sec=var2; // Волшебство =)
}
Serial.print ("Select: ");
Serial.print(sec);
Serial.print (" >>> ");
sec = abs(sec);
hh = sec / 3600;
mm = (sec - hh * 3600) / 60;
ss = sec - hh * 3600 - mm * 60;
Serial.print (hh);
Serial.print (":");
Serial.print (mm);
Serial.print (":");
Serial.println (ss);
Serial.println("----------");
}
delay(5000);
Time: 12:55:33 >>> 0:10:33
Variant 1: 45900
Variant 2: -2700
Select: -2700 >>> 0:45:0
----------
Time: 12:55:33 >>> 1:10:33
Variant 1: 42300
Variant 2: 900
Select: 900 >>> 0:15:0
----------
Time: 12:55:33 >>> 2:10:33
Variant 1: 38700
Variant 2: 4500
Select: 4500 >>> 1:15:0
----------
Time: 12:55:33 >>> 3:10:33
Variant 1: 35100
Variant 2: 8100
Select: 8100 >>> 2:15:0
----------
Time: 12:55:33 >>> 4:10:33
Variant 1: 31500
Variant 2: 11700
Select: 11700 >>> 3:15:0
----------
Time: 12:55:33 >>> 5:10:33
Variant 1: 27900
Variant 2: 15300
Select: 15300 >>> 4:15:0
----------
Time: 12:55:33 >>> 6:10:33
Variant 1: 24300
Variant 2: 18900
Select: 18900 >>> 5:15:0
----------
Time: 12:55:33 >>> 7:10:33
Variant 1: 20700
Variant 2: 22500
Select: -20700 >>> 5:45:0
----------
Time: 12:55:33 >>> 8:10:33
Variant 1: 17100
Variant 2: 26100
Select: -17100 >>> 4:45:0
----------
Time: 12:55:33 >>> 9:10:33
Variant 1: 13500
Variant 2: 29700
Select: -13500 >>> 3:45:0
----------
Time: 12:55:33 >>> 10:10:33
Variant 1: 9900
Variant 2: 33300
Select: -9900 >>> 2:45:0
----------
Time: 12:55:33 >>> 11:10:33
Variant 1: 6300
Variant 2: 36900
Select: -6300 >>> 1:45:0
----------
Time: 12:55:33 >>> 12:10:33
Variant 1: 2700
Variant 2: 40500
Select: -2700 >>> 0:45:0
----------
Time: 12:55:33 >>> 13:10:33
Variant 1: 42300
Variant 2: 900
Select: 900 >>> 0:15:0
----------
Time: 12:55:33 >>> 14:10:33
Variant 1: 38700
Variant 2: 4500
Select: 4500 >>> 1:15:0
----------
Time: 12:55:33 >>> 15:10:33
Variant 1: 35100
Variant 2: 8100
Select: 8100 >>> 2:15:0
----------
Time: 12:55:33 >>> 16:10:33
Variant 1: 31500
Variant 2: 11700
Select: 11700 >>> 3:15:0
----------
Time: 12:55:33 >>> 17:10:33
Variant 1: 27900
Variant 2: 15300
Select: 15300 >>> 4:15:0
----------
Time: 12:55:33 >>> 18:10:33
Variant 1: 24300
Variant 2: 18900
Select: 18900 >>> 5:15:0
----------
Time: 12:55:33 >>> 19:10:33
Variant 1: 20700
Variant 2: 22500
Select: -20700 >>> 5:45:0
----------
Time: 12:55:33 >>> 20:10:33
Variant 1: 17100
Variant 2: 26100
Select: -17100 >>> 4:45:0
----------
Time: 12:55:33 >>> 21:10:33
Variant 1: 13500
Variant 2: 29700
Select: -13500 >>> 3:45:0
----------
Time: 12:55:33 >>> 22:10:33
Variant 1: 9900
Variant 2: 33300
Select: -9900 >>> 2:45:0
----------
Текущее время: 11:55:33 >> 1:10:33
Выбрано: 10:45:00 ( -38700 )
Текущее время: 11:55:33 >> 1:10:33
Вариант 1: 10:45:00 ( 38700 )
Вариант 2: 01:15:00 ( 4500 )
Выбрано: 01:15:00 ( 4500 )
Сб ноя 23, 2019 12:49:41
Сб ноя 23, 2019 23:28:30
Вс ноя 24, 2019 13:18:43
Вс ноя 24, 2019 13:38:06
Вс ноя 24, 2019 20:35:06
Вс ноя 24, 2019 20:44:11
Пн ноя 25, 2019 22:51:25
Вт ноя 26, 2019 07:20:45
Вт ноя 26, 2019 08:48:01
Вт ноя 26, 2019 12:00:16
Вт ноя 26, 2019 17:53:30
Вт ноя 26, 2019 19:10:54