Для управления антенной, следящей за ДПЛА, зачастую приходится пользоваться датчиками положения антенны, работающими в коде Грея.
Код Грея знаменит тем, что при переходе из одного сектора вала поворота антенны в соседний сектор в кодовой последовательности датчика меняется только один разряд. Это, конечно, хорошо, но нам-то требуется истинное положение вала антенны, то есть позиция в вала в истинном двоичном коде. Есть целый ряд алгоритмов пересчёта. Они, безусловно, хорошие. Приведённый ниже алгоритм тоже хороший. К тому же он реально работает.
Аппаратный вариант пересчёта:

Программа на Паскале (Слава Н.Вирту), реально работающая на БАРСе:
function Razrjad(G, P:Boolean):Boolean;
begin
G:=Not G;
//исключающее ИЛИ:
if P then
begin
if G then Result:=False else Result:=True;
end
else//P=False
begin
if G then Result:=True else Result:=False;
end;
end;//Razrjad
function GrayToBin2(Value: word):word;
var G, P:Boolean;
I:Byte;
begin
Result:=$00;
P:=True{1};
I:=13;
repeat
dec(I);
//имеется в виду, что с порта поступает инвертированный код Грея (Not Value)
if ((Not Value)and Maski[I])<>0 then G:=True else G:=False;
P:=Razrjad(G, P);
if P then Result:=Result or Maski[I];
until I=0;
end;//GrayToBin2
______
Так вышло. У нас всё просто.