首页 / 行业
怎样用Arduino和操纵杆控制伺服电机
2019-08-01 14:24:00
电路图
这个项目的硬件部分非常容易制作。首先,将操纵杆模块与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) ;
}
}
最新内容
手机 |
相关内容
逆变器技术对新能源汽车市场增长的
逆变器技术对新能源汽车市场增长的重要性,市场,新能源汽车,逆变器,控制,高效率,能和,随着全球对环境保护和可持续发展的关注不断增什么是高压接触器,高压接触器的组成
什么是高压接触器,高压接触器的组成、特点、原理、分类、常见故障及预防措施,高压,分类,闭合,用于,操作,损坏,AD694ARZ高压接触器是什么是射流继电器,射流继电器的基本
什么是射流继电器,射流继电器的基本结构、技术参数、工作原理、负载分类、如何选用、操作规程及发展历程,继电器,工作原理,分类,负什么是NFC控制器,NFC控制器的组成、
什么是NFC控制器,NFC控制器的组成、特点、原理、分类、常见故障及预防措施,控制器,分类,模式,移动支付,数据,信号,NFC(Near Field Com什么是电机启动器,电机启动器的基本
什么是电机启动器,电机启动器的基本结构、优缺点、工作原理、类型、检测、操作规程及发展历程,工作原理,类型,检测,结构,启动,断开,射频连接器使用技巧与注意事项
射频连接器使用技巧与注意事项,连接器,选择,频率,类型,连接,传输,射频连接器是一种用于连接射频电路的电子元件,常用于无线通信系统电流互感器作用 电流互感器为什么
电流互感器作用 电流互感器为什么一端要接地?,作用,误差,原因,连接,测量,短路故障,电流互感器(Current Transformer,简称CT)是一种用于低耗能,小安派-LRW-TH1传感器通用板
低耗能,小安派-LRW-TH1传感器通用板,一块板即可连接多种传感器!,传感器,多种,连接,一块,通用,接口,小安派-LRW-TH1传感器通用板是一款