Официальный сайт компании Arduino по адресу arduino.cc
Вопрос с опросами пинов или выполнение кода по таймеру millis
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 14/09/2020 - 00:58
Приветствую всех камрады!
вопрос такой, нужно сделать как можно проще выполнение функции по истечении счетчика времени
их может быть много, поэтому делаю такой массив
//===================Структура таймеров для работы=================== struct TimersWork { word PERIOD_; //--------------Время периода срабатывания----------- word PERIOD_LAST; //--------------Последние время измерения------------ boolean STATE; //--------------Если сработало----------------------- } type ; struct TimersWork LDFlash = {1000,0,LOW}; void loop() { struct TimersWork LEDFlash = TTimerWork(LDFlash); if (LDFlash.STATE) { LDFlash.PERIOD_LAST = 0; Serial.println("OK=");//+boolean(LDFlash.STATE) } else { Serial.println("NO=");//+boolean(LDFlash.STATE) } } struct TimersWork TTimerWork(struct TimersWork DDTimer) { unsigned long currentMillis = millis(); // таймер на millis() if (currentMillis - DDTimer.PERIOD_LAST >= DDTimer.PERIOD_) { DDTimer.PERIOD_LAST = currentMillis; Serial.println(DDTimer.PERIOD_LAST); if (DDTimer.STATE != LOW) { DDTimer.STATE = LOW; } else { DDTimer.STATE = HIGH; DDTimer.PERIOD_LAST = 0; //tone(pinBuzzer, 2800, 500); } } return DDTimer; }
вообщем вопрос, я не силен в ардуине и тем более в Си, вопрос такой как сделать, так, чтоб при истечении времени, скажем 1000 мсек, возвращала true и обнуляла счетчик?
вообщем вопрос, я не силен в ардуине и тем более в Си
тогда спросите там, где вы это все списали...
вообщем вопрос, я не силен в ардуине и тем более в Си
тогда спросите там, где вы это все списали...
кто списал? я мучаюсь с разной таймерной штукой и не у кого не списывал,
а с чего ты решил, что я списал?
Посмотри как здесь сделано.
https://github.com/DetSimen/Arduino_TimerList
Посмотри как здесь сделано.
https://github.com/DetSimen/Arduino_TimerList
не, это не то, похоже но не то
тогда отвецтвуй, что у тебя в строке 25 происходит, и что будет, когда выполнится 34 строка. Ну и до кучи, в структуре замени поля word на uint32_t
вопрос в том, что я не силен в Си, но силен в ассемблере, делфи*(pascal, php, js, perl), а вот с в Си нет такой глубости познаний, конечно, через пару часов я разберусь, вопрос тут в реализации
как сделать, так, чтоб при истечении времени, скажем 1000 мсек, возвращала true и обнуляла счетчик?
Хто?
вопрос в том, что я не силен в Си, но силен в ассемблере, делфи*(pascal, php, js, perl)
Нет. В этом ты тоже не силён.
вопрос в том, что я не силен в Си, но силен в ассемблере, делфи*(pascal, php, js, perl)
Нет. В этом ты тоже не силён.
согласен, но ты видел первые мои посты? напиши на коленки функцию по первому моему посту
согласен, но ты видел первые мои посты? напиши на коленки функцию по первому моему посту
Так по первому посту нифига не понятно, что именно тебе надо-то
напиши на коленки функцию по первому моему посту
Написал. Выложил на git, ссылку тебе дал. Там именно массив таймеров, по истечению интервала, вызывается переданная функция. Как можно проще.
благодарю, я видел, но это не совсем то, что нужно
тогда я напомню название твоей темы
Вопрос с опросами пинов или выполнение кода по таймеру millis
чем моё решение сюда не вписывается? По сработавшему таймеру я могу опрашивать пины или выполнять любую другую функцию, например, гасить подсветку LCD через 5 сек после последнего нажатия кнопки.
напиши на коленки функцию по первому моему посту
Написал. Выложил на git, ссылку тебе дал. Там именно массив таймеров, по истечению интервала, вызывается переданная функция. Как можно проще.
сорри, все прочитал, вроде как нужно мне)))
напиши на коленки функцию по первому моему посту
Написал. Выложил на git, ссылку тебе дал. Там именно массив таймеров, по истечению интервала, вызывается переданная функция. Как можно проще.
сорри, все прочитал, вроде как нужно мне)))
не то
А что то? Твоя программа не компилируется. Loop строчит как пулемёт в сериал. Пины не опрашиваются. Millis вызываетя криво в инициализации переменной. Типы перемешаны. Setup отсутвует.
Попробуй нарисовать алгоритм блоксхему чего ты хочешь. Может самому станет понятно что делать. Не то про дедовы таймеры это показатель. Они полностью отвечают поставленной задаче.
ну там все присутсвует
тебе это что-то поможет?
я тебе последний раз говорю, millis() отдаёт uint32_t, а пихаешь ты его в word PERIOD_LAST;
пи.дец, это клиника
082 LDFlash.PERIOD_LAST = 0;
127
word TimerMils = currentMillis - DDTimer.PERIOD_LAST
128
if
(TimerMils >= DDTimer.PERIOD_)
О каком знании ассемблера ты вещаешь?
я тебе последний раз говорю, millis() отдаёт uint32_t, а пихаешь ты его в word PERIOD_LAST
епсти, ты прав, благодарствую
я тебе последний раз говорю, millis() отдаёт uint32_t, а пихаешь ты его в word PERIOD_LAST
епсти, ты прав, благодарствую
хотя все равно не работает
хотя все равно не работает
Естественно. Весь код чуть менее чем полностью похож на авно.
я тебе последний раз говорю, millis() отдаёт uint32_t, а пихаешь ты его в word PERIOD_LAST;
пи.дец, это клиника
082 LDFlash.PERIOD_LAST = 0;
127
word TimerMils = currentMillis - DDTimer.PERIOD_LAST
128
if
(TimerMils >= DDTimer.PERIOD_)
О каком знании ассемблера ты вещаешь?
то-то и оно, глянул как-то ассемблерную программу для атмеги и, не, не потяну, там даташит читать да читать, регистры строго регламентированы, уж лучше в ардуино IDE потихоньку ковыряться
ассемблер + php, js, perl - это расчетверение личности, как минимум.
ассемблер понятие абстрактное, а вот php после С понятен, был у меня кластер на перле, шаг влево, шаг вправо - расстрел на месте, JS даже не пытался, может он такой как и я программист? )))
Опять "20 языков на уровне выше ..., тока вот Си в эти 20 не входит".
через пару часов я разберусь
Прошло уже восемь. Надеюсь, разобрался и вопрос снят? И чего было постить-то?
вообщем, я понял...идете все нахюююй
И Вам того же!
Опять "20 языков на уровне выше ..., тока вот Си в эти 20 не входит".
и как абычно - вранье чистой воды.
Списал где-то код и теперь пытается подогнать под свои хотелки...
Может убить тему, чего структурированное хамство поощрять?
Весь код чуть менее чем полностью похож на авно.
Я не хамил, а высказывал своё мнение. Посылать стал первым - ТС.
Весь код чуть менее чем полностью похож на авно.
Я не хамил, а высказывал своё мнение. Посылать стал первым - ТС.
Дед, к тебе вообще вопросов нет, ты предложил, человек сказал, что "этот гвоздь не в ту стену", после этого ответа его уровень понятен даже новичку который хотя бы немного программирует (КАК Я ;-))) )...