Arduino利用遥杆控制舵机转动角度 您所在的位置:网站首页 ps2手柄驱动代码 Arduino利用遥杆控制舵机转动角度

Arduino利用遥杆控制舵机转动角度

2023-08-06 01:13| 来源: 网络整理| 查看: 265

工具 : 1.舵机 (一个或两个) 2.PS2摇杆 * 1 3.Arduino开发板 在这里插入图片描述 在这里插入图片描述 这里先来聊聊PS2摇杆,PS2摇杆内部相当于一个不能显示数值的可调电阻,可以把这个可调电阻数值看成下图的数值坐标:在这里插入图片描述 因为PS2摇杆可以左右上下摇动,所以可以对应坐标的xy轴,左到右相当于x轴上数值从0到1023,上到下相当于y轴上数值从0到1023(上下左右的位置相对于上图摆放来说)。PS2上VRX就可以看成x轴,VRY看成y轴,SW就是控制将摇杆按下的按键。电路图如下:在这里插入图片描述 那么既然我们要用坐标数值来表示PS2转动的幅度,所以PS2中VRX,VRY就可以接入analog in上的引脚,然后如果SW不需要,就不要接入(如果你只有一个舵机,那么VRY或VRX接入其中一个就好,当然别忘了接入正负极)。 下面聊聊舵机,舵机比步进电机控制角度来的更方便也更准确,还有舵机的线一般是棕 : GND,红 : VCC,橙: 控制线即OUT引脚。在这里插入图片描述 舵机转动的角度是由控制线的持续脉冲产生的,由上图可以看出最小的脉冲宽度是1ms,最大宽度是2ms,当脉冲宽度为1ms,这里的旋转角度为0°不是在原地不动,而是回到初始的位置,每一次转动的角度都是相对于初始位置而言,知道这一点挺重要的。Arduino中可以调用Servo这个库中的函数来实现对角度不那么精确的控制。在这里插入图片描述 看看自己有没有Servo舵机库,如果没有,要上划到库管理器中添加Servo这个库。这里值得一提的map函数,其用法 map(num,旧区间初值,旧区间终值,新区间初值,新区间终值),这里可以将0到1023的值简单的线性映射成角度从0到180,至于映射范围可以自己设定不一定要是0°到180°。 下面是完整代码:

#include Servo a; Servo b; int i,p,j,k; void setup(){ a.attach(3);//指定舵机a的OUT引脚为3号引脚 b.attach(5);//指定舵机b的OUT引脚为5号引脚 Serial.begin(9600); } void loop(){ i = analogRead(A0);//获取A0引脚的输入值,即PS2摇杆X轴的数值 j = analogRead(A1);//获取A1引脚的输入值,即PS2摇杆Y轴的数值 Serial.print("映射前x轴:"); Serial.print(i); Serial.print(" "); Serial.print("映射前y轴:"); Serial.print(j); Serial.print(" "); p = map(i,0,1023,0,180);//将0到1023的值映射成0到180 k = map(j,0,1023,0,180); Serial.print("映射后x轴:"); Serial.print(p); Serial.print(" "); Serial.print("映射后y轴:"); Serial.println(k); a.write(p);//设置舵机a角度为p b.write(k);//设置舵机b角度为k }

最后可以打开串口监视器看看映射后角度变化(这是两个舵机的效果)在这里插入图片描述 心得: Arduino不得不说,用它来控制舵机还是非常容易的。之前我也用过步进电机控制角度,但不是太精确。(⊙﹏⊙)当然用PS2控制舵机转动角度也不是很精确,主要是PS2摇杆的转动方向不太好固定。但是单纯从控制角度精确程度,舵机是要优于步进电机的😜



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有