发表日期:2019-02-20 11:00:34文章编辑:信息管理员浏览次数: 标签:
亮宁机器人套装中配有180度伺服电机和360度伺服电机。部分同学在操作360度伺服电机时,都发现s1.work(0)不能使360度伺服电机停止转动,其原因我们不在这里讨论,今天我们探讨的是如何能够让360度伺服电机准确停止。
360度伺服电机的速度调整函数(work),即可只带入一个参数,即:s1.work(5),表示该电机以第5档的速度正转;也可带入两个参数,即s1.work(0,-4),其中的第二个参数也就是下图中用红色框标注的”零速调整”。零速调整这个参数就是为360度伺服电机停止转动而服务的。
眼前的问题是,当你尝试了s1.work(0)没让电机停止转动时,零速调整这个参数到底要写多少才能是得它能准确停止呢?我们写一个利用LCD显示屏显示该参数的程序,程序运行时,我们去观察,电机停止时此参数到底是多少,然后记下这个值。
程序详解如下:
#include <LNDZ.h>
servo s1;
int i=50;//假设零速调整的目标值是50以下
lc lcd;
void init()
{
lcd.begin(16,2);
s1.attach(2);
lcd.bg(1);
}
void repeat()
{
s1.work(0,i);
//以i为零速调整参数,观察伺服电机是否停止转动
lcd.print(i);
//显示i的值,便于同时观察,电机的运动状态以及i的数值
delay(1000);//针对每一个i,都让它保持1秒的状态
lcd.clear();//零速调整
i--;//改变i的值
}
假设当伺服电机停止转动的时候,LCD上显示的是-20,你就可以用s1.work(0,-20)来停止电机了,但是这个-20并不代表你手中所有360度伺服电机都可以使用它。不同的电机,此参数可能完全不同!