Таймер обратного отсчета
- Войдите на сайт для отправки комментариев
Сб, 03/03/2018 - 16:12
Доброго времени суток. Нужна помощь в создании СКЕТЧА для таймера обратного отсчета на ардуино. Задача сделать таймер показывающий на 1 LED экране сколько прошло лет от заданной точки, на 2 - месяцев, 3 - недель, 4 - дней, 5- часов:секунд. LED экраны думаю использовать Tm1637 4-разрядный 0.56 дюймов 7 сегментов.
Для начала нужно собрать устройство.
Т.е. у Вас будет пять экранов? ну, Вы сначала их соберите, запустите и для начала покажите на 1-ом цифру 1, на втором - цифру 2, на третьем, цифру 3, а тогда и поговорим. Тем более, что скетч очень сильно зависит от того, как именно Вы их соберёте.
В этом тоже есть вопрос. Мне мужно в схему включать часы реального времени или нужно только ардуино и экраны.
Сколько искал не нашел ни одного проекта чтобы отсчитывали именно так.
думаю использовать такой. или есть что-нибудь более дешево и сердито.
Сколько искал не нашел ни одного проекта чтобы отсчитывали именно так.
а вы не ищите "именно так" Поищите скетчи часов на ардуино - их в сети десятки. А когда научитесь выводить текущее время - только именно научитесь, а не тупо скопируете готовое - думаю, переделать в обратный таймер труда не составит.
Всем привет! Как по состояние трех входов запустить три не зависимых таймера ?
mag155,
Яш надеюсь доходит что timer1,2,3 имеет тип unsigned long, тип interval1,2,3 - целое, что время в миллисекундах (название функции намекает) и in1,2,3 - дефайны на номера выводов на кот. отсл. состояние. Алсо INPUT_PULLUP подразумевает что эти выводы не могут быть A6, A7.
Но разве millis не использует один таймер ? Потому как все три должны работать не зависимо друг от друга .
И импульс на вкл. Таймера очень короткий. То есть нажали подождали а потом включили тут не пройдет .Нужно есть импульс ждем потом включаем и так 3 независимых канала. Подскажите как это реализовать ?
Вы разные имена переменной с меткой времени видите? timer1, timer2 и т. д.
millis() одна, да делает за всех.
Если импульс короткий - программу из условия вытащить в друге условие по флагу, а вместо неё в условии нажатия кнопки на выводе ставить этот флаг. Предусмотреть чем его сбрасывать.
Если импуль очень короткий - всё как сказано выше, но условие кнопки будет не if(!digitalWrite(x)) а в функции, которая делается обработчиком при помощи attachInterrupt(). Так же, с флагом дабы не было затупов, либо внутри этой функции на некоторое время detachInterrupt(). Учтите, что внутри функций-обработчиков прерываний время не работает (вызов millis() возвращает одно и то же число).
А как же тогда менять время от импульса до включения входа если millis возвращает одно и тоже число ?
До включения выхода .
Молча. Есть 100500 способов.
1. Лоховской способ. Новичкам он кажется самым простым, но на самом деле, чтобы его отладить нужно быть ... не новичком: завести три пары переменных (начала - продолжительность) и все три отрабатывать на одном миллисе.
2. более или менее нормальный. Завести класс "таймер". Создать три экземпляра (если надо, то и пять) и спокойно ими пользоваться. Намного проще и потому легче отлаживать.
Остальные 100498 способов я пока опущу.
Памереть и не вставать!
Идею я понял. Берем таймер завод им три переменные и считаем. Меня запутала информация где автор писал что один таймер может считать одно действие То есть для 3 действий надо три таймера. Но как я понял каждый таймер может работать с несколькими переменными. А но если мы используем например таймер который использует шим то параллельно с ним шим уже работать не будет. Так.?
Вам надо понять, что переменные способны управлять ходом таймера точно так же, как ваш взгляд на часы может управлять заводом пружины.
При частоте импульсов 100 герц простое считывание состояние входа if(!digitalWrite(x)) будет успевать ?
Успевать куда?
Отслеживать состояние входа и запускать таймер. То есть считываем импульс запускаем таймер после отсчета таймера вкл. Выход.
Однозначно.
Это радует.
Гуглить TTimerList
После празьников/запоя я исправленную версию выкладу.
Покашто там AddStopped неправильно работает
Ок.
Всем привет нашел вот такой таймер который запускается по приррыванию. Вопрос как допилить так чтоб когда происходит прерывание проверять по какой из фаз оно прошло то есть какой из трех входов активный запускать таймер и включать свой выход по истичению таймера?
Вопрос как допилить
А как все нормальные люди пилят?
А как все нормальные люди пилят?
И самое смешное, это не прикол. Именно таким образом, боец из южных республик, тогдашнего СССР, срезал швелер выступающий из стены первого блока РоАЭС, примерно на уровне третьего этажа. На вопрос, накуя так, ответил: Командир сказала, ровно со стеной. Был премирован дембелем.
Клас !!!