самое интересное, что он нормально отработает с любыми "дребезгами", реверсами в любом состоянии и т.д.
основная идея, что есть 4 состояния датчиков, соответственно 4 границы между состояниями.
делаем битовую маску похождений границ.
если границу состояний прошел ставится "1" в соответствующем бите,
если прошел границу ещё раз, то значит ревеерс, и флаг прохождения границы сбрасывается.
когда наступает состояние "00" смотрим прошли ли все промежуточные состояния, (сравниваем с 15=1111b)
если да, то с какой стороны пришли, соответственно делаем "+" или "-"
PS сделано в "старом" OL 1.6
PPS в варианте rovki тоже некорректно отработает реверс 11->10->00->01->00->10->11






Ответить с цитированием