Расскажите доступно про таймеры
- Войдите на сайт для отправки комментариев
Вс, 01/11/2020 - 13:25
Здравствуйте. Мне нужно
1. раз в 0.3 сек. считывать показания каждого потенциометра (а их четыре).
2. раз в 2 секунды 5 раз с перерывом в 0.1 сек. считывать показания термопары (для усреднения, там температура пляшет). Всего у меня 2 термопары.
3. раз в секунду получать дистанцию с дальномера
4. Ещё вывод(обновление) информации на дисплеях, включение/выключение реле, 2 серво и мигание светодиодами.
Теперь вопрос: как без использования delay() всё это сделать? может, есть готовая функция-аналог или проверенное временем решение?
Спасибо.
http://arduino.ru/tutorials/BlinkWithoutDelay
С такими запросами иди в "Ищу исполнителя".
С нуля забесплатно твои хотелки никто за тебя реализовывать не будет
Теперь вопрос: как без использования delay() всё это сделать? может, есть готовая функция-аналог или проверенное временем решение?
Спасибо.
Встречный вопрос: как С ИСПОЛЬЗОВАНИЕМ delay() всё это сделать? ;))))
Пожалуйста.
Я своими таймерами пользуюсь. Но, думаю, тебе они не помогут.
Похоже, я нашёл то, что мне нужно: timer-api.h и timer_init_ISR_XYHz
Теперь вопрос: как без использования delay() всё это сделать? может, есть готовая функция-аналог или проверенное временем решение?
Спасибо.
Встречный вопрос: как С ИСПОЛЬЗОВАНИЕМ delay() всё это сделать? ;))))
Пожалуйста.
Я делал всё просто: внутри loop один delay(100) и пропуск 2 циклов там, где нужно сделать замер (или вывод) раз в 0.3 секунды, девяти - где нужно сделать замер (или вывод) раз в секунду. Так делает большинство. Но по мере обрастания проекта датчиками и добавления (и отключения) в проект дополнительных циклов с задержкой, цикл стал выполняться не раз в 0.1 секунду, а порой в 3 раза дольше, отсюда и возник вопрос, который в теме.
Я своими таймерами пользуюсь. Но, думаю, тебе они не помогут.
чего так сразу - не помогут, а вдруг, даже хотел ссылку дать
даже хотел ссылку дать
Не надо, смысла нет.
даже хотел ссылку дать
Не надо, смысла нет.
а как ты вычисляешь?
по уровню вопросов
Да ты што!? ;))) Параметры статистической выборки "большинства" можно узнать? ;)))
Посмотрите на название раздела
Что-то "сломалось" на этом форуме. Задавать вопросы здесЯ уже не "модно" - ибо засрут спамом беспонтовым или обвинят в "тупизЪме". Пасиму, советую, разобрацца самому, и полезно, и толк будет. Так-сказать инвестицции фсебя)))))))
Мне то-же пришлось "пободацца" с таймером на 85-й таньке. Нипонятки были, но всё прошло успешно и без сторонней помощи, что не может не радовать.
Что-то "сломалось" на этом форуме. Задавать вопросы здесЯ уже не "модно" - ибо засрут спамом беспонтовым или обвинят в "тупизЪме". Пасиму, советую, разобрацца самому, и полезно, и толк будет. Так-сказать инвестицции фсебя)))))))
Мне то-же пришлось "пободацца" с таймером на 85-й таньке. Нипонятки были, но всё прошло успешно и без сторонней помощи, что не может не радовать.
Ну значит мой совет "почитать даташит", был к месту
Посмотрите на название раздела
для решения вашей задачи используют функцию миллис. Смотрите ответ #1
Ну значит мой совет "почитать даташит", был к месту
Если бы он был на бумаге, да с-утреца, возможно и был бы к месту, возможно. Если других альтернатиф не было бы, опять-же. Реально понять не могу, здесь посоветовать как поправить моргало светодиодное только могут без хлама и все на этом? Реально не могу представить программирование камней без датащей, одновременно открытых вместе с иде? Вот жеж не пейсал, типа памагите, пейсал, мол, пачиму так, и никак по другому... но сццуко, надо всё переиначить, перевернуть и выставить себя гироем - вот мол, я направил его на путь истинный, четануть датаЩей... Единственный, кто хоть что-то сказал был Макс, который дал понять, что частота там неизменна, хотя я про это и спрашивал в самом первом посте. Так-шо млацца, так-диржать!
NMI, чё ты заныл-то?
Я вот ни разу не видел от тебя полезной реплики. Или понты дешёвые - мол я то, я се, а вы не шарите ни в чем, или вообще непонятно что написано.
Что заслужил, то и получил. Хватит на плохой форум жаловаться, можешь на другом пальцы позагибать.
Ненене, продолжай в том-же стиле. Я вааЩе ничо не спрашивал серьёзного здесь, похож больше и спрашивать не стоит. ДатаЩи- нашефсё!
Расслабсо, йоптэ )))))))))))))))))
Садман41! Поца уже столько раз макали в собственное
дерьмоневежество, что сосчитать нельзя. Теперь ему тут на тупые вопросы должны отвечать, а то оно обиццо! А уж мы то как переживаем! Слов нет!Похоже, я нашёл то, что мне нужно: timer-api.h и timer_init_ISR_XYHz
Хрена-се! А это точно то, что Вам нужно? Ну, если так, то успехов :-)
Что-то "сломалось" на этом форуме. Задавать вопросы здесЯ уже не "модно" - ибо засрут спамом беспонтовым или обвинят в "тупизЪме". Пасиму, советую, разобрацца самому, и полезно, и толк будет. Так-сказать инвестицции фсебя)))))))
Я заметил на форуме неуравновешенных персонажей, которым важно показать, какие они умные, хотя в более простых вопросах тупят они похлеще, чем новички в Ардуино типа меня.
Я довольно быстро нашёл элегантное решение https://habr.com/ru/post/337430/.
Посмотрите на название раздела
Спасибо за помощь. Уже нашёл решение чуть интересней (и проще) для меня
Похоже, я нашёл то, что мне нужно: timer-api.h и timer_init_ISR_XYHz
Хрена-се! А это точно то, что Вам нужно? Ну, если так, то успехов :-)
Благодарю.
Я заметил на форуме неуравновешенных персонажей, которым важно показать, какие они умные, хотя в более простых вопросах тупят они похлеще, чем новички в Ардуино типа меня.
Сейчас модно не "тупить", а "уводить" в "сторону" - поРусски = ССатьВ_уши!! Обвинить кого-то в некомпетенции, мотивируя (например) незнанием, чо такое указатель или структура.. этт как пару пальцев помочить.
Ниабращщай внимания, чо-то случилось с этим форумом, явно не хорошее.
И, мой тебе совет - в утубе есть цельная КУЧА роликофф, в которых простым и доступным языком описаны и рассказаны методы решения твоей задачи.Не трать время зря, посмотри ролики, полезнее будет для себя, да и клянчить чото здесь - себя не уважать. Забей)))
Я довольно быстро нашёл элегантное решение https://habr.com/ru/post/337430/.
Ну, не надо называть "элегантным решением" то, что вы просто поленились разобраться в вопросе.
куда полезнее было бы додуматься до подобного самостоятельно. Все эти костыли имеют предел числа одновременно обрабатываемых событий или "скорострельности". Не понимая, как это устроено внутри - вы довольно быстро достигнете этого предела и не опять не будете знать, что делать дальше. Разобравшись в вопросе самостоятельно - пределом бы для вас были только аппаратные возможности контроллера.
Это тот случай когда "И целого millis() мало"...
мой тебе совет - в утубе есть цельная КУЧА роликофф, в которых простым и доступным языком описаны и рассказаны методы решения твоей задачи.Не трать время зря, посмотри ролики, полезнее будет для себя, да и клянчить чото здесь - себя не уважать. Забей)))
С этм трудно спорить. Всегда правильнее найти решение самому, чем ждать, когда тебе добрый дядя все разжует.
так что это совет правильный, и тебе, NMI, тоже было бы полезно им пользоваться. А то один раз в жизни заставили залезть в даташит - и надо же, сколько жалоб и причитаний на форуме...
А то один раз в жизни заставили залезть в даташит - и надо же, сколько жалоб и причитаний на форуме...
А, вот оно как? Т.е. я вчерась первый раз в жизни прочитал даташит? )))))))))))))))))))))))))))))
По просьбе форумчанина? )))))))))))))))))))))))))))))))))
Да ещё на англицком?)))))))))))))))))))))))))))))))))
Которого я незнаю)))))))))))))))))))))))))))
И я ишшо и смел пожаловацца?)))))))))))))))))))))))))))))))))))))
пипэц(((
я вчерась первый раз в жизни прочитал даташит по просьбе форумчанина на англицком которого я незнаю
ну, с почином. Читай почаще, мож и английский подтянешь
а вот это зря. Мы ж тебе добра желаем
Мы ж тебе добра желаем
Надеюсь, что это действительно так)))
Ну вот и молодец, сам сумел похуглить.
теперь разберись и радуйся.
Похоже скоро надо открывать разделы по обучению новичков анлицкому языку, да и для русского языка нужен отдельный раздел. Умные люди говорят, что владение этими языками хотя бы на среднем уровне упростит освоение Ардуино.
Садман41! Поца уже столько раз макали в собственное
дерьмоневежество, что сосчитать нельзя. Теперь ему тут на тупые вопросы должны отвечать, а то оно обиццо! А уж мы то как переживаем! Слов нет!Так уж повелось, что на форум обращаются зелёные (специально, чтоб ни один зануда не придирался потом к словам, речь не о цвете, а о неопытности) новички. Обращаются за советом, а не послушать нравоучения от невежественного закомплексованного старика, который на форум ходит самоутвердиться.
И то что вас лично не макали в ваше невежество, не говорит о том, что вы шибко умный - это лишь некий показатель культурности ваших виртуальных собеседников.
Я довольно быстро нашёл элегантное решение https://habr.com/ru/post/337430/.
Ну, не надо называть "элегантным решением" то, что вы просто поленились разобраться в вопросе.
куда полезнее было бы додуматься до подобного самостоятельно. Все эти костыли имеют предел числа одновременно обрабатываемых событий или "скорострельности". Не понимая, как это устроено внутри - вы довольно быстро достигнете этого предела и не опять не будете знать, что делать дальше. Разобравшись в вопросе самостоятельно - пределом бы для вас были только аппаратные возможности контроллера.
Каюсь, поленился.
В своё оправдание скажу, что mills я нашёл ещё до создания темы (и в других языках функции времени использовал), но как представил, сколько ж мне придётся вводить новых переменных и как потом я в них запутаюсь...за голову схватился и стал искать информацию, как решили вопрос более опытные товарищи.
Ниабращщай внимания, чо-то случилось с этим форумом, явно не хорошее.
Форум хороший и ребята стараются помочь. По опыту виртуального общения с соседями в моём доме скажу, что когда появляются всего два 3.14дараса, окружающим кажется, что "с форумом что-то случилось и кругом один негатив".
Так уж повелось, что на форуме никому зарплату не платят, чтобы хватало сил и времени отвечать изо дня в день на одни и те же вопросы и выправлять глупые ошибки в исходнике, собранном по закоулкам.
Поэтому нет разницы - зелёный ты, черный или фиолетовый в крапинку.
И, отнюдь, за советом сюда обращаются редко. Чаще - когда запутались в непосильной задаче, которую взялись решать нахрапом, а отложить неподъемный проект и начинать учиться - лень. Гораздо проще свое говнище на форум вывалить - давайте, мол, рассказывайте что тут исправить, чтобы у меня все заработало. И побыстрее.
Садман41! Поца уже столько раз макали в собственное
дерьмоневежество, что сосчитать нельзя. Теперь ему тут на тупые вопросы должны отвечать, а то оно обиццо! А уж мы то как переживаем! Слов нет!Так уж повелось, что на форум обращаются зелёные (специально, чтоб ни один зануда не придирался потом к словам, речь не о цвете, а о неопытности) новички. Обращаются за советом, а не послушать нравоучения от невежественного закомплексованного старика, который на форум ходит самоутвердиться.
И то что вас лично не макали в ваше невежество, не говорит о том, что вы шибко умный - это лишь некий показатель культурности ваших виртуальных собеседников.
Дорогой! Я просто хочу заметить, что НЕ О ТЕБЕ написано было, а о пользователе с ником MNi. И в общении с ним есть давняя и долгая история, которая тебе неизвестна.
К тебе, ввиду твоей дремучести, вопросов нет, и тебе помогают по мере возможности. Про коллегу MNi такого сказать не могу. Не говоря о том, как всех уже достал его "удафф.ком-овский" и сильно искаженный сленг, так еще за ним числится грешок группового оскорбления ВСЕХ участников форума ("скетчедрочеры"), просто потому, что ему не написали срочно какой-то код, а учить программирование - не его барское дело.
Признаю, что возможно в той дискуссии он был пьян в сосиску, по своему обыкновению, но люди тут с хорошей памятью и недобрые! ;)))
=================================
Ну и отдельно, про "обращаются за советом". Пойми, что есть разница между уточнением непонятного и вопросами уровня таблицы умножения, то есть справочными вопросами. Справочные вопросы изучаются самостоятельно в поисковых системах и документации.
Вот изучи, если не трудно, на что обилось NMi: вопрос об изменении частоты таймера, который БОЛЕЕ ЧЕМ ПОДРОБНО освещен в даташите на контроллер. Ты не поймешь деталей, но попробуй ухватить суть проблемы.
=================================
Теперь по твоей теме. Вопрос про насос своей кофеварки ты задал еще несколько месяцев назад и тебе сказали, что этот модуль НИКАК СОВСЕМ не подойдет. Тебе реально долго учиться программировать, чтобы самому написать код для такого модуля с пропуском периодов. Притом, что есть ГОРАЗДО БОЛЕЕ ПРОСТОЕ решение - не использовать никакой модуль, а спаять другую "моську" (жаргон для оптопар MOC30XY) с тремя резисторами на куске картона или макетке, если есть. Вот ту самую, в которую детектор пересечения ноля встроен.
Там, ты просто не особо заботясь о синхронизации, откроешь на 20 мс симистор и потом закроешь на 20 мс. Пусть иногда твой насос пропустит не один а два шелчка, ну и что? Так понятно? И это всё читателям было ясно еще месяцы назад! Когда новичок начинает "изобретать велосипеды", как ты в теме про таймеры, то становится ясно, что советовать что-то - бесполезно и дальше нужно читать, как "анекдот.ру". Уж прости.
Неистово плюсую. :)
[... этот модуль НИКАК СОВСЕМ не подойдет. Тебе реально долго учиться программировать, чтобы самому написать код для такого модуля с пропуском периодов.
.......
Ну, справедливости ради... За модуль обидно. Вполне подойдет. Мне кажется, такие модули продают (покупают) именно что бы учиться. Вот Программа, с большой буквы "П" для управления пропусками полупериодов (периодов) для этого модуля, и для этого случая.
1. Если на пине детектора (обозначенном на плате Z-C) LOW (несколько раз подряд), подаем (или не подаем) HIGH на управляющий пин (обозначено на плате PWM).
2. Пауза 1 мС.
3. Подаем LOW на управляющий пин.
И так по кругу: два раза подряд подаем, потом два раза подряд не подаем.
Вполне себе учебная задачка для нулевого уровня.
И так по кругу: два раза подряд подаем, потом два раза подряд не подаем.
Вполне себе учебная задачка для нулевого уровня.
Кажется, с этого костыля я и начинал тут http://arduino.ru/forum/programmirovanie/dimmer-peremennogo-toka-ac-dimmer-rbddimmer#comment-559933
Так уж повелось, что на форум обращаются зелёные (специально, чтоб ни один зануда не придирался потом к словам, речь не о цвете, а о неопытности) новички. Обращаются за советом, а не послушать нравоучения от невежественного закомплексованного старика, который на форум ходит самоутвердиться.
И то что вас лично не макали в ваше невежество, не говорит о том, что вы шибко умный - это лишь некий показатель культурности ваших виртуальных собеседников.
Вот специально для "зеленых", в #3 посте песочницы собраны ссылки на разные полезные темы, одна из них про замену delay() на millis() от Лешака. Прочитав полсотни строк можно узнать, как это сделать, а бонусом, как не плодить гору переменных.
Вот специально для "зеленых", в #3 посте песочницы собраны ссылки на разные полезные темы, одна из них про замену delay() на millis() от Лешака. Прочитав полсотни строк можно узнать, как это сделать, а бонусом, как не плодить гору переменных.
Доступно, понятно, легко. Прям для чайников.
Но вот с утра не могу понять, как без ввода дополнительной переменной, например, пикнуть биппером трижды.
Можно сделать цикл от 0 до 2 внутри loop, но это задержит loop на время выполнения цикла, негоже.
Значит,
1. дополнительная переменная shortint = 0
2. вывод звукового сигнала если переменная меньше 3.
3. инкремент этой переменной.
Правильно мыслю?
Андрей, а как штаны застегивать вам консультация не нужна?
Зачем вы описываете код словами? Напишите на С, посмотрите как работает, потом перепишите раз, другой, третий. Глядишь, что-то и получится в итоге. Программы пишутся так, а не путем голосования на форумах.
А если вы так не можете и вам надо каждую строчку спрашивать - значит у вас нет склонности к самостоятельной работе и вы никогда не будете хорошо программировать
Это называется алгоритм
Ну, справедливости ради... За модуль обидно. Вполне подойдет. Мне кажется, такие модули продают (покупают) именно что бы учиться. Вот Программа, с большой буквы "П" для управления пропусками полупериодов (периодов) для этого модуля, и для этого случая.
1. Если на пине детектора (обозначенном на плате Z-C) LOW (несколько раз подряд), подаем (или не подаем) HIGH на управляющий пин (обозначено на плате PWM).
2. Пауза 1 мС.
3. Подаем LOW на управляющий пин.
И так по кругу: два раза подряд подаем, потом два раза подряд не подаем.
Вполне себе учебная задачка для нулевого уровня.
LOW (несколько раз подряд)???
Это бред, а не алгоритм.
Вот специально для "зеленых", в #3 посте песочницы собраны ссылки на разные полезные темы, одна из них про замену delay() на millis() от Лешака. Прочитав полсотни строк можно узнать, как это сделать, а бонусом, как не плодить гору переменных.
Доступно, понятно, легко. Прям для чайников.
Но вот с утра не могу понять, как без ввода дополнительной переменной, например, пикнуть биппером трижды.
Можно сделать цикл от 0 до 2 внутри loop, но это задержит loop на время выполнения цикла, негоже.
Значит,
1. дополнительная переменная shortint = 0
2. вывод звукового сигнала если переменная меньше 3.
3. инкремент этой переменной.
Правильно мыслю?
Все таки решил учиться? Похвально.
Не совсем так, но направление мысли верное. Есть еще временные параметры:
1.Сколько времени длится гудок?
2.Сколько длится пауза между ними?
3. Какое событие вызывает "три зеленых свистка"? ;))
Таким образом посчитать гудок свершившимся и увеличить счетчик нужно по завершении всего цикла гудка.
Вот пример, только вместо гудка светодиод. задано 5 повторов
Собственно, разобрался, весь проект сделал.
На будущее (вдруг кто будет искать) логика тут простая: делаем нужное количество триггеров (boolean или byte переменные), приравниваем их к нулю и при необходимости сделать некое действие, не делаем это действие, а устанавливаем триггер в положение логической 1, а дальше проверяем наличие каждого триггера и делаем действие.
Дальше без кода, т.к. это будет запутанно.
В моём проекте несколько десятков триггеров, а дальше - банальная проверка:
если наличие объекта в поле зрения = 1, температура объекта = высокая, положение клапана = 0 и сервопривод задействован, переключить триггер подачи звука на 1.
Звук подаётся 3 раза, от 3 делается декремент и если достигли нуля, переключить триггер подачи звука на 0.
Дальше без кода, т.к. это будет запутанно.
то есть до этой фразы было просто? и с кодом? :)
Боюсь что ваше "обьяснение" ни одному из новичков не пригодится...
Хорошо хоть сами поняли. Надеюсь убедились, что "таймеры" это совсем другое?
Хорошо хоть сами поняли. Надеюсь убедились, что "таймеры" это совсем другое?
Да, мне просто логика работы с ардуино не совсем была понятна. В принципе, хоти и mills правильнее, в некоторых случаях вполне можно оставить задержку без вреда для конечного продукта.