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

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

3天内不再提示

如何使用操纵杆控制Arduino

454398 来源:wv 2019-10-14 15:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:需要的事情

1.arduino(duh )结果2。计算机(如果您正在阅读此书,除非您不是 _ ,否则您将拥有一个计算机)

3.usb端口(大多数计算机都具有这些端口)

4.time(花了我5个小时来计算)

5.servo

6.JOYSTIK

第2步:您需要的软件

arduino编程

python

pyserial(用于python的插件)

pygame(用于python的插件)

操纵杆驱动程序

步骤3:程序

我已经添加了您需要的程序

arduino:

/*

JoystickSerialServo

--------------

使用PC和操纵杆的伺服控制

*

创建于2007年12月19日

copyleft 2007年,Brian D. Wendt

http://principialabs.com/

*

通过Tom Igoe

http://itp.nyu.edu/physcomp/Labs/Servo

*/

/**为伺服和设置调整这些值,如果必需**/

int当地伺服Pin = 3;//伺服电机的控制销

int minPulse = 600;//最小伺服位置(要使用google)

int maxPulse = 2400;//最大伺服位置(要使用google)

int refreshTime = 20;//脉冲之间的时间(ms)(50Hz)

/** Arduino将为您计算这些值**/

int centerServo;//中心伺服位置

int pulseWidth;//伺服脉冲宽度

int舵机位置;//指令的伺服位置,0-180度

int pulseRange;//最大脉冲-最小脉冲

long lastPulse = 0;//记录的最后一个脉冲的时间(ms)

void setup(){ pinMode(servoPin,OUTPUT);//将伺服引脚设置为输出引脚

pulseRange = maxPulse-minPulse;

centerServo = maxPulse-((pulseRange)/2);

pulseWidth = centerServo;//给伺服器一个起点(或者它浮动)

Serial.begin(9600);

}

void loop(){

//等待串行输入

if(Serial .available()》 0){

//读取传入的字节:

servoPosition = Serial.read();

//从伺服位置计算PulseWidth

pulseWidth = minPulse +(servoPosition *(pulseRange/180));

//在min和max处停止伺服脉冲,如果(pulseWidth》 maxPulse){pulseWidth = maxPulse; }

if(pulseWidth //debug

//Serial.println(servoPosition);

}

//每20毫秒(当前时间)使用当前pulseWidth

//脉冲伺服,这将保持伺服的如果未更改,则将其置于位置;如果更改,则将其置于位置。

if(millis()-lastPulse》 = refreshTime){//启动脉冲

delayMicroseconds(pulseWidth);//脉冲宽度

digitalWrite(servoPin,LOW);//停止脉冲

lastPulse = millis();//保存最后一个脉冲的时间

}

}

python:

#!/usr/bin/env python

#joystick-servo.py

#创建于2007年12月19日#copyleft 2007 Brian D.Wendt

#http://principialabs.com/

#代码改编自:#http://svn.lee.org/swarm/trunk/mothernode/python/multijoy.py

#注意:此脚本需要以下Python模块:

#pyserial-http://pyserial.sourceforge。 net/

#pygame-http://www.pygame.org/

#Win32用户可能还需要:

#pywin32-http://sourceforge.net/projects/pywin32/

导入序列

导入pygame

#允许多个操纵杆

joy = []

#Arduino USB端口地址(在Win32上尝试“ COM5”)

usbport =“ COM8”

#定义与Arduino的USB串行连接

ser = serial.Serial(usbport,9600)

#处理操纵杆事件

def handleJoyEvent(e):

如果e.type == pygame.JOYAXISMOTION:

axis =“未知” if(e.dict [‘axis’] == 1):

axis =“ X”

if(e.dict [‘axis’] == 0 ):

axis =“ Y”

if(e.dict [‘axis’] == 2):

轴=“油门”

if(e.dict [‘axis’] == 3):

轴=“ Z”

if(轴!=“未知” ):

str =“轴:%s;值:%f“%(轴,e.dict [‘value’])

#取消注释调试

#output(str,e.dict [‘joy’])

#Arduino游戏杆伺服hack

if(axis ==“ X”):

pos = e.dict [‘value’]

#将操纵杆位置转换为伺服增量,0-180

move = round(pos * 90,0)

if(move 《0):

servo = int(90-abs(move))

else:

servo = int(move + 90)##转换位置到ASCII字符

servoPosition = chr(servo)

#并通过串行连接发送到Arduino write(servoPosition)

#取消调试调试注释

#print Servo,ServoPosition

elif e.type == pygame.JOYBUTTONDOWN:

str =“ Button:%d”%(e.dict [‘button’])

#不建议调试

#output(str,e.dict [‘joy’])

#按钮0(触发)以退出

if(e.dict [‘button’] == 0):

打印“ Bye! n”

ser。 close()

quit()

else:

pass

#打印操纵杆位置 def输出(线,杆):

打印“操纵杆:%d; %s“%(操纵杆,行)

#等待操纵杆输入

def joystickControl():

而True:

e = pygame.event.wait()

if(e。类型== pygame.JOYAXISMOTION或e.type == pygame.JOYBUTTONDOWN):

handleJoyEvent(e)

#main方法

def main():

#初始化pygame

pygame.joystick .init()

pygame.display.init()

如果不是pygame.joystick.get_count():

打印“ n请连接操纵杆并再次运行。 n”

quit()

打印“检测到 n%d个操纵杆。”%pygame.joystick.get_count()

对于我在范围内(pygame.joystick.get_count()):

myjoy = pygame.joystick。操纵杆(i)

myjoy.init()

joy.append(myjoy)

打印“操纵杆%d:”%(i)+ joy [i] .get_name()

print“压下触发器(按钮0)退出。 n“

#运行游戏杆侦听器循环

joystickControl()

#如果 name =,则可以用作模块或独立脚本

=“ main ”:

main()

步骤4:对其进行测试_

我没有编写python脚本

我在

http://principialabs.com/jo上找到了它ystick-control-of-a-servo/

有趣的是

4伺服版本

http://principialabs.com/joystick-control-of-a-servo/

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

    关注

    190

    文章

    6515

    浏览量

    196007
  • 操纵杆
    +关注

    关注

    0

    文章

    70

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索MSX - 360微型操纵杆位置传感器:小身材大能量

    探索MSX - 360微型操纵杆位置传感器:小身材大能量 在电子设备设计领域,传感器的性能和适用性对产品的整体表现起着关键作用。今天,我们要深入了解一款来自PIHER的MSX - 360微型操纵杆
    的头像 发表于 12-10 15:30 128次阅读

    支撑座调试中的数据校准与误差控制

    在机械传动系统调试中,丝支撑座的预压力直接影响传动精度与使用寿命。
    的头像 发表于 12-09 18:00 49次阅读
    丝<b class='flag-5'>杆</b>支撑座调试中的数据校准与误差<b class='flag-5'>控制</b>

    Molex控制杆激活接线端子技术解析与应用指南

    Molex控制杆激活接线端子简化了电线端接、缩短了组装时间并确保安全的电源连接。 这些简单易用、可靠的块即使在极端灰尘或温度环境下也能长期运行。控制杆激活接线端子有多种安装选项,以提高承载高达72A
    的头像 发表于 11-17 14:41 185次阅读

    应用案例 | 现代农业如何智「感」每一亩?

    传感器需求激增,为了实时监控这些多样化作业,行业越来越依赖磁性传感器。干簧传感器&霍尔效应传感器磁传感器正被用在农机的哪些部位?干簧传感器操纵杆控制:定位设备臂乘
    的头像 发表于 10-16 16:40 496次阅读
    应用案例 | 现代农业如何智「感」每一亩?

    TMAG5173EVM传感器评估模块技术解析与应用指南

    个磁体和一个TMAG5173-Q1子板。Texas Instruments TMAG5173EVM可搭配传感器控制器板TI-SCB(单独出售)使用,从而实现随附的图形用户界面 (GUI)。还包括一个3D打印的操纵杆模块,用于生成x、y和z方向的磁场
    的头像 发表于 08-25 09:19 644次阅读
    TMAG5173EVM传感器评估模块技术解析与应用指南

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

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

    Melexis的MLX90427更安全,更可靠,性能更高且成本更低

    今天Melexis(迈来芯)宣布,其支持SPI通信的嵌入式位置传感器MLX90427的应用范围已扩展至工业、建筑、农业及医疗领域中的操纵杆和人机界面(HMI)。这款传感器凭借超高性价比设计与片上
    的头像 发表于 05-21 10:01 499次阅读
    Melexis的MLX90427更安全,更可靠,性能更高且成本更低

    Melexis霍尔效应磁位置传感芯片MLX90427介绍

    Melexis宣布,其支持SPI通信的嵌入式位置传感器MLX90427的应用范围已扩展至工业、建筑、农业及医疗领域中的操纵杆和人机界面(HMI)。这款传感器凭借超高性价比设计与片上DSP技术展现出
    的头像 发表于 05-17 17:19 1123次阅读

    户外LED智慧灯屏是什么意思?有哪些优势?哪些灯屏厂家有?

    户外LED智慧灯屏是什么意思?有哪些优势?哪些灯屏厂家有?
    的头像 发表于 05-14 09:49 552次阅读
    户外LED智慧灯<b class='flag-5'>杆</b>屏是什么意思?有哪些优势?哪些灯<b class='flag-5'>杆</b>屏厂家有?

    这个华为基站腔体滤波器的抽头、频率调谐、耦合调谐分别在哪里?

    下图这个华为基站腔体滤波器的抽头、频率调谐、耦合调谐分别在哪里?能否请大佬用圆圈箭头标注一下,万分感谢。
    发表于 02-13 21:39

    支撑座对设备性能有哪些影响?

    支撑座采用高品质钢材制作,具有高强度和刚度,能够为丝提供可靠的支撑,有效避免丝在运转过程中出现弯曲和扭曲现象。
    的头像 发表于 01-16 17:48 629次阅读
    丝<b class='flag-5'>杆</b>支撑座对设备性能有哪些影响?

    电动轮椅采用磁吸弹簧针充电方案的优势分析

    电动轮椅在老年人的日常生活中是得力的生活帮手之一。电动轮椅是增加了电动马达和导航控制的手段的轮椅。通常是一个小的操纵杆安装在扶手上。 在充电方面,电动轮椅使用磁吸弹簧针充电方案具有创新性和挑战性。
    的头像 发表于 01-15 17:39 878次阅读
    电动轮椅采用磁吸弹簧针充电方案的优势分析

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

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

    滚珠丝误差及其影响

    滚珠丝在精密机械传动和定位系统中扮演着关键角色,滚珠丝误差是指滚珠丝在制造过程中产生的一些不可避免的误差。
    的头像 发表于 12-23 17:49 1070次阅读
    滚珠丝<b class='flag-5'>杆</b>误差及其影响

    如何使用Arduino实现CAN总线通信呢

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2834次阅读