Работоспособность фрагмента кода

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Подскажите пожалуйста, кто знает. Будет ли работать это:

unsigned long d_time;

boolean _delay()
{
  d_time=millis();
  if((millis()-d_time)=>5)
  {
  return true;  
  }
}

void somefunction()
{
  while(!_delay())
  {
  }
}

Смысл задержать выполнение somefunction() на некоторое время.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Сочувствую! Видимо аденоиды в детстве вырезали ...необычным способом?

rkit
Offline
Зарегистрирован: 23.11.2016

Нет, не будет

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

А какой обычный способ посоветуете Вы?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017
void somefunction()
{
  delay(скоканадо);
  остальные операторы задержанные на "скоканадо";
}

delay() - встроенная функция

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Alexey_Rem пишет:

А какой обычный способ посоветуете Вы?

Брось её совсем, игрушку эту бесовскую! Ни к чему она русскому человеку! ;)))))

------------------------------

Ну а если свербит шаловливый ум, то ответь, выполнится ли, ХОТЬ КОГДА НИБУДЬ, условие в строке 6? ;)))

b707
Offline
Зарегистрирован: 26.05.2017

Alexey_Rem пишет:

Смысл задержать выполнение somefunction() на некоторое время.

а смысл делать свою функцию, если она ничем не отличается от стандартной delay() ? :)

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

 В процессе действия delay() такие операции, как считывание данных с датчиков, математические вычисления или операции с выводами не могут выполняться. Фактически, функция delay() приводит к остановке практически всех операций.-цитата отсюда:https://doc.arduino.ua/ru/prog/Delay

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Да, накосячил), так правильно



unsigned long d_time;
02  
03 boolean _delay()
04 {
05   d_time=millis();
06   if((millis()-d_time)>=5)
07   {
08   return true
09   }
10 }
11  
12 void somefunction()
13 {
14   while(!_delay())
15   {
16   }
17 }

А принципиальные возражения есть?

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

;)))))))

Ысчо рас:

d_time=millis();
if((millis()-d_time)>=5)

Вот в такой последовательности действий условие может ли выполниться, ХОТЬ КОГДА-ТО? ;))))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Alexey_Rem пишет:

так правильно

Нет, так неправильно.

Alexey_Rem пишет:

А принципиальные возражения есть?

Нет.

Вот представьте себе я издаю бессвязные звуки тип "аы..ел..ххх...фш". У Вас есть принципиальные возражения?

Нет и не может быть никаких принципиальных возражений против болезненного бреда.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Alexey_Rem пишет:

 В процессе действия delay() ...

И что?

А в процессе действия той функции, что Вы пытаетесь написать, оно как-то по-другому? И как?

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Всем спасибо!

b707
Offline
Зарегистрирован: 26.05.2017

Alexey_Rem пишет:

 В процессе действия delay() такие операции, как считывание данных с датчиков, математические вычисления или операции с выводами не могут выполняться. Фактически, функция delay() приводит к остановке практически всех операций.-цитата отсюда:https://doc.arduino.ua/ru/prog/Delay

если вы думаете, что во время вашей функции что-то из этого выполняется - вы вовсе ничего не понимаете в программировании

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Кстати, ошибка та же самая, что была в библиотеке гиверфильтр. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Кстати, ошибка та же самая, что была в библиотеке гиверфильтр. 

"... и по рукам кочуешь ты..." это я об ошибке...

1. запомнить время перед вызовом функции и выставить флаг, что надо отработать процедуру
2. периодически вызывать процедуру, где вначале проверяется флаг и время, что пора выполнять
3. если условия выполняются, выполнить процедуру, сбросить флаг

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

"... и по рукам кочуешь ты..." это я об ошибке...

А ведь казалось бы, чего ей кочевать? О ведь ней компилятор просто криком предупреждает! Но мы ж всяких глупостей не читаем - скомпилировалось, и ладно.

sadman41
Offline
Зарегистрирован: 19.10.2016

А у меня ещё вопрос к ТС: что возвращает _delay(), какое значение?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Поздно, sadman41, ТС уже обиделся, так что вопросы задавать поздно, на нём теперь только воду возить.