【雕爷学编程】Arduino动手做(120)---游戏摇杆扩展板

news2024/12/28 11:53:58

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百二十:JoyStick Shield PS2游戏摇杆扩展板 模拟键盘鼠标功能 大摇杆模块

在这里插入图片描述
双轴摇杆参数
一、MECHANICAL CHARACTERISTIC 机械特性
1、Operating force of lever 摇杆作动力 :120±70 gf
2、Operating angle 操作角度:26° Max

二、ELECTRICAL CHARACTERISTIC 电气特性
1、Rating power 额定功率:0.0125W
2、Maximum operating voltage最高使用电压:AC 50V DC 5V
3、Voltage divider error 分压误差:44%~56%
4、Insulation resistance 绝缘阻抗:100M? 1 Minute at DC 250V
5、Dielectric voltage 耐电压:1 Minute at AC 250V

三、SWITCH CHARACTERISTICS 开关规格
1、Operating force 开关按压力:740±300gf
2、Contact resistance 接触阻抗:100mΩ Max
3、Rating power 额定功率:DC12V 50mA

四、ENDURANCE CHARACTERISTIC 耐久特性
1、Rotational life 旋转寿命:2000,000 cycles Min
2、Push operating life 开关按压寿命:1,000,000 cycles Min

在这里插入图片描述
摇杆工作原理
摇杆电位器在直流电路中作为电流调节使用时,将有电流通过摇杆电位器的滑动臂,此时由于阳极氧化的原因会导致电阻值异常增加。在这种情况下,建议将连接电阻体的端子接负极,滑动臂接正极。如果直流电流直接通过摇杆电位器,摇杆电位器的阳极就会受到氧化损伤,从而让摇杆电位器的阻抗变大,因此最好是将电流的负极接在跟碳膜片接触的端子上,正极接在跟刷子(摇杆电位器接触片)的端子上。摇杆电位器作为可变电阻器时,建议作调整电压的分压器使用,同时摇杆电位器的负载电阻RL应不小于摇杆电位器公称阻值RT的10倍。在稳压器中用来调节输出电压,故设计摇杆电位器应满中顺时针调节时输出电压升高,反时针调节器节时输出电压降低;在可调恒流充电器中摇杆电位器用来调节充电电流折大小,设计摇杆电位器时应满中顺时针调节时,电流增大。IC座,设计印刷板图时,在使用IC座的场合下,一定要特别注意IC座上定位槽放置的方位是否正确,并注意各个IC脚位是否正确。

在这里插入图片描述
游戏摇杆扩展板技术参数:

(A)1个PS2带按钮十字摇杆,4颗圆形按钮,2个小按键。

(B)板载的开关电压可以在3.3V和5V之间切换。

(C)1个复位按键

(D)xbee/Bluetooh Bee/APC220蓝牙无线数传接口

(E)2.4G NRF24L01 RF无线数传接口

(F)Nokia 5110 LCD接口

添加nRF24L01的RF接口

添加Nokia 5110 LCD接口, 这样非常方便游戏开发。

添加蓝牙模块的接口,方便蓝牙无线串口通讯。

添加I2C通讯接口,方便I2C设备的连接

同时,JoyStick Shield 有1个PS2带按钮十字摇杆,还有4颗圆形按钮,2个小按键。为Arduino提供了摇杆和按键的输入扩展。板载开关可以在3.3V 和5V 之间切换,可以将此模块用于其它3.3V单片机平台,比如STM32。

在这里插入图片描述
游戏摇杆扩展板的使用
(A)2.4G NRF24L01使用
模板的RF SPI接口对应
IRQ–>D8;CE–>D9;CSN–>D10;MOSI -->D11;
MISO–>D12;CLK -->D13;

(B)Bluetooh蓝牙使用
模板的蓝牙接口对应 RXD–>D1(TX);TXD–>D0(RX);
注意:当蓝牙写AT命令时,把板载上APC&BT附近的拨动开关拨到“H”,表示蓝牙的KEY脚置高,或把板载上的“KEY”脚跳线到IO口,通过软件控制蓝牙的KEY。在蓝牙其他情况下,拨动开关拨到“L”。

(C)Nokia 5110 LCD使用
模板的Nokia 5110接口对应
SCE–>D13;RST–>D12;DC–>D11;MOSI–>D10;SCLK–>D9;

(D)板载的按键参考代码:
模板的按键接口对应
A–>D2;B–>D3;C–>D4;D–>D5;E–>D6;F–>D7;
X–>A0;Y–>A1;
S–>悬空(该键为摇杆的Z键,如果需要,可以跳线接入IO口)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
游戏摇杆扩展板的接脚配置

PS2游戏摇杆(X轴A0,Y轴A1,Z轴按键D6)

四个独立按键(D2、D3、游戏摇杆扩展板的接脚配置

PS2游戏摇杆(X轴A0,Y轴A1,Z轴按键D6)

四个独立按键(D2、D3、D4、D5)

预留扩展接口:

1个I2C接口 D4、D5)

预留扩展接口:

1个I2C接口

1个TTL串口

模拟量接口(A2-A5)

数字量接口(D8-D13)

Arduino复位按键

完全兼容Arduino UNO R3接口

摇杆X\Y轴输出为两个电位器,可以通过AD转换读出扭动角度

向下按摇杆,可以触发一路轻触开关,为数字输出

四路独立按键,数字输出,方便使用

板上标注有各个模块的端口配置,方便调试

预留了其他没有占用的端口,方便后期扩展

通过该扩展板可以制作一个遥控手柄,结合XBee模块可实现无线控制

结合Arduino Leonardo还可以模拟电脑鼠标等

在这里插入图片描述
Arduino摇杆模块提供七个按钮开关(六个独立按钮和摇杆下方的按钮)和一个带有两个电位计的拇指摇杆。这个扩展板为您的Arduino提供旧的任天堂(Nintendo)控制器上的功能。摇杆可用于控制诸如旋律或屏幕上的像素之类的输出。按钮可用于导航或游戏控制。

在这里插入图片描述

Arduino实验开源代码

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百二十:JoyStick Shield PS2游戏摇杆扩展板 模拟键盘鼠标功能 大摇杆模块

项目:摇杆扩展板测试

*/



int FirstShotX , FirstShotY;

void setup(){

  for(int i=0; i<19; i++)

  {

  pinMode(i, INPUT);

  digitalWrite(i, 1);

  }

  Serial.begin(9600);

  FirstShotX = 0;

  FirstShotY = 0;

}



void loop(){

  int i, someInt, flag = 0;

  for(i=2; i<8; i++)

  {

  someInt = digitalRead(i);

  if(someInt == 0)

  {

    flag =1;

    break;

  }

  }

  if(flag == 1)

  {  

    switch(i)

    {

    case 2: Serial.println("--------> Button A"); break;

    case 3: Serial.println("--------> Button B"); break;

    case 4: Serial.println("--------> Button C"); break;

    case 5: Serial.println("--------> Button D"); break;

    case 6: Serial.println("--------> Button E"); break;

    case 7: Serial.println("--------> Button F"); break;

    default: break;

    }

    flag=0;

  }

  int sensorValue = analogRead(A0);

  if(FirstShotX == 0)

  {

    FirstShotX = sensorValue;

    Serial.print("FirstShotX = ");

    Serial.println(FirstShotX);

  }

  Serial.print("X = ");

  Serial.println(sensorValue - FirstShotX); 

  sensorValue = analogRead(A1);

  if(FirstShotY == 0)

  {

    FirstShotY = sensorValue;

    Serial.print("FirstShotY = ");

  Serial.println(FirstShotY);

  }

  Serial.print("Y = ");

  Serial.println(sensorValue - FirstShotY);

  delay(200);

}

实验串口返回情况

在这里插入图片描述
Arduino实验开源代码之二

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百二十:JoyStick Shield PS2游戏摇杆扩展板 模拟键盘鼠标功能 大摇杆模块

项目:摇杆扩展板测试之二

*/



char button0=7, Y=6, R=3, G=4, B=5;

void setup(void){

  pinMode(R, INPUT);    //设置口按键为输入状态,并配置上拉。

  digitalWrite(R, HIGH);

  pinMode(button0, INPUT);    

  digitalWrite(button0, HIGH);

  pinMode(G, INPUT);    

  digitalWrite(G, HIGH);  

  pinMode(B, INPUT);    

  digitalWrite(B, HIGH);

  pinMode(Y, INPUT);    

  digitalWrite(Y, HIGH);  

  Serial.begin(9600);        //设置串口通信9600波特率

}



void loop(void){

  Serial.print(analogRead(1));      //读取摇杆Y轴的值,串口显示

  Serial.print(",");

  Serial.print(analogRead(0));      //读取摇杆X轴的值,串口显示

  Serial.print(",");

  Serial.print(digitalRead(button0));  //读按键值,串口显示

  Serial.print(digitalRead(R));  

  Serial.print(digitalRead(G));  

  Serial.print(digitalRead(B));

  Serial.println(digitalRead(Y));    

  delay(100);  //100ms刷新一次

}

实验串口返回情况

在这里插入图片描述
Arduino实验开源代码之三

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百二十:JoyStick Shield PS2游戏摇杆扩展板 模拟键盘鼠标功能 大摇杆模块

项目:摇杆扩展板测试之三

*/



char K=8 ,A=2, B=3, C=4, D=5, E=6,F=7;

void setup(void){

  pinMode(K, INPUT);    

  digitalWrite(K, HIGH);

  pinMode(A, INPUT);    //设置口按键为输入状态,并配置上拉。

  digitalWrite(A, HIGH);

  pinMode(B, INPUT);    

  digitalWrite(B, HIGH);

  pinMode(C, INPUT);    

  digitalWrite(C, HIGH);  

  pinMode(D, INPUT);    

  digitalWrite(D, HIGH);

  pinMode(E, INPUT);    

  digitalWrite(E, HIGH);  

  pinMode(F, INPUT);    

  digitalWrite(F, HIGH);

  Serial.begin(9600);        //设置串口通信9600波特率

}



void loop(void){

  Serial.print("X轴;");

  Serial.print(analogRead(0));      //读取摇杆X轴的值,串口显示

  Serial.print(" Y轴;");

  Serial.print(analogRead(1));      //读取摇杆Y轴的值,串口显示

  Serial.print("  K键");

  Serial.print(digitalRead(K));

  Serial.print("  A键");

  Serial.print(digitalRead(A));

  Serial.print("  B键");

  Serial.print(digitalRead(B));

  Serial.print("  C键");

  Serial.print(digitalRead(C));

  Serial.print("  D键");  

  Serial.print(digitalRead(D));

  Serial.print("  E键");

  Serial.print(digitalRead(E));

  Serial.print("  F键");

  Serial.print(digitalRead(F));    

  Serial.println();  

  delay(100);  //100ms刷新一次

}

实验串口返回情况

在这里插入图片描述
Arduino实验场景图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/677454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023-06-23:redis中什么是缓存击穿?该如何解决?

2023-06-23&#xff1a;redis中什么是缓存击穿&#xff1f;该如何解决&#xff1f; 答案2023-06-23&#xff1a; 缓存击穿是指一个缓存中的热点数据非常频繁地被大量并发请求访问&#xff0c;当该热点数据失效的瞬间&#xff0c;持续的大并发请求无法通过缓存获取到数据&…

Triton教程 --- Triton 响应缓存

Triton教程 — Triton 响应缓存 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理速率限制器模型管理自定义算子解耦后端和模型 概述 在本文档中&#xff0c;推理请求是模型名称、模型版本和输入张量&#xff08;名称、…

ChatGPT从入门到精通,深入认识ChatGPT

ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定1、ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视( 点击观看完整版本 )https…

TreeMap数据结构及源码解析.跟学黑马

TreeMap数据结构及源码解析 1.TreeMap的特点2.TreeMap的数据结构2.1二叉查找树2.1.1二叉查找树的定义2.1.2二叉查找树的查找操作 2.2平衡二叉树2.2.1平衡二叉树的定义2.2.2平衡二叉树的旋转 2.3红黑树2.3.1红黑树的定义 2.TreeMap的源码分析2.1get()获取方法分析2.2put()添加方…

企业级开发项目和自学项目到底有什么区别

前言 好久不见了各位&#xff01;最近几个月都未更新&#xff0c;是因为从春招开始就在投简历面试实习岗位&#xff0c;然后入职&#xff0c;最后成功成为了一个半成品后端练习生&#xff0c;想说的话有太多太多 下面就站在一个在校实习生的身份&#xff0c;结合自己最近几个月…

科普 | 眼图

本文简要说明眼图相关的知识&#xff0c;参考是德科技的文章 1。 科普 | 眼图 基本知识串扰眼图眼图的产生原理及作用创建眼图 - 眼图波形的采样过程眼图的产生原理及作用眼图可以看出哪些性能指标&#xff1f;如何评判眼图质量&#xff1f;眼图测试模板眼图与存储深度实时的眼…

短视频seo源码开发部署技术解析

短视频seo开发需要哪些技术 应用程序优化技术&#xff1a;包括应用程序的各种元素&#xff08;如标题、描述、关键字、图标等&#xff09;的优化和设置&#xff0c;以及应用程序内部链接和导航的合理布局和设置。 视频内容优化技术&#xff1a;包括视频标题、描述、标签、封面…

人工智能数据集处理——数据获取

目录 1、从csv和txt文件中读取数据 pandas中可使用read_csv读取csv或txt文件中的数据 使用read_csv()函数读取phones.csv文件中的数据,并指定编码格式为gbk 使用head()方法指定获取phones.csv文件中前3行的数据 使用read_csv() 函数读取 itheima_books.txt文件中的数据,并指…

【Redis】2、Redis 的 Java 客户端(Jedis 和 SpringDataRedis)

目录 零、Redis 的 Java 客户端有哪些&#xff1f;二、Jedis 客户端(1) 引依赖(2) 连接 Redis 服务并测试(3) Redis 连接池 三、SpringDataRedis 介绍四、SpringBoot 中集成 SpringDataRedis(1) 引入依赖(2) 配置文件中书写相关配置(3) RedisTemplate 的默认序列化方式(4) 自定…

高校学生考勤系统

摘 要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括高校学生考勤系统的网络应用&#xff0c;在外国高校学生考勤系统已经是很普遍的方式&#xff0c;不过国内的高校学生考勤可能还处于起步阶段。高校学生考勤系统具有管理…

Linux网络-数据链路层,MAC帧解析,ARP协议

目录 数据链路层VS网络层 以太网概念 以太网的帧格式&#xff08;报文格式&#xff09;&#xff08;也可以称之为MAC帧&#xff09; MAC地址的概念 MAC帧格式 局域网通信原理 MTU MTU说明 MTU对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ARP协议 ARP协…

【算法题解】41. 二叉树的中序遍历

这是一道 简单 题 https://leetcode.cn/problems/binary-tree-inorder-traversal/ 题目 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 示例 2&#xff1a; 输入&#…

[易语言][部署]使用易语言部署paddleocr的onnx模型api接口推理直接调用

易语言如何部署paddleocr模型&#xff0c;如今paddleocr模型广泛被使用各种编程&#xff0c;为了能在易语言上使用因此开发一个通用接口&#xff0c;开发基本思路如下&#xff1a; 可见我们并没有使用什么通信协议或者命令行之类的方法&#xff0c;这种直接封装接口比其他方法更…

TCP 学习笔记

Win R 打开控制台输入CMD 打开小黑窗&#xff0c; 输入ipconfig 查询本机地址 “外网IP是全世界唯一的IP地址,仅分配给一个网络设备。而内网IP是由路由器分配给每一部内部使用的IP地址,而内网的所有用户都是通过同一个外网IP地址进行上网的,而内网的IP地址每个人的都不一样…

(四)WPF - 布局

一、布局过程 WPF 布局包括两个阶段&#xff1a;一个测量阶段和排列阶段 在测量阶段&#xff0c;容器遍历所有子元素&#xff0c;并询问子元素它们所期望的尺寸。在排列阶段&#xff0c;容器在合适的位置放置子元素。&#xff08;每个元素都被其父元素告知它自己的尺寸是多少…

【软件设计师暴击考点】下午题高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

电脑选购必备的六大技巧

目录 1、CPU方面 2、显卡方面 3、电脑主板方面 4、内存和硬盘方面 5、电脑机箱和电源方面 6、装机过程要全程参与 今天小编给大家分享电脑选购组装必备的六大技巧&#xff0c;希望对大家实际选购、组装电脑提供一些帮助&#xff01; 买电脑要注意哪些问题 1、CPU方面 C…

Qt Model-View架构领悟

1.架构的选择 1.1是否需要委托 模型视图架构图如下所示&#xff0c;模型视图架构源于MVC模式&#xff1a;模型&#xff08;Model&#xff09;是应用对象&#xff0c;表示数据&#xff1b;视图&#xff08;View&#xff09;是模型的用户界面&#xff0c;用以显示数据&#xff…

springboot基础(78):Freemarker模板生成word文档

文章目录 前言如何使用Freemakrer生成word文档1. 制作模板2. 编写工具类 遇到的问题下载失败如何只生成文件不下载 前言 利用Freemarker模板生成word文档。示例&#xff0c;将左侧的模板生成为右侧的文档并下载。 如何使用Freemakrer生成word文档 1. 制作模板 1.编辑一份a…

实现注册与登录(企业级)

目录 实现注册超级管理员功能&#xff08;持久层&#xff09; 一、判定系统是否已经绑定超级管理员 二、编写保存用户记录的代码 三、编写查询用户ID的代码 实现注册超级管理员功能&#xff08;业务层&#xff09; 一、获取OpenId 二、编写注册新用户的业务代码 掌握 R…