Это я давно делал, 3 года тому назад, сейчас бы нечто подобное намного проще сделал, примерно как-то так:
Фильтрация_9.PNG
Фильтрация_9.owl
Можно и ещё проще состряпать, но и так неплохо упростилось, по сравнению с вариантом трёхлетней давности!
Здесь немного другой принцип работы: каждый цикл программы пишется состояние входа("0" или "1") в один из битов целочисленной переменной, там всего 32 бита, если количество "1" более 75%(24) от общего числа бит в переменной, то принимается, что вход в состоянии "1", выход принимает значение "1", если количество "1" менее 25%(8) от общего числа бит в переменной, то принимается, что вход в состоянии "0", выход принимает значение "0", при промежуточных значениях 25-75%(8-24бита), состояние выхода не изменяется, всё!
И если надо "сильно" отфильтровать, то можно последовательно две такие цепочки(можно и больше, если потребуется) поставить:
Фильтрация_10.PNG
Задержка, при цикле программы в 1 мс, будет составлять около 1(0,8) секунды!
Фильтрация_10.owl