0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用Arduino和操纵杆控制伺服电机

454398 来源:工程师吴畏 2019-08-01 14:24 次阅读

电路图

这个项目的硬件部分非常容易制作。首先,将操纵杆模块与Arduino连接。操纵杆模块和Arduino的连接如下:

将操纵杆模块上的VCC与Arduino上的5V引脚连接

将操纵杆模块上的GND引脚与Arduino上的GND连接

将操纵杆模块上的VER引脚与Arduino上的A0连接

将操纵杆模块上的HOR引脚与Arduino上的A1连接

然后,将伺服电机与Arduino连接。使用Arduino的伺服电机的连接如下:

将两个伺服电机上的黑线连接到Arduino上的GND

将两个伺服电机上的红线连接到Arduino上的5V引脚

将第一个电机上的黄色线连接到Arduino上的引脚8

将第二个电机上的黄色线连接到Arduino上的引脚9

它是如何工作的?

当操纵杆模块在水平或垂直方向上移动,它给出0到1023之间的值。因此我们可以在代码中应用一个条件,如果该值小于300或大于700,则伺服器将移动。

当操纵杆沿水平方向移动时,第一个伺服器将向右或向左移动,并在移动乐趣时移动在垂直方向上打勾,第二个伺服将向右或向左移动。

Arduino代码

#include

Servo servo1;

Servo servo2;

int x_key = A1;

int y_key = A0;

int x_pos;

int y_pos;

int servo1_pin = 8;

int servo2_pin = 9;

int initial_position = 90;

int initial_position1 = 90;

void setup ( ) {

Serial.begin (9600) ;

servo1.attach (servo1_pin ) ;

servo2.attach (servo2_pin ) ;

servo1.write (initial_position);

servo2.write (initial_position1);

pinMode (x_key, INPUT) ;

pinMode (y_key, INPUT) ;

}

void loop ( ) {

x_pos = analogRead (x_key) ;

y_pos = analogRead (y_key) ;

if (x_pos 《 300){

if (initial_position 《 10) { } else{ initial_position = initial_position - 20; servo1.write ( initial_position ) ; delay (100) ; } } if (x_pos 》 700){

if (initial_position 》 180)

{

}

else{

initial_position = initial_position + 20;

servo1.write ( initial_position ) ;

delay (100) ;

}

}

if (y_pos 《 300){

if (initial_position1 《 10) { } else{ initial_position1 = initial_position1 - 20; servo2.write ( initial_position1 ) ; delay (100) ; } } if (y_pos 》 700){

if (initial_position1 》 180)

{

}

else{

initial_position1 = initial_position1 + 20;

servo2.write ( initial_position1 ) ;

delay (100) ;

}

}

}

代码说明

首先,我们加入了伺服电机库,这将有助于我们简化代码。然后,我们初始化了两个变量,一个用于两个伺服电机中的每一个,这将有助于我们使用库函数。

#include

Servo servo1;

Servo servo2;

然后,我们将引脚初始化我们连接了操纵杆模块上的垂直和水平引脚以及伺服系统上的信号引脚。

int x_key = A1;

int y_key = A0;

int x_pos;

int y_pos;

int servo1_pin = 8;

int servo2_pin = 9;

int initial_position = 90;

int initial_position1 = 90;

然后我们告诉Arduino我们连接了伺服引脚并移动了伺服电机在初始位置,即90度。之后,我们将操纵杆模块上的垂直和水平引脚都声明为输入引脚。

servo1.attach (servo1_pin ) ;

servo2.attach (servo2_pin ) ;

servo1.write (initial_position);

servo2.write (initial_position1);

pinMode (x_key, INPUT) ;

pinMode (y_key, INPUT) ;

在循环函数中,我们从操纵杆模块中读取水平和垂直位置的值并将这些保存在变量中。然后我们应用了一个条件,如果水平位置的值小于300,那么第一个伺服将向右移动。

x_pos = analogRead (x_key) ;

y_pos = analogRead (y_key) ;

if (x_pos 《 300){

if (initial_position 《 10)

{

}

else{

initial_position = initial_position - 20;

servo1.write ( initial_position ) ;

delay (100) ;

}

}

如果水平位置的值大于700 ,然后伺服将向左移动。类似地,对于操纵杆模块的垂直位置,如果该值小于300,则第二伺服将向左移动,如果该值大于700,则第二伺服将向右移动。

if (x_pos 》 700){

if (initial_position 》 180)

{

}

else{

initial_position = initial_position + 20;

servo1.write ( initial_position ) ;

delay (100) ;

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 伺服电机
    +关注

    关注

    85

    文章

    2027

    浏览量

    57686
  • Arduino
    +关注

    关注

    187

    文章

    6462

    浏览量

    186613
  • 操纵杆
    +关注

    关注

    0

    文章

    67

    浏览量

    8519
收藏 人收藏

    评论

    相关推荐

    伺服电机原理及控制应用

    伺服电机(Servo Motor)是一种高精度、高性能的电动机系统,广泛应用于需要精确控制位置、速度和加速度的场合。 一、伺服电机的工作原理
    的头像 发表于 10-22 16:58 231次阅读

    伺服电机有什么,伺服电机可以当普通电机

    一、伺服电机的作用与特点 伺服电机(Servo motor),作为伺服系统中的关键组件,扮演着控制
    的头像 发表于 10-22 16:16 225次阅读

    PLSY指令怎样控制伺服正反转

    PLSY指令(PLC中的脉冲输出指令)通常用于控制伺服电机的正反转和速度。 1. 伺服电机概述 伺服
    的头像 发表于 08-19 14:51 1147次阅读

    伺服电机也是脉冲控制吗为什么

    伺服电机是一种高精度、高响应速度的电机,广泛应用于工业自动化、机器人、航空航天等领域。伺服电机控制
    的头像 发表于 07-14 10:37 753次阅读

    伺服驱动器对伺服电机控制要求

    伺服驱动器对伺服电机控制要求是一个复杂而深入的话题。以下是关于伺服驱动器对伺服
    的头像 发表于 06-14 15:24 714次阅读

    plc控制伺服电机的指令有哪些

    PLC(可编程逻辑控制器)是一种广泛应用于工业自动化领域的控制设备。伺服电机作为执行元件,可以通过PLC进行精确控制。以下是关于PLC
    的头像 发表于 06-12 11:39 1985次阅读

    伺服电机可以当普通电机

    伺服电机和普通电机在很多方面都有所不同,因此不能简单地将伺服电机当作普通电机使用。
    的头像 发表于 06-12 10:05 1288次阅读

    从虚拟操纵到现实驾驶 迈来芯磁力计技术引领无限可能

    磁强力计与三轴技术的完美结合,在游戏控制台的操纵杆领域已大放异彩。
    的头像 发表于 03-22 13:58 406次阅读

    如何使用Arduino UNO板和电位器控制伺服电机

    在本Arduino伺服电机教程中,您将学习如何使用Arduino UNO板和电位器控制伺服
    的头像 发表于 02-11 10:11 2556次阅读
    如何使用<b class='flag-5'>Arduino</b> UNO板和电位器<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    伺服电机最简单控制方法

    伺服电机是一种特殊的电机,可以根据控制信号准确地控制角度、速度和位置。伺服
    的头像 发表于 01-14 14:40 1840次阅读

    伺服电机的三种控制方式 如何确定选择伺服电机控制方式?

    伺服电机的三种控制方式 如何确定选择伺服电机控制方式? 伺服
    的头像 发表于 12-26 14:02 1539次阅读

    怎样验证防爆伺服电机是否过冲呢?

    怎样验证防爆伺服电机是否过冲呢? 验证防爆伺服电机是否过冲是非常重要的,因为过冲可能导致设备损坏、事故发生,甚至危及人员的生命安全。下面将详
    的头像 发表于 12-25 11:47 746次阅读

    如何保持操纵机构丝的精度?

    滚珠丝操纵机构中的重要组成部分,可以传递较高的扭矩,并且具有低摩擦、高效率和快速响应的特性,这使得操纵机构能够实现高速、高精度的运动控制,这对于整个系统的性能和精度具有决定性的影响
    的头像 发表于 12-04 17:45 465次阅读
    如何保持<b class='flag-5'>操纵</b>机构丝<b class='flag-5'>杆</b>的精度?

    如何在树莓派Pico上使用摇杆?

    模拟二轴拇指操纵杆(俗称摇杆)是一种模拟操纵杆,相比于「方向」操纵杆更加准确和灵敏,它带有一个「按下选择按钮」。
    的头像 发表于 11-28 09:20 2124次阅读
    如何在树莓派Pico上使用摇杆?

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41