ARDUINO нуждаюсь в разьяснении по таймеру

Сергей кукурузник

✩✩✩✩✩✩✩
28 Июн 2021
4
0
Доброго времени суток , я не программист от слова вообще, пытался понять как что работает но толку мало , в общем такая штуковина , брал скетч таймера и пытался слепить несколько штук подряд, сделал по примеру статьи , прописал в установках TIMER 1 ,TIMER 2,TIMER 3 и ожидал что они отработают по очереди ,один закончит отсчет другой начнет и тд. а они начали отчет как бы одновременно, подскажите как сделать чтоб отрабатывали последовательно?
 

bort707

★★★★★★✩
21 Сен 2020
3,019
901
Запускать последующий только когда отработает предыдущий.
А вообще посмотрите форум, сегодня закончили обсуждать тему как под копирку - тоже таймеры, тоже три, тоже последовательно...
Курсовики вам чтоли одинаковые дали?
 
  • Лойс +1
Реакции: ТехнарьКто

Сергей кукурузник

✩✩✩✩✩✩✩
28 Июн 2021
4
0
для курсовиков мне уже поздно скоро полтинник потому и не могу вьехать как это все работает, просто появилась нужда в устройстве железок еще нет (механики) пытаюсь осилить своими силами "мозги", к таймерам прикрутятся релюшки и шим к одному из них в общем пытаюсь подготовиться заблаговременно
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
271
437
Доброго времени суток , я не программист от слова вообще, пытался понять как что работает но толку мало
Таймеры обеспечивают отсчёт времени с момента запуска. Надо понимать, с момента запуска таймера, а не включения ардуино. Самое главное их свойство – это то, что данный отсчёт происходит независимо от работы основного кода программы, этим обеспечивается стабильная работа программы и экономия ресурсов контроллера. То есть в тот момент, когда идёт отсчёт, программа не останавливается, как при использовании обычных задержек. Вот для кого тут все подробно описано? Я уже прочитал и понял, чего и Вам советую.
 

Сергей кукурузник

✩✩✩✩✩✩✩
28 Июн 2021
4
0
bort707,смотрел эту тему ,там другая задача , там задержки старта ( одна задача стартует раньше другая через промежуток)в моем случае по истечению 1ой задачи включается (таймера) включается следующая задача и вопрос ччоб не засирать форум другими темами , таймер используется один в данном случае просто переназначаются задания для таймера , я правильно понимаю ?
 

poty

★★★★★★✩
19 Фев 2020
3,197
932
@Сергей кукурузник, задача в указанной теме ровно такая же, просто решена она так по причине того, что в примерах так было.
Чтобы понимать задачу, Вам нужно подробнее рассказать, что Вы хотите делать. Это крайне важно, в первую очередь для себя - алгоритмическое мышление называется. Вот я тоже прочитал первое сообщение и даже отвечать не стал, потому что ничего не понятно. Да Вы и по ответам можете это проследить: @bort707 Вам рассказал про программные таймеры, @ТехнарьКто - про аппаратные. И, самое главное, с той постановкой задачи, что приведена в первом сообщении - оба правы!
Отвечая на Ваше последнее сообщение: если речь идёт об использовании библиотеки таймеров от Гайвера (или любой другой), то таймер может работать в двух версиях: интервал (запуск, отсчёт, останов) и период (запуск, срабатывание каждые N миллисекунд или микросекунд от времени запуска). Для задачи последовательного отсчёта интервалов больше подходит первый вариант, но второй к нему адаптируется буквально за одну "лишнюю" команду. Да, можно использовать один таймер, если это действительно процесс линейный, а не какой-нибудь иерархический и допускающий параллельное выполнение (как оказалось в соседней ветке).
 
  • Лойс +1
Реакции: ТехнарьКто

Сергей кукурузник

✩✩✩✩✩✩✩
28 Июн 2021
4
0
@poty, в общем пытаюсь решить такую задачу нужно включить шим (мотор) чтоб он отработал по таймеру(задание завершено) исполняем следующую задачу(реле по таймеру) но тут как раз без проблем готовых примеров вагон и маленькая тележка , я не могу понять как их выстроить в очередь
 

bort707

★★★★★★✩
21 Сен 2020
3,019
901
Если задачи независимы друг от друга - запустите для каждой свой таймер да и все. Если же задача X должна выполняться через заданное время после задачи Y - то и таймер для второй задачи надо запускать после завершения первой.
 

poty

★★★★★★✩
19 Фев 2020
3,197
932

@Сергей кукурузник, всего 4 состояния:
1. Ждём команды. При поступлении - запускаем таймер, переходим в состояние 2.

2. Ждём сработки таймера. Таймер сработал - запускаем ещё раз с новым интервалом, переходим в состояние 3.

3. Ждём сработки таймера. Таймер сработал - включаем реле. Переходим в состояние 4.

4. Ничего не делаем.

То есть вводим переменную "состояние" и через switch переключаемся на нужную программу реагирования.
 

nesergen

✩✩✩✩✩✩✩
5 Июл 2021
3
0
Задам и я умный вопрос. :)
Создаю таймер на срабатывание каждую 1 секунду. Даю задание на выполнение, которое длится 1,5 секунды, т.е. таймер срабатывает быстрее чем выполняется задание. Что будет, когда придет время повторного срабатывания таймера? Прервет ли он выполнение предыдущего задания или доделает его до конца?
 

poty

★★★★★★✩
19 Фев 2020
3,197
932
@nesergen, если речь идёт о "программном" таймере, то он "сработает" тогда, когда Вы к нему обратитесь (т.е., проверите, прошёл ли уже запрошенный интервал). Т.е., в Вашем примере, через 1,5 секунды таймер покажет, что он сработал, если он периодический, то следующий раз он "сработает" через 0,5 секунды (чтобы в тотале было 2 секунды).
Если таймер аппаратный, то возникает прерывание работы программы (опять же, если прерывания разрешены) и что Вы тут будете с ним делать - даётся на откуп Вам.
 
  • Лойс +1
Реакции: nesergen