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

    关注

    184

    文章

    6425

    浏览量

    184775
  • 操纵杆
    +关注

    关注

    0

    文章

    67

    浏览量

    8459
收藏 人收藏

    评论

    相关推荐

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

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

    如何在树莓派Pico上使用摇杆?

    模拟二轴拇指操纵杆(俗称摇杆)是一种模拟操纵杆,相比于「方向」操纵杆更加准确和灵敏,它带有一个「按下选择按钮」。
    的头像 发表于 11-28 09:20 1150次阅读
    如何在树莓派Pico上使用摇杆?

    NUC123如何安装具有三个界面的USB气体放电复合装置

    : NuTiny-EVB-NUC123-LQFP64 v1.0 该示例代码执行一个气体放电复合装置,有三个功能,即气体放电鼠标、气体放电键盘和气体放电操纵杆。 3个GPIOs在不同界面用于触发功能。 您可以在下列时间下载样本代码
    发表于 08-30 07:13

    操纵杆界面数据表

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

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

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

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

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

    三坐标测量仪的操纵盒介绍

    角度之间进行切换5、操纵杆:左边操纵杆控制CMM的Z轴方向运动。右边的操纵杆控制CMM的X、Y方向运动。右边
    的头像 发表于 07-19 15:16 766次阅读
    三坐标测量仪的<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连接

    使用Blynk手机应用程序提供的超声波传感器和操纵杆

    电子发烧友网站提供《使用Blynk手机应用程序提供的超声波传感器和操纵杆.zip》资料免费下载
    发表于 06-28 14:41 0次下载
    使用Blynk手机应用程序提供的超声波传感器和<b class='flag-5'>操纵杆</b>

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

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

    【飞凌i.MX9352开发板试用】+机械臂游戏2游戏操纵杆控制四自由度机械臂(开源)原创首发

    接上一篇:【飞凌i.MX9352开发板试用】+机械臂游戏1开箱—游戏操纵杆(开源)原创首发 - 飞凌嵌入式 - 电子技术论坛- 广受欢迎的专业电子论坛! https
    发表于 06-24 21:50

    电子diy制作一个操纵杆电机控制电路

    DIY
    YS YYDS
    发布于 :2023年06月21日 00:11:51

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

    操纵杆,谁不喜欢它!我们想将操纵杆的乐趣融入到电子设备中,并设计了一个使用操纵杆控制控制伺服电机的电路。伺服电机具有强大的应用,主要以其对
    发表于 06-16 17:31 429次阅读
    一个使用<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开发板使用NRF24L01进行无线通信

    ”消息,在第二个例子中,我们将在Arduino开发板之间进行双向通信, 其中我们使用在第一个Arduino开发板的操纵杆控制在第二个Arduin
    发表于 05-30 10:22 2次下载
    <b class='flag-5'>Arduino</b>开发板使用NRF24L01进行无线通信