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) ;

}

}

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

    关注

    82

    文章

    1838

    浏览量

    56289
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184843
  • 操纵杆
    +关注

    关注

    0

    文章

    67

    浏览量

    8459
收藏 人收藏

    评论

    相关推荐

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

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

    操纵杆界面数据表

    操纵杆接口基于四个相同的模数转换器,每个转换器包括一个模拟比较器和16位计数器对。 每个转换器均为斜率集成型,使用连接到相应ATOD[3:0]引脚的外部RC网络来产生可变斜坡延迟。 16位计数器测量
    发表于 08-21 07:08

    __14.使用 Arduino连接操纵杆模块 #硬声创作季

    电路开发伺服电机程序
    充八万
    发布于 :2023年08月08日 21:57:16

    如何使用操纵杆Arduino控制伺服电机

    在这篇文章中,我们将学习如何使用操纵杆Arduino控制伺服电机。我们将看到有关操纵杆,其销,
    的头像 发表于 07-27 11:47 1194次阅读
    如何使用<b class='flag-5'>操纵杆</b>和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    如何将双轴操纵杆Arduino Uno连接

    Duel axis Joystick:Arduino摇杆模块,采用双轴电位器控制X、Y轴。按下时,它会激活一个开关。它基于 PS2 控制器的操纵杆,可用于
    发表于 07-07 15:01 0次下载
    如何将双轴<b class='flag-5'>操纵杆</b>与<b class='flag-5'>Arduino</b> Uno连接

    Arduino和MPU6050控制伺服电机

    电子发烧友网站提供《用Arduino和MPU6050控制伺服电机.zip》资料免费下载
    发表于 07-03 10:59 0次下载
    用<b class='flag-5'>Arduino</b>和MPU6050<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    Arduino伺服电机避障机器人

    电子发烧友网站提供《Arduino伺服电机避障机器人.zip》资料免费下载
    发表于 06-29 14:38 0次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>避障机器人

    如何使用模拟操纵杆控制LED

    电子发烧友网站提供《如何使用模拟操纵杆控制LED.zip》资料免费下载
    发表于 06-28 10:05 0次下载
    如何使用模拟<b class='flag-5'>操纵杆</b>来<b class='flag-5'>控制</b>LED

    Arduino控制伺服电机的超级简单方法

    电子发烧友网站提供《用Arduino控制伺服电机的超级简单方法.zip》资料免费下载
    发表于 06-28 09:51 0次下载
    用<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的超级简单方法

    伺服电机连接到Arduino

    电子发烧友网站提供《将伺服电机连接到Arduino.zip》资料免费下载
    发表于 06-28 09:38 1次下载
    将<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>连接到<b class='flag-5'>Arduino</b>

    Arduino伺服电机温度计

    电子发烧友网站提供《Arduino伺服电机温度计.zip》资料免费下载
    发表于 06-27 10:46 0次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>温度计

    一个使用操纵杆控制控制伺服电机的电路

    操纵杆,谁不喜欢它!我们想将操纵杆的乐趣融入到电子设备中,并设计了一个使用操纵杆控制控制伺服
    发表于 06-16 17:31 441次阅读
    一个使用<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b>器<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的电路

    使用Meadow Foundation将模拟操纵杆与Meadow一起使用

    电子发烧友网站提供《使用Meadow Foundation将模拟操纵杆与Meadow一起使用.zip》资料免费下载
    发表于 06-09 10:41 0次下载
    使用Meadow Foundation将模拟<b class='flag-5'>操纵杆</b>与Meadow一起使用

    使用Arduino开发板控制伺服电机

    到达信号指定的位置,它将保 持其位置,并抵抗试图将其从该位置移动的任何外力。该电阻称为伺服的转矩额定值,可在数据表中找到。 脉冲宽度调制PWM: 参考:PWM占空比控制电机转速 当我们使用
    发表于 05-06 10:15 0次下载
    使用<b class='flag-5'>Arduino</b>开发板<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    使用Arduino控制伺服电机

    伺服电机是一个闭环系统,它使用位置反馈来控制其运动和最终位置。伺服电机有多种类型,其主要特点是能够精确
    发表于 05-06 10:08 2次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>