Можно ли отключать функции/методы?
Недавно я начал использовать библиотеку 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 получала входной сигнал, а затем задержала его получение на некоторое время, не задерживая при этом всю программу. Как лучше всего это реализовать?
@walkman118, 👍0
0
- Как получить текущее время и дату в Arduino без внешнего источника?
- Как запустить цикл на определенное время?
- Разница между «time_t» и «DateTime»
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Оси X и Y на последовательном плоттере Arduino?
- Библиотека времени Arduino и библиотеки RTC
- Несколько неблокирующих таймеров обратного отсчета?
- Arduino - Расчет времени, в течение которого кнопка нажата и удерживается без отпускания