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

}

}

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

    关注

    88

    文章

    2166

    浏览量

    60860
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195988
  • 操纵杆
    +关注

    关注

    0

    文章

    69

    浏览量

    8937
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    伺服电机控制方式简述

    伺服电机作为自动化控制系统的核心执行元件,其控制方式直接决定了设备的动态响应、定位精度和运行效率。随着工业4.0和智能制造的发展,伺服
    的头像 发表于 12-01 07:37 111次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>方式简述

    派克Parker防爆伺服电机与普通伺服电机的区别

    Parker提供了多款不同的伺服电机,性能各有不同,针对特定易燃易爆场所使用的防爆伺服电机,与普通通用伺服
    的头像 发表于 11-20 13:36 125次阅读
    派克Parker防爆<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>与普通<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的区别

    伺服电机控制系统的高宽带电流环参数设计

    上回我们介绍了EtherCAT是如何利用SSC产生的sync信号,与电机控制系统完成同步的,如此我们即可保证整个控制系统的同步性能伺服控制
    的头像 发表于 11-17 09:53 6254次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>系统的高宽带电流环参数设计

    伺服电机和步进电机的核心区别

    大家在运动控制的时候是伺服电机的还是步进电机做定位控制
    的头像 发表于 10-15 14:32 1383次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>和步进<b class='flag-5'>电机</b>的核心区别

    舵机与伺服电机的区别是什么?

    舵机与伺服电机都属于 可精确控制的驱动装置 ,但二者在定义范围、结构组成、控制方式和应用场景上存在显著差异,并非完全等同(舵机是伺服
    的头像 发表于 10-13 10:21 795次阅读

    伺服电机中的回原点方式

    伺服电机的运行需要一个参考点,这个参考点就是原点。原点通常是由光电开关或机械开关来确定的,其位置是固定的。当伺服电机运行时,控制器会根据原点
    的头像 发表于 07-26 09:43 2772次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>中的回原点方式

    无线比例电机转速遥控器的设计

    介绍的是无线电遥控中最新的一款无线比例电机转速遥控器,比例遥控,是指受控制的模型的动作幅度与操纵者转动发射机操纵杆的动作所成的比例关系。一套完整的控设备应该具有:发射机、接收机、
    发表于 07-10 16:56

    伺服电机实现方向改变的方法

    电气控制、机械调整和软件编程三个方面。 一、电气控制 伺服电机的电气控制是改变电机方向的主要方法
    的头像 发表于 02-12 11:07 2349次阅读

    舵机与伺服电机有的区别

          舵机和伺服电机在自动化和机器人技术领域中都是常用的执行器,它们都能够实现精确的位置控制,但二者之间存在一些基本的区别,具体如下:       一、定义与构成       1. 舵机
    的头像 发表于 02-07 07:37 1751次阅读
    舵机与<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>有的区别

    绝对式编码器在伺服电机控制中的应用与优势分析

          绝对式编码器在伺服电机控制中的应用广泛且重要,其优势显著,以下是对其应用与优势的详细分析:       一、绝对式编码器在伺服电机
    的头像 发表于 02-06 09:46 1561次阅读
    绝对式编码器在<b class='flag-5'>伺服</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>中的应用与优势分析

    电机控制器与伺服系统的关系

    在自动化控制系统中,电机控制器和伺服系统是实现精确运动控制的关键组件。电机
    的头像 发表于 01-22 09:35 1481次阅读

    伺服电机编码器

    在现代工业自动化和控制系统中,伺服电机编码器扮演着至关重要的角色。它能够精确测量电机的位置、速度和方向,为系统提供准确的反馈信息,实现高精度的运动
    的头像 发表于 01-20 14:01 1668次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>编码器

    伺服电机静电防护完整方案

    伺服电机静电防护完整方案 伺服电机是一种能够将电能转换为机械能的装置,通过接收控制信号来实现对电机
    的头像 发表于 01-09 14:28 1090次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>静电防护完整方案

    带你了解丝电机的详细知识

    步进电机:结构简单,可靠性高,适用于精密不需要过高速的场合4。 滚珠丝电机:利用滚珠的传动功效,能够轻松承受高速、高负荷的应用场景,并提供准确的位置
    的头像 发表于 12-24 15:58 2106次阅读
    带你了解丝<b class='flag-5'>杆</b><b class='flag-5'>电机</b>的详细知识

    伺服系统与步进电机的区别 如何选择合适的伺服系统

    在自动化和精密控制领域,电机的选择至关重要。伺服系统和步进电机是两种常见的电机类型,它们各自具有独特的优势和局限性。
    的头像 发表于 12-10 10:13 1567次阅读