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

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实验场景图

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

变化太快的Roop项目(版本1.0.1)

文章目录 &#xff08;一&#xff09;版本1.0.1的变化&#xff08;1.1&#xff09;项目依赖&#xff08;1.2&#xff09;模型位置&#xff08;1.3&#xff09;命令行&#xff08;1.4&#xff09;界面UI&#xff08;1.5&#xff09;处理与结果 最早的&#x1f517;接触和介绍&am…

2023亚马逊云科技中国峰会引领无服务器架构新潮流:Serverlesspresso Workshop

序言 在今年3月&#xff0c;我有幸接触了一个项目&#xff0c;也因此结识了 亚马逊云科技无服务器架构 Serverless。在陆续了解 Amazon 产品的过程中&#xff0c;我逐渐发现它所带给我的惊喜远远超出了最初的预期。 今天&#xff0c;想向大家介绍一个名为 Serverlesspresso Wor…

树莓派+Docker+cpolar(内网穿透)+Nignx

首先安装Raspberry Pi Imager&#xff0c;用于给SD卡安装系统镜像。 使用Raspberry Pi Imager&#xff08;树莓派镜像烧录器&#xff09;烧录镜像文件到SD中&#xff0c;操作步骤如下图所示&#xff1a; docker安装nginx提供web服务 获取最新版本的docker安装包&#xff1a; su…

Kafka系列之:一次性传送和事务消息传递

Kafka系列之&#xff1a;一次性传送和事务消息传递 一、目标二、关于事务和流的一些知识三、公共接口四、示例应用程序五、新配置六、计划变更1.幂等生产者保证2.事务保证 七、关键概念八、数据流九、授权十、RPC 协议总结1.获取请求/响应2.生产请求/响应3.ListOffset请求/响应…

web前端框架JS学习之JavaScript类型转换

vascript有多种数据类型&#xff0c;如字符串、数字、布尔等&#xff0c;可以通过typeof语句来查看变量的数据类型。数据类型转换就是数据类型之间相互转换&#xff0c;比如把数字转成字符串、把布尔值转成字符串、把字符串转成数字等&#xff0c;这在工作也是经常碰到的。 本…

Excel VBA 编程入门

Visual Basic for Applications&#xff08;VBA&#xff09;是一种用于 Microsoft Office 套件中的编程语言&#xff0c;它可以帮助您自动化重复性任务、定制应用程序以及增强工作效率。本文将向您介绍 Excel VBA 编程的基础知识&#xff0c;并通过示例帮助您入门。 1、启用“开…

CSS样式优先级怎样划分?【CSS优先级规则】

定义CSS样式时&#xff0c;经常出现两个或更多样式规则应用在同一元素上的情况。此时CSS就会根据样式规则的权重&#xff0c;优先显示权重最高的样式。CSS优先级指的就是CSS样式规则的权重。在网页制作中&#xff0c;CSS为每个基础选择器都指定了不同的权重&#xff0c;方便我们…

Vue中如何进行分布式任务调度与任务监控

Vue中如何进行分布式任务调度与任务监控 在复杂的系统中&#xff0c;如何有效地进行任务调度和监控是一个非常重要的问题。分布式系统中&#xff0c;任务调度和监控则更加复杂。Vue是一款流行的前端框架&#xff0c;本文将介绍如何在Vue中进行分布式任务调度和监控。 什么是分…

图扑智慧地下采矿,“像素游戏”智能呈现

在这个像素世界里&#xff0c;我们需要一个智能地下采矿可视化综合管理平台&#xff0c;来帮助我们管理和监控地下采矿全流程。 图扑软件依托自主研发的 HT for Web 产品&#xff0c;结合三维定制化渲染、动态模拟、物理碰撞、5G、物联网、云计算及大数据等先进技术&#xff0c…

cookie、session、token学习笔记

一.cookie 1.什么是cookie&#xff1f; Cookie用于存储web页面的用户信息。 Cookie是一些数据&#xff0c;存储于你电脑的文本文件中。 当web服务器向浏览器发送web页面时&#xff0c;在连接关闭后&#xff0c;服务端不会记录用户的信息。 而Cookie的作用就是用于解决“如…

【论文阅读】Graph-less Collaborative Filtering

【论文阅读】Graph-less Collaborative Filtering 文章目录 【论文阅读】Graph-less Collaborative Filtering1. 来源2. 介绍3. 模型解读3.1 协同过滤3.2 模型3.2.1 对比知识精馏 3.2.2 自适应对比正则化3.2.3 SimRec的参数学习 4. 实验5. 总结 1. 来源 2023WWW CCFA原文地址co…

CDN和DNS

目录 宽带&#xff0c;窄带&#xff0c;带宽区别和联系如何计算带宽带宽和网速的区别和联系 CDNCDN的原理CDN的好处CDN和通信行业DNS和CDN的区别与联系用户访问未使用CDN缓存网站的过程为使用了CDN缓存后的网站的访问过程变为 CDN加速服务 DNSDNS对好处公共 DNS114 DNS阿里DNS百…

UE4/5动画系列(1.模板制作)

目录 动画模板制作 同步模板组制作 有模板做什么都方便&#xff0c;所以这里我们做一个动画蓝图的模板&#xff08;动物专用&#xff09; 动画模板制作 第一步创建一个动画蓝图的模板 然后找到第三人称的模板&#xff0c;将其模板的蓝图改名&#xff1a; 在动画蓝图的模板里…

使用mount临时挂载出现mount error(13): Permission denied

问题报错 mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) //报错信息&#xff0c;提示账号密码错误&#xff0c;其实并不是 添加secntlmssp参数即可&#xff1b;中途可能需要等一些时间 mount -t cifs -o usernamelisi,p…

基于Servlet+JDBC实现的基础博客系统>>系列2 -- 前端基础页面

目录 1. 博客公共页面样式 2. 博客列表页 3. 博客详情页 4. 博客登录页 5. 博客编辑页 1. 博客公共页面样式 导航栏以及背景图设置 <body> <!-- 1.navigation 导航栏 --><div class"nav"><!-- logo --><img src"image/logo.png&q…

JS获取省市区/县,layui获取省市区,layui实现省市区联动,jquery实现省市区联动

前言 通过JS方式获取省市区数据&#xff0c;可自己手动更改JS文件数据 非常简单 效果 实现 百度网盘链接: https://pan.baidu.com/s/1RktJgXY0NP7Eq0ohvBPOEA 提取码: 477z gitee下载链接&#xff1a;https://gitee.com/yuanyongqiang/common-files/blob/master/area.js 下…

轮廓检测及功能

一、实验介绍 1. 实验内容 本实验将学习轮廓检测及功能。 2. 实验要点 生成二进制图像来查找轮廓找到并画出轮廓轮廓特征边界矩形 3. 实验环境 Python 3.6.6numpymatplotlibcv2 二、实验步骤 1 导入资源并显示图像 import numpy as np import matplotlib.pyplot as pl…

C语言进阶教程(再论指针和数组3)

文章目录 前言一、a和&a的区别二、数组作为函数参数总结 前言 本篇文章继续讲解指针和数组。 一、a和&a的区别 1.数组名&#xff08;例如 a&#xff09;表示整个数组。当使用数组名时&#xff0c;它会被解释为对整个数组的引用。例如&#xff0c;可以使用 a[0] 来访…

Attention is all you need

这篇文章最大的亮点就是提出了一种Transformer的结构&#xff0c;是完全依赖注意力机制来刻画输入和输出之间的全局依赖关系&#xff0c;而不使用递归运算的RNN网络了。这样的好处就是第一可以有效的防止RNN存在的梯度消失的问题&#xff0c;第二是允许所有的字全部同时训练(RN…

Docker 数据卷

1、什么是数据卷 通过镜像创建一个容器。容器一旦被销毁&#xff0c;则容器内的数据将一并被删除。但有些情况下&#xff0c;通过服务器上传的图片出会丢失。容器中的数据不是持久化状态的。这个时候可以通过数据卷来解决这个问题。 数据卷是一个可供一个或多个容器使用的特殊目…