Множественный таймер (мультитаймер) с привязкой к RTC

Dorfman
Dorfman аватар
Offline
Зарегистрирован: 02.02.2020

Имеем ардуинку (пусть будет Уно), группу кнопок (или энкодер) и часы реального времени. Нужно завести несколько таймеров, которые будут подавать сигнал через определённое время (к примеру, каждые 5 минут, каждые 8 минут, каждые 14 минут и т.д...), причём запускать каждый таймер каждый день нужно вручную.

Применение - конечная остановка автобусов, отъезжающих по разным маршрутам с разными интервалами движения. Настраивать планирую гибко: добавляю номер маршрута, интервал движения, записываю в ЕЕПРОМ. Выхожу из настроек, выбираю номер маршрута и запускаю конкретный таймер (то есть автобус отъезжает).

Не могу понять, с чего стартануть, нужно чтобы кто-то носом ткнул.

Dorfman
Dorfman аватар
Offline
Зарегистрирован: 02.02.2020

Dorfman пишет:

Применение - конечная остановка автобусов, отъезжающих по разным маршрутам с разными интервалами движения.

Уточняю: девайс должен подавать звуковой сигнал и выводить на экран номер маршрута, которому необходимо отправляться. Забыл про LCD-шку написать

rkit
Offline
Зарегистрирован: 23.11.2016

Начни с построения структуры таблицы расписания.

Dorfman
Dorfman аватар
Offline
Зарегистрирован: 02.02.2020

rkit пишет:

Начни с построения структуры таблицы расписания.

Структуру я придумал. Это двумерный массив, в котором 3 столбца и плавающее количество строк.

Столбец 0 - id, которое связывает номер маршрута с его интервалом, столбец 1 - собственно номер (строковое имя) маршрута, и столбец 2 - интервал. Вот дальше начинаются грабли, которые я не могу понять. Как создать в EEPROM плавающий массив? То есть я хочу добавлять маршруты через настройки, а не вручную в коде скетча.

А расписания как такового нет, есть только интервалы движения, которые отличаются у всех маршрутов

rkit
Offline
Зарегистрирован: 23.11.2016

Так же как и в обычной памяти. Ячейка для количества элемента и массив в остальных.

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

Dorfman пишет:

Не могу понять, с чего стартануть

По уму - вот с этого.

Если изучите как следует, то у Вас больше не будет ни таких топиков, ни архитектурных решений вроде описанного

Dorfman пишет:

двумерный массив, в котором 3 столбца и плавающее количество строк. Столбец 0 - id, которое связывает номер маршрута с его интервалом, столбец 1 - собственно номер (строковое имя) маршрута, и столбец 2 - интервал. 

единственно достоинство которых - простота, но при разработке которых думали именно о простоте структуры, а вовсе не о простоте решения поставленной задачи. Потому, сразу же и

Dorfman пишет:

начинаются грабли

что естественно. Так всегда бывает, когда структура данных неадекватна задаче.

Dorfman
Dorfman аватар
Offline
Зарегистрирован: 02.02.2020

ЕвгенийП пишет:
Так всегда бывает, когда структура данных неадекватна задаче.

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

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

Dorfman пишет:
Если можете посоветовать правильное решение
Могу и уже сделал это. Правильное решение - внимательно изучить ту книгу, а потом только браться за эту задачу (и за многие другие), т.к. книга - простейшее (из мне известных) изложение идей автоматного программирования. Пригодится везде и всегда.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вот тебе таймеров гроздь 

https://github.com/DetSimen/Arduino_TimerList