Отключение - подключение сервы
- Войдите на сайт для отправки комментариев
Вс, 17/11/2013 - 21:09
Кручу серву потенциометром и кнопками перевожу в фиксированные положения. При работе с потенциометром всё хорошо. После перевода в фиксированные положения серва дрожит. При возврате в управление потенциометром опять всё гуд. Почитал по форуму о подобных случах, перепробовал разные комбинации с MyServo.detach(); - не получается корректной работы. Как правильно отключить серву после окончания движения в фиксированное положение?
if(inputMode) {
MyServo.attach(10);
MyServo.slowmove (valPot, 255);
}
if(A == 0) { ////////////////// крутим потенциометр
inputMode = 1; /////////// кнопкой переводим в положение valPot
}
else if(A == 1) { /////////// кнопкой переводим в положение val1
inputMode = 0;
for(pos = valPot; pos < val1; pos += 5)
{
MyServo.attach(10);
MyServo.slowmove (pos, SPEED);
}
for(pos = valPot; pos > val1; pos -= 5)
{
MyServo.attach(10);
MyServo.slowmove (pos, SPEED);
}
}
else if(A == 2) { /////////// кнопкой переводим в положение val2
inputMode = 0;
for(pos = valPot; pos < val2; pos += 5)
{
MyServo.attach(10);
MyServo.slowmove (pos, SPEED);
}
for(pos = valPot; pos > val2; pos -= 5)
{
MyServo.attach(10);
MyServo.slowmove (pos, SPEED);
}
}
Использую библиотеку VarSpeedServo.
Увы никак, у сервы нет обратной связи, поэтому узнать повернулась она на нужный угол или нет нет возможности, поэтому я у себя даю delay со временем за которое она гарантированно повернётся и потом детачу. Проблема в том что после детача она похоже как-то вообще снимается - её можно легко провернуть. Правда я использую стандартную библиотеку.
Проблема в том, что у меня меняется скорость поворота и каждый раз будет разная задержка, я уже и формулы пытался придумать для вычисления задержки. Библиотека VarSpeedServo есть немного усовершенствованная Servo.
Ну какая-бы библиотека не была увы у сервы по-крайней мере обычной нет обратной связи.
Увы никак, у сервы нет обратной связи, поэтому узнать повернулась она на нужный угол или нет нет возможности, поэтому я у себя даю delay со временем за которое она гарантированно повернётся и потом детачу. Проблема в том что после детача она похоже как-то вообще снимается - её можно легко провернуть. Правда я использую стандартную библиотеку.
А как применть задержку с детачем для цикла for?
Так работать не хочет
for(pos = valPot; pos < val1; pos += 5) { MyServo.attach(10); MyServo.slowmove (pos, SPEED); delay(...........); MyServo.detach(); } for(pos = valPot; pos > val1; pos -= 5) { MyServo.attach(10); MyServo.slowmove (pos, SPEED); delay(.........); MyServo.detach(); }В скобках в delay вместо значения указываете переменную, которую просчитываете где-то в другом месте
Ушёл от цикла for и без всяких детачей никакого дрожания-джиттера. Правда серва цифровая, на дешёвой может так не получится.