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

    关注

    191

    文章

    6535

    浏览量

    197694
  • 操纵杆
    +关注

    关注

    0

    文章

    71

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    KJ - 33000 - 002 操纵杆 I2C 开发套件编程与应用详解

    KJ - 33000 - 002 操纵杆 I2C 开发套件编程与应用详解 在电子设备的设计中,操纵杆是一种常见且重要的输入设备。今天我们就来详细探讨一下 Knowles 公司的 KJ - 33000
    的头像 发表于 05-20 09:05 374次阅读

    TDK Joystick Evaluation Platform:HAL 3900的全方位解析

    TDK Joystick Evaluation Platform:HAL 3900的全方位解析 在电子设备的设计与开发中,传感器的应用至关重要,尤其是在操纵杆等设备中,精确的位置和角度检测能够极大
    的头像 发表于 12-26 11:35 695次阅读

    探索用于Arduino的TLE94112ES直流电机控制盾牌

    探索用于Arduino的TLE94112ES直流电机控制盾牌 引言 在电子工程领域,电机控制一直是至关重要的部分。对于Arduino开发者而言,一款功能强大且易于使用的电机
    的头像 发表于 12-18 16:35 611次阅读

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

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

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

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

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

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

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

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

    智“感”每一亩:干簧与霍尔传感器赋能农业升级

    的兴起让传感器需求激增,工程师与产品设计师必须选用能够胜任这一挑战的可靠元件。走进农业设备应用重型农机制造商将干簧传感器用于以下场景:操纵杆控制:定位设备臂乘客在位检
    的头像 发表于 09-19 16:23 7174次阅读
    智“感”每一亩:干簧与霍尔传感器赋能农业升级

    如何调整滚珠丝的反向间隙?

    滚珠丝与螺母之间的配合间隙因磨损或调整不当而增大,支撑轴承的间隙过大,导致丝在运动过程中产生轴向窜动。
    的头像 发表于 09-15 17:58 1405次阅读
    如何调整滚珠丝<b class='flag-5'>杆</b>的反向间隙?

    如何在 NuMaker-IoT-M467 板上使用 Arduino IDE 控制 Wi-Fi 模块?

    在NuMaker开发板上,有一个ESP-12F Wi-Fi模块;但是,Arduino IDE 中的 NuMaker UNO 包不提供该模块的相关控制。如果您希望在 Arduino IDE 中
    发表于 09-04 08:28

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

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

    TMAG5173EVM汽车级3D霍尔传感器评估模块技术解析

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

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

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

    智慧路灯冷知识大揭秘

    在城市的大街小巷,路灯随处可见,它们默默伫立,为人们照亮夜行的路。而如今,看似普通的路灯已悄然升级为智慧路灯,隐藏着许多鲜为人知的冷知识,正重塑着城市的运营与生活模式。
    的头像 发表于 06-27 16:49 1006次阅读

    Arduino与LabVIEW联合编程指南

    Arduino编程并与LabVIEW上位机结合实现设备的远程控制与数据采集。
    发表于 06-19 15:54 3次下载