arduino驱动带拨片的ST90S微型舵机完成货物拨取任务 |
您所在的位置:网站首页 › 舵机怎么使用 › arduino驱动带拨片的ST90S微型舵机完成货物拨取任务 |
arduino驱动带拨片的ST90S微型舵机完成货物拨取任务
![]() 可以看到上图中我们总共有5个拨片,每个拨片都是由一个舵机去控制的,因此我们总共需要5个小舵机,为了区分他们,我将其进行了标号 arduino自带舵机驱动的库,叫Servo.h,因此在使用之前我们先要将其包含进来。定义好名字之后就要进行初始化了,前面我们定义了舵机控制对象,在这里我们要将其进行初始化,函数就是XXX.attach(pin),XXX是定义的舵机名字,pin是该舵机的信号引脚,在我们用的板子中‘D’开头的信号引脚初始化的时候不用带‘D’,否则会提示找不到该引脚,还请注意 void AngleInit() {//开始都是先都打到90度 UpLeftServo.write(90); delay(20); DownLeftServo.write(90); delay(20); DownMidServo.write(90); delay(20); DownRightServo.write(90); delay(20); UpRightServo.write(90); } void setup() { for(uint8_t i = 1 ; i < 6;i++){ last_turn_angle[i] = 90; } UpLeftServo.attach(7); //定义舵机的引脚为 DownLeftServo.attach(10); DownMidServo.attach(A0); DownRightServo.attach(A3); UpRightServo.attach(A2); AngleInit(); Serial.begin(9600); //设置波特率 while (Serial.read() >= 0) {}; }因为舵机打角是连续的才比较稳定,因此我是让舵机按照1°的变化趋势进行打角。如果一次性舵机让舵机打一个很大的角度,舵机很有可能会用力过猛,导致打到相应的角度之后进入一个抖动的状态,如下图所示 但是即使我做了这样的1°变化缓冲操作之后,舵机打脚时还是会出现抖动的状态,百思不得其解,遂上网搜索原因,有说servo库所用定时器和串口定时器冲突的,有说没有共地的,我都试了,但是没有用,只好冷静下来自己思考了。灵感总是来得出乎意料,我想是不是因为我每次打脚都打到底的原因了呢?因为我每次都让舵机打到0°或者180°,相当于是都打到了舵机的极点,这样可能不够稳定,因此我就想着给舵机打角限幅,限制到了2~177°,程序如下 if(turn_angle > 175) turn_angle = 175;//限幅 else if(turn_angle < 5) turn_angle = 5;//限幅最终解决了问题,实现了舵机的稳定控制打角,效果如下 因为程序是串口接收命令的,因此loop()里面是这样写的 void loop() { delay(50); while (Serial.available() > 0) { delay(100); send_sta = Serial.readBytes(mov_cmd,6); TestServo(); break; } while (Serial.read() >= 0){} }为了保证控制的稳定性,我在程序里面设置了应答措施,当arduino板子接收到命令之后会通过send_sta = Serial.write("&");语句,也就是通过串口发送一个&符号告诉上层自己接收到了命令,当arduino完成了动作之后会通过send_sta = Serial.write("#");语句,也就是通过串口发送一个#符号告诉上层自己完成了命令。具体的命令传递数组含义如下图所示 在烧写程序的时候,偶尔会报这样一个错误 实际上,就算烧写的时候arduino IDE报了如上错误,程序还是会被烧写进arduino板子里的。 (づ ̄3 ̄)づ╭❤~一键三连,这次一定(๑•̀ㅂ•́)و✧![]() 原创文章作者:worker。如若转载,请注明出处:古月居 https://www.guyuehome.com/33961 打赏 0 点赞 0 收藏 0 分享 微信 微博 QQ 图片 上一篇:arduino控制步进电机移动丝杆实现拨片架水平移动 下一篇:STM32CubeMX配置STM32F103C8Tx芯片制作串口数据管理器 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |