Управление сервоприводом

Поразмыслив еще на досуге над Вашим вопросом и перечитав его внимательно, мне кажется, что я его не так понимал ранее. Вам нужно в зависимости от комбинации нажатия 3-х кнопок повернуть серво на определенный угол. Если обозначить кнопки через A,B,C, то, скажем, комбинация OOS должна соответствовать одному углу, а, например, BCA - другому. Если так, то для 3-х кнопок будет всего 27 различных комбинаций. Заведем массив длины 27, в котором будут находиться коды, посылаемые на серво. Задача таким образом, сводится к вычислению индекса массива (от 0 до 26) в зависимости от комбинации нажатий 3-х кнопок.

Присвоим кнопке А число 0, кнопке B - число 1, и кнопке C - число 2. Тогда комбинации OOS из примера выше будет соответствовать число 002, а комбинации BCA - число 230. Будем рассматривать это число как число представленное в троичной системе счисления. Для вычисления индекса массива нужно будет просто перевести его в десятичную систему. Вычисления производятся по формуле
index = K1*9 + K2*3 + K3,
где К1,К2,К3 - числа, соответствующие первой, второй, и третьей нажатым кнопкам, соответственно. Например, для комбинации OOS получим index = 0*9 + 0*3 + 2 = 2, а для комбинации BCA получим index = 1*9 + 2*3 + 0 = 15.