Школьные звонки с точки зрения ООП. Теоретический вопрос

18.5#  Serial.println(currentTime);
1 лайк

В loop’е это присвоение.

Глянь выше что пишу

Не знаю, что он говорит, но конструкция неверная.

Что я зря старый комент удалил? Что в сериал при
Первоначальной конструкции выводит?

Этой вот

В разобранном виде, система не работает, а в собранном в стенде 380в.
:slight_smile:
Я туда отказываюсь телефон подключать


Так такое надо на малоточке опробовать.

Какой то больной гений собирал часы на 555, с кучей логики.
Что бы время выставить нужно было полдня кнопку нажимать.
А в качестве автономного питания стоял аккумулятор от УПСа, который в итоге благополучно помер от старости.
Все выкинул оттуда нахер, прицепил полумертвую дуню (часть пинов сгоревших) , которая берет время с RTC и пинает древнюю отечественную часовую логику.
Ну ещё из-за прожорливых диодов управляются они батареей кт315.(по 7шт на регистр)
В нужное время пиликает буззером.

Работало 4 года, потом пришло время менять cr2032, ну заодно решил и прошивку обновить.

Мои глупые мысли только в том, что операции выполняются не так как ты хочешь, а 3480 не является корнем двойки.

Это будет работать только если секунды изменяются от 0 до 3600.
Сначало надо взять остаток от s=currentTime%3600; , а уж потом условие if(s%3480==0)

И не захочет. Она работает не на каждую 58-ую минуту часа, а на каждые 58 минут.
На самом первом часе сработает правильно, на втором уйдёт на 2 минуты (сработает на 56-ую минуту часа, потом на 54-ую и т.д. Раз в 30 часов будет срабатывать правильно.

Кстати, не понял почему в одной строке <=2, а в другой <=1.

Так как Вы сделали - нормально. Но, если Вам уж так хочется обфусцировать код, напишите

if (currentTime % 3600 % 3480)<=1)

тогда нормально всё должно быть, но это извращение.

Почему так ?
Без пояснительной бригады не пойму

currentTime время в секундах.
1671126586 на данный момент.
Из этого получаем остаток при делении на 3600(один час)
В начале каждого часа есть сигнал.

Берём отсаток при делении на 3480 (58минут), нет сигнала.

Упс, все дошло.
3600 будет кратно значению hour() в пересчёте на секунды, а 3480 , будет хер пойми когда

А чего тут понимать. Давайте посчитаем когда ct % 3480 будет равно 0? Поехали. Просто считаем на калькуляторе:

1   3480 -  0:58
2   6960 -  1:56
3  10440 -  2:54
4  13920 -  3:52
5  17400 -  4:50
6  20880 -  5:48
7  24360 -  6:46
8  27840 -  7:44
9  31320 -  8:42
10 34800 -  9:40
11 38280 - 10:38
12 41760 - 11:36

Вот оно Ваше уплывание на 2 минуты каждый час.

Количество открывающих скобок не совпадает с количеством закрывающих.

Поправил, но это не оно.
В чем причина, уже написано