Не могу сообразить как работать с таким энкодером
Вот вариант набросал, визуально вроде должно работать, к сожалению не могу проверить на железе.
Я правильно понял, что 6 контакт всегда остается замкнутым либо с 1 либо со 2 контактом в зависимости от щелчка. Или он остается замкнутым с 3?
Все отлично! Премного благодарен! Сам бы ни за что не додумался. Блок-схема получилась весьма насыщенная.Serg_Grn писал(а): ↑27.05.2018{, 13:06}Вот вариант набросал, визуально вроде должно работать, к сожалению не могу проверить на железе.
При переключении на следующий контакт, должна на 10 мс. появляться "1" на выходе "больше" или "меньше", в зависимости от того, куда переключилось.
Проверьте и скажите выходит или нет, а то самому интересно
Определение напр. вращения.flp
Можно проще сделать.
Код: Выделить всё
byte new_chislo, old_chislo, chislo;
bool Down = 0, Up = 0 ; // выходы
bool Input_1, Input_2, Input_3; // входы
void setup(){}
void loop()
{
if (Input_1) {new_chislo = 1;}
if (Input_2) {new_chislo = 2;}
if (Input_3) {new_chislo = 3;}
chislo = old_chislo - new_chislo;
Down = ( (chislo == (1) || (chislo == 254) );
Up = ( (chislo == 2) || (chislo == 255) );
old_chislo = new_chislo;
}
У байта нет отрицательных чисел, всё "по кругу" - в сторону уменьшения 2, 1, 0, 255, 244....