@Zugni

Нужна помощь в Разборке кода как уменьшить вращения Сервопривода?

void motion (char dimention, int prev_angle, int next_angle, int time)
{
int a;
if(next_angle>=prev_angle)
a=15;
else
a=-15; 

if (dimention=='f')
{ 
int i=prev_angle;
while( i!=next_angle)
{ 
i+=a;
myservo.write(i);
forward();
delay(time);
}
}
if (dimention=='l')
{ 
int i=prev_angle;
while( i!=next_angle)
{ 
i+=a;
myservo.write(i);
left();
delay(time);
}
}
if (dimention=='r')
{ 
int i=prev_angle;
while( i!=next_angle )
{ 
i+=a;
myservo.write(i);
right();
delay(time);
}
}
if (dimention=='b')
{ 
int i=prev_angle;
while( i!=next_angle )
{ 
i+=a;
myservo.write(i);
back();
delay(time);
}
}
if (dimention=='w')
{
int i=prev_angle; 
while( i!=next_angle )
{ 
i+=a;
myservo.write(i);
wait();
delay(time);
}
}

}

void front_motion( int time )
{
if(dist_45<=9)
{
left();
delay(3*time);
}
if(dist_135<=9)
{
right();
delay(3*time);
} 
}

void motion_back( int time )
{
motion('b',180,90,2*time);
if(dist_l>=dist_r)
{
do
{
left();
delay(time);
dist_f=sonar();
}while(dist_f<=20);
} 

if(dist_l<dist_r)
{
do
{
right();
delay(time);
dist_f=sonar();
}while(dist_f<=20); 
} }
  • Вопрос задан
  • 1488 просмотров
Пригласить эксперта
Ответы на вопрос 2
LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии
что такое "уменьшить вращения "?
Ответ написан
Что надо-то? Уменьшить скорость перехода сервы из одного положения в другое? Изменить скорость сервы, которая рассчитана на постоянное вращение?

Можно не вникая в программу сделать из myservo.write(i); сделать myservo.write(i/2);
В случае с сервой постоянного вращения, это уменьшит её скорость, в данном случае в 2 раза, в случае с обычной сервой уменьшит угол её поворота в 2 раза.

Если надо замедлить движение и сделать его более плавным, то судя по всему уменьшение переменной а
a=15;
else
a=-15;

в, допустим
a=5;
else
a=-5;

приведет к данному результату. Причем a=1 даст наиболее плавный переход.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы