Можно ли отключать функции/методы?

Недавно я начал использовать библиотеку TimeAction (которая поддерживает прото-поточность) и заметил, что в ней есть очень полезная функция для включения/выключения потоков. Я хочу использовать ту же идею, но применить её к функции общего назначения, хотя и не смог найти подходящего решения для такой задачи в интернете. Вот один из возможных способов реализации:

#include <TimedAction.h>

boolean disableCheck = false;
boolean checking = false;
boolean state = false;
const int motionPin = 5;
void checkMotion();
void motion();
void DisableCheckMotion();

TimedAction checkable = TimedAction(6000, DisableCheckMotion);

void setup() {
   pinMode(motionPin, INPUT);
   Serial.begin(9600);
}

void loop() {
  checkMotion(); //это будет функция, которую я хочу включить и выключить

  if(checking == true)
  {
    motion();
  }
  if(disableCheck == true)
  {
    checkable.check();
  }

}
void checkMotion()
{
   checking = true;
}
void motion()
{
   if(digitalRead(motionPin) == HIGH)
{
   Serial.println("motion");
   checking = false;
   checkable.check();
}
}
void DisableCheckMotion()
{
  state ? state = true : state = false;
  if(state == false)
{
  checkMotion.disable(); //здесь я хотел бы отключить функцию
  disableCheck = true;
}

  if(state == true)
{
  checkMotion.enable(); //здесь я хотел бы включить функцию
  disableCheck = false;
}
}

Цель этой задачи — выводить одно значение каждый раз, когда PIR-сканер (подключённый к выводу 5) обнаруживает движение. Без какой-либо задержки вывод будет переполнен значениями (что нежелательно). Для обеспечения этой задержки используется поток, и я не могу поместить код проверки движения в поток, так как это может привести к пропуску показаний.

Идеальной конфигурацией было бы, если бы плата Arduino получала входной сигнал, а затем задержала его получение на некоторое время, не задерживая при этом всю программу. Как лучше всего это реализовать?

, 👍0