Marvin писал(а):При работе с сервой, тоже применяется ШИМ, чем в данном случае является pos ? А delay(15) нужен что бы серва успела отработать предыдущую команду?
pos - число от 0 до 180, некие "условные градусы", которое похоже жестко соответствует диапазону от 1 до 2 мс, если верить описанию команды write(). Соответственно для 1.5 мс будет pos=90. Есть еще writeMicroseconds(), которая принимает сразу микросекунды. Кстати, приведенный код вызывает плавный поворот сервы из крайнего левого положения в крайнее правое и обратно, а у регулятора хода это как раз будет вращение 100% назад, а потом плавный переход через стоп к вращению 100% вперед, ну и обратно.
В обшем соответствие такое:
1 мс - pos=0 ручка газа полный назад - серва в крайнем положении против часовой - регулятор полный назад
1.5 мс - pos=90 ручка газа посередине - серва в среднем положении - регулятор стоп
2 мс - pos=180 ручка газа полный вперед - серва в крайнем положении по часовой - регулятор полный вперед
А delay(15) нужен для плавности. 15*180 = 2.7 сек, вот за это время серва совершит полный поворот слева направо, который на самом деле будет состоять из "ступенек" величиной в 1 условный градус и длительностью в 15 миллисекунд. Кстати, это значит что реально вообще не все эти ступеньки до сервы дойдут, ведь она получает задание раз в 20 мс. Но это не страшно.