找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4957|回复: 22
收起左侧

【Arduino】108种传感器模块系列实验(127)---游戏摇杆扩展板

[复制链接]
ID:513258 发表于 2019-9-22 14:55 | 显示全部楼层 |阅读模式
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。

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

0.jpg


回复

使用道具 举报

ID:513258 发表于 2019-9-26 18:40 | 显示全部楼层
01.jpg

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

使用道具 举报

ID:513258 发表于 2019-9-26 19:04 | 显示全部楼层
02.jpg
双轴摇杆参数
一、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

回复

使用道具 举报

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

02-.jpg


回复

使用道具 举报

ID:513258 发表于 2019-9-26 19:43 | 显示全部楼层
添加nRF24L01的RF接口
添加Nokia 5110 LCD接口, 这样非常方便游戏开发。
添加蓝牙模块的接口,方便蓝牙无线串口通讯。
添加I2C通讯接口,方便I2C设备的连接
同时,JoyStick Shield 有1个PS2带按钮十字摇杆,还有4颗圆形按钮,2个小按键。为Arduino提供了摇杆和按键的输入扩展。板载开关可以在3.3V 和5V 之间切换,可以将此模块用于其它3.3V单片机平台,比如STM32。


05.jpg

回复

使用道具 举报

ID:513258 发表于 2019-9-26 19:47 | 显示全部楼层
04.jpg

技术参数:
A1PS2带按钮十字摇杆,4颗圆形按钮,2个小按键。

B)板载的开关电压可以在3.3V5V之间切换。

C1个复位按键

Dxbee/Bluetooh Bee/APC220蓝牙无线数传接口

E2.4G NRF24L01 RF无线数传接口

FNokia 5110 LCD接口



回复

使用道具 举报

ID:513258 发表于 2019-9-26 20:04 | 显示全部楼层
03 (1).jpg
游戏摇杆扩展板的使用
(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口)

回复

使用道具 举报

ID:513258 发表于 2019-9-26 20:18 | 显示全部楼层
08.jpg
06.jpg

回复

使用道具 举报

ID:513258 发表于 2019-9-26 20:34 | 显示全部楼层
接脚配置
PS2游戏摇杆(X轴A0,Y轴A1,Z轴按键D6)
四个独立按键(D2、D3、D4、D5)
预留扩展接口:
1个I2C接口
1个TTL串口
模拟量接口(A2-A5)
数字量接口(D8-D13)
Arduino复位按键

完全兼容Arduino UNO R3接口
摇杆X\Y轴输出为两个电位器,可以通过AD转换读出扭动角度
向下按摇杆,可以触发一路轻触开关,为数字输出
四路独立按键,数字输出,方便使用
板上标注有各个模块的端口配置,方便调试
预留了其他没有占用的端口,方便后期扩展
通过该扩展板可以制作一个遥控手柄,结合XBee模块可实现无线控制
结合Arduino Leonardo还可以模拟电脑鼠标等
09.jpg


回复

使用道具 举报

ID:513258 发表于 2019-9-26 20:59 | 显示全部楼层
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验一百二十七:JoyStick Shield PS2游戏摇杆扩展板 模拟键盘鼠标功能 大摇杆
  4. 项目:摇杆扩展板测试
  5. */

  6. int FirstShotX , FirstShotY;

  7. void setup()

  8. {

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

  10.   {

  11.     pinMode(i, INPUT);

  12.     digitalWrite(i, 1);

  13.   }



  14.   Serial.begin(9600);

  15.   FirstShotX = 0;

  16.   FirstShotY = 0;



  17. }



  18. void loop(){



  19.   int i, someInt, flag = 0;

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

  21.   {

  22.     someInt = digitalRead(i);

  23.     if(someInt == 0)

  24.     {

  25.       flag =1;

  26.       break;

  27.     }

  28.    }

  29.    if(flag == 1)

  30.    {   

  31.      switch(i)

  32.      {

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

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

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

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

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

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

  39.        default: break;

  40.      }

  41.      flag=0;

  42.    }

  43.   

  44.    int sensorValue = analogRead(A0);

  45.    if(FirstShotX == 0)

  46.    {

  47.      FirstShotX = sensorValue;

  48.      Serial.print("FirstShotX = ");

  49.      Serial.println(FirstShotX);

  50.    }

  51.   

  52.    Serial.print("X = ");

  53.    Serial.println(sensorValue - FirstShotX);

  54.   

  55.    sensorValue = analogRead(A1);

  56.    if(FirstShotY == 0)

  57.    {

  58.      FirstShotY = sensorValue;

  59.      Serial.print("FirstShotY = ");

  60.     Serial.println(FirstShotY);

  61.    }

  62.    Serial.print("Y = ");

  63.    Serial.println(sensorValue - FirstShotY);

  64.   

  65.    delay(200);

  66. }
复制代码


回复

使用道具 举报

ID:513258 发表于 2019-9-26 21:05 | 显示全部楼层
10.jpg
回复

使用道具 举报

ID:513258 发表于 2019-9-26 21:12 | 显示全部楼层
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验一百二十七:JoyStick Shield PS2游戏摇杆扩展板 模拟键盘鼠标功能 大摇杆
  4. 项目:摇杆扩展板测试之二
  5. */

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

  7. void setup(void)
  8. {
  9.   pinMode(R, INPUT);      //设置口按键为输入状态,并配置上拉。
  10.   digitalWrite(R, HIGH);
  11.   
  12.   pinMode(button0, INPUT);      
  13.   digitalWrite(button0, HIGH);

  14.   pinMode(G, INPUT);     
  15.   digitalWrite(G, HIGH);  
  16.   
  17.   pinMode(B, INPUT);     
  18.   digitalWrite(B, HIGH);

  19.   pinMode(Y, INPUT);      
  20.   digitalWrite(Y, HIGH);  
  21.   
  22.   Serial.begin(9600);           //设置串口通信9600波特率
  23. }

  24. void loop(void)
  25. {
  26.   Serial.print(analogRead(1));          //读取摇杆Y轴的值,串口显示
  27.   Serial.print(",");
  28.   Serial.print(analogRead(0));         //读取摇杆X轴的值,串口显示
  29.   Serial.print(",");

  30.   Serial.print(digitalRead(button0));    //读按键值,串口显示
  31.   Serial.print(digitalRead(R));   
  32.   Serial.print(digitalRead(G));   
  33.   Serial.print(digitalRead(B));
  34.   Serial.println(digitalRead(Y));      
  35.   
  36.   delay(100);   //100ms刷新一次
  37. }
复制代码


回复

使用道具 举报

ID:513258 发表于 2019-9-26 21:16 | 显示全部楼层
11.jpg
回复

使用道具 举报

ID:513258 发表于 2019-9-26 21:26 | 显示全部楼层
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验一百二十七:JoyStick Shield PS2游戏摇杆扩展板 模拟键盘鼠标功能 大摇杆
  4. 项目:摇杆扩展板测试之三
  5. */

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

  7. void setup(void)
  8. {
  9.    pinMode(K, INPUT);      
  10.   digitalWrite(K, HIGH);
  11.   
  12.   pinMode(A, INPUT);      //设置口按键为输入状态,并配置上拉。
  13.   digitalWrite(A, HIGH);
  14.   
  15.   pinMode(B, INPUT);      
  16.   digitalWrite(B, HIGH);

  17.   pinMode(C, INPUT);     
  18.   digitalWrite(C, HIGH);  
  19.   
  20.   pinMode(D, INPUT);     
  21.   digitalWrite(D, HIGH);

  22.   pinMode(E, INPUT);      
  23.   digitalWrite(E, HIGH);  

  24.   pinMode(F, INPUT);      
  25.   digitalWrite(F, HIGH);
  26.   
  27.   Serial.begin(9600);           //设置串口通信9600波特率
  28. }

  29. void loop(void)
  30. {
  31.   Serial.print("X轴;");
  32.   Serial.print(analogRead(0));          //读取摇杆X轴的值,串口显示
  33.   
  34.   Serial.print(" Y轴;");
  35.   Serial.print(analogRead(1));         //读取摇杆Y轴的值,串口显示
  36.   
  37.   Serial.print("  K键");
  38.   Serial.print(digitalRead(K));

  39.   Serial.print("  A键");
  40.   Serial.print(digitalRead(A));
  41.    
  42.   Serial.print("  B键");
  43.   Serial.print(digitalRead(B));

  44.   Serial.print("  C键");
  45.   Serial.print(digitalRead(C));

  46.   Serial.print("  D键");  
  47.   Serial.print(digitalRead(D));

  48.   Serial.print("  E键");
  49.   Serial.print(digitalRead(E));

  50.   Serial.print("  F键");
  51.   Serial.print(digitalRead(F));      

  52.   Serial.println();  

  53.   delay(100);   //100ms刷新一次
  54. }
复制代码


回复

使用道具 举报

ID:513258 发表于 2019-9-26 21:27 | 显示全部楼层
12.jpg
回复

使用道具 举报

ID:513258 发表于 2019-9-27 07:07 | 显示全部楼层
13.jpg
回复

使用道具 举报

ID:300101 发表于 2019-11-9 20:07 | 显示全部楼层
这个手柄不光孩子们喜欢,大人们拿到手上也不放松啊
回复

使用道具 举报

ID:513258 发表于 2020-3-31 17:02 | 显示全部楼层
vvv64 发表于 2019-11-9 20:07
这个手柄不光孩子们喜欢,大人们拿到手上也不放松啊

是啊,不错的手柄
回复

使用道具 举报

ID:104477 发表于 2020-4-8 17:44 来自手机 | 显示全部楼层
按键太少了,有些游戏要6个按键
回复

使用道具 举报

ID:513258 发表于 2020-10-24 15:37 | 显示全部楼层
hs88 发表于 2020-4-8 17:44
按键太少了,有些游戏要6个按键

是啊,勉强能用
回复

使用道具 举报

ID:652974 发表于 2020-10-29 20:35 来自手机 | 显示全部楼层
有做遥控的吗
回复

使用道具 举报

ID:513258 发表于 2020-10-30 10:15 | 显示全部楼层

暂时没做这方面的实验
回复

使用道具 举报

ID:937433 发表于 2021-6-14 18:36 | 显示全部楼层
schematics please
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表