Есть идея сделать цифровую метеостанцию. В частности, речь идет об определении направления ветра.
Используем абсолютный угловой энкодер с диском, размеченным кодом Грея. Дискретизация - 4 разряда, т.е. 16 румбов. На выходе датчика 4-х разрядный код Грея.
Подскажите, правильно ли думаю по алгоритму:
1. С некоторым интервалом опрашиваем входные линии с кодом Грея (опрашиваем так же как кнопки).
2. Преобразовываем в бинарный код, примерно так:
unsigned int graydecode(unsigned int gray)
{
unsigned int bin;
for (bin = 0; gray; gray >>= 1) {
bin ^= gray;
}
return bin;
}
3. Дальше. Алгоритм обработки помнит предыдущий результат, и при каждом измерении сравнивает - если изменение больше чем на 1 (по модулю) - то это явная ошибка, так?
4. Берем выводное значение (видимо, символьное, типа Северо-Восток и т.п.) из массива значений по данному (пункт 2) индексу .
Верно?


