








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


'