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
    +关注

    关注

    188

    文章

    6468

    浏览量

    186900
  • 操纵杆
    +关注

    关注

    0

    文章

    69

    浏览量

    8526
收藏 人收藏

    评论

    相关推荐

    TMAG5170操纵杆附件组装指南

    电子发烧友网站提供《TMAG5170操纵杆附件组装指南.pdf》资料免费下载
    发表于 11-28 14:28 0次下载
    TMAG5170<b class='flag-5'>操纵杆</b>附件组装指南

    创新型智慧灯综合应用解决方案 路灯单灯控制

    创新型智慧灯综合应用解决方案 路灯单灯控制
    的头像 发表于 11-13 08:31 231次阅读
    创新型智慧灯<b class='flag-5'>杆</b>综合应用解决方案 路灯单灯<b class='flag-5'>控制</b>器

    智慧灯系统整体解决方案 智慧灯显示屏-提供智慧灯照明整体方案

    智慧灯系统整体解决方案 智慧灯显示屏-提供智慧灯照明整体方案
    的头像 发表于 10-18 09:18 389次阅读
    智慧灯<b class='flag-5'>杆</b>系统整体解决方案 智慧灯<b class='flag-5'>杆</b>显示屏-提供智慧灯<b class='flag-5'>杆</b>照明整体方案

    多头丝与滚珠丝有何不同?

    多头丝由多个丝并列组成,每个丝上都有一个螺母。当主动丝旋转时,通过螺母与从动丝的连接,从而实现传动效果,不同丝
    的头像 发表于 09-30 16:32 275次阅读
    多头丝<b class='flag-5'>杆</b>与滚珠丝<b class='flag-5'>杆</b>有何不同?

    上的显示屏是什么意思?我们一般称为灯屏或者AI LED灯

    上的显示屏是什么意思?我们一般称为灯屏或者AI LED灯
    的头像 发表于 09-30 14:48 393次阅读
    灯<b class='flag-5'>杆</b>上的显示屏是什么意思?我们一般称为灯<b class='flag-5'>杆</b>屏或者AI LED灯<b class='flag-5'>杆</b>屏

    什么是智慧灯屏?AI物联网LED灯屏路灯灯显示器?

    什么是智慧灯屏?AI物联网LED灯屏路灯灯显示器?
    的头像 发表于 09-30 14:48 393次阅读
    什么是智慧灯<b class='flag-5'>杆</b>屏?AI物联网LED灯<b class='flag-5'>杆</b>屏路灯灯<b class='flag-5'>杆</b>显示器?

    电动推杆伸缩怎么控制

    电动推杆伸缩是一种广泛应用于自动化设备、智能家居、医疗设备等领域的精密传动部件。它通过电机驱动,实现推杆的伸缩运动,以达到控制设备的目的。 一、电动推杆伸缩的工作原理 电动推杆伸缩
    的头像 发表于 07-11 14:35 2244次阅读

    微型滚珠丝的应用范围及作用

    微型滚珠丝是一种用于传递动力或控制运动的机械元件,它由一个螺旋形的凸起(丝)和一些小球(滚珠)组成。当丝旋转时,滚珠被压在丝的螺旋形
    的头像 发表于 05-04 17:33 466次阅读
    微型滚珠丝<b class='flag-5'>杆</b>的应用范围及作用

    如何操纵高压配电装置?

    高压配电装置的操纵及注意事项是根据各种线路的具体情况不同而异,每种高压配电装置都有自己的特定操纵程序和注意事项,现仅作一般性介绍。
    的头像 发表于 04-01 09:49 412次阅读

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

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

    arduino控制步进电机代码

    Arduino是一种开放源代码的电路板平台,它可以用于控制各种不同的电子设备,包括步进电机。步进电机是一种电动机,可以通过下达特定的指令来控制每个步进的角度,从而使电机旋转到指定的位置。在本文
    的头像 发表于 02-14 16:29 1989次阅读

    如何使用Arduino控制RGB LED

    在本指南中,您将学习如何使用Arduino控制RGB LED。RGB(红-绿-蓝)LED可以通过混合不同强度的红、绿、蓝光来产生多种颜色。您将学习创建一个基本Arduino RGB LED电路,并以一些基本颜色为例循环。
    的头像 发表于 02-11 10:28 4847次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>RGB LED

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

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

    如何使用arduino控制接触器?

    我将避免铅酸电池过载。我想通过使用近 30A 的接触器和 arduino uno 板来控制电池过载。如何使用arduino控制接触器?
    发表于 01-22 07:14

    自动控制系统中的操纵变量指什么

    自动控制系统中的操纵变量指的是在系统中由控制控制的可调节参数,用于调节或改变被控对象的输出或状态。操纵变量是自动
    的头像 发表于 01-15 11:29 5102次阅读