Как запустить функцию каждый 10-й раз через цикл?
c++
loop
В настоящее время у меня есть функция, которая поляризует все мои датчики каждый раз в своем цикле, но я хочу поляризировать один из датчиков только каждый 10-й раз. В настоящее время в начале моей функции есть задержка в 10 миллисекунд. Я знаю, что могу увеличить счетчик и использовать по модулю, но есть ли для этого лучшая практика?
@bob mcgrath, 👍-1
Обсуждение2 ответа
▲ 1
for(int i=0; i < 9999; ++i)
{
if(i % 10 == 0)
{
//мои действия над i = 0, 10, 20, 30...
}
}
,
@gbg
▲ 1
Обычно неоптимально снижать скорость цикла только для того, чтобы можно было их подсчитать. Вместо этого примените принцип BlinkWithoutDelay (это касается не Blink, а WithoutDelay)
,
@DataFiddler
Смотрите также:
- Есть ли способ заставить функцию взять точное количество тактов?
- Как приостановить цикл только один раз?
- Как я могу присвоить переменную выходу функции в Arduino?
- оператор if не работает с дробью, но работает с десятичным эквивалентом
- Хранение и секвенирование выходного значения (arduino)
- Вращающийся серводвигатель с использованием Arduino
- Справка по классу. Похоже, что одни и те же типы объектов смешивают значения друг с другом.
- C++ против языка Arduino?
Пожалуйста, покажите нам скетч, который вы используете., @VE7JRO
Это программа на тысячу строк, половина из которых посвящена полярности различных датчиков. Мне просто нужны общие решения, чтобы делать что-то один раз на каждые 10 раз, когда вы делаете что-то еще., @bob mcgrath
Вы уже попали в точку с модулем. Или есть старый добрый счет до тех пор, пока переменная не достигнет 10 и не установит ее обратно на ноль. Кроме того, это будет довольно специфично для конкретной ситуации., @Delta_G
по модулю тогда, спасибо, @bob mcgrath
слово "опрос", а не полюс, @jsotola
уменьшить счетчик ... если он достигает нуля, затем опросить датчик и перезагрузить счетчик ... микроконтроллер имеет эффективный способ проверки нулевых значений с помощью «нулевого флага», который устанавливается командой «уменьшение», @jsotola