







# Включает/функция прерывания таймера
Int pbIn = 0;/Определите контакт прерывания 0, то есть, Цифровые контакты 2
Int ledOut = 13;
Инт-счет = 0;
Летучее состояние Инт = низкое;/определение ledOut, по умолчанию выключено
Вакуум установка ()
{
Сериал. начать (9600);
PinMode (led-выход, выход);
Attachinterrub (pbIn, stateChange, FALLING);/устанавливает функцию прерывания, срабатывает падающий край.
MsTimer2: набор (1000, процесс);/установите время прерывания таймера 1000 мс
MsTimer2: start ();/Запуск таймера
}
Силы петли ()
{
Серийный. println (граф);/Время печати 1000 мс подвески
Задержка (1);
Если (state = HIGH)/при обнаружении движущихся объектов позже, 2 s автоматически выключается после удобного освещения.
{
Задержка (2000);
Состояние = при низкой температуре;
DigitalWrite (ledOut, state);/выключение светодиода
}
}
Void stateChange ()/функция прерывания
{
Рассчитывать + +;
}
Void process ()/обработчик таймера
{
Если (граф> 1)/1000 ms номер прерывания больше 1 считается обнаруженным движущимся объектом (это значение можно отрегулировать в зависимости от фактической ситуации, эквивалент регулировки порога обнаружения скорости подвижного объекта)
{
Состояние = высокий уровень риска;
DigitalWrite (ledOut, state);/светодиодный светильник
Количество = 0;/Количество 0
}
Другое
Количество = 0;/в 1000 мс, прерывания не достигают заданного порогового значения, считается, что не обнаруживает движущиеся предметы, прерывает количество, очищается до 0.
}
'