PS2无线手柄使用手册
1.概述
2.参数规格
参数 |
值/描述 |
供电方式 |
2节7号电池 |
手柄外形 |
PS2 |
接收器 |
USB |
通信频段 |
2.4G |
电源指示灯 |
红色LED |
模式指示灯 |
绿色LED |
传输距离 |
10m |
摇杆数量 |
2个 |
按键数量 |
15个 |
尺寸大小 |
138mm*98mm*60mm(长*宽*高) |
3.使用指南
3.1. 手柄使用说明
1、手柄通电后,上方的红色电源指示灯(POWER)会常亮,进入休眠或者关闭状态时灭掉。
2、一般情况下,只要USB接收器通电,手柄会自动连接。
3、配对成功后,按“MODE”键,选择手柄发送模式,有2种模式可以切换,同时对应“MODE LED”指示灯亮起或熄灭。我们的程序采用其中摇杆输出模拟值的方式,也就是这个绿灯常亮的模式,用户注意切换好。
4、手柄特性:此手柄具有自动休眠省电模式。在开启无配对状态下,30s后启动省电模式;开启并配对完成的状态下,5分钟无按键按下,启动省电模式。此时只要按下START就能激活。
3.2. 按键编程宏定义
宏定义名 |
值 |
图形化编程表示 |
描述 |
WeJOYSTICK_START |
1 |
START |
按键START |
WeJOYSTICK_SELECT |
2 |
SELECT |
按键SELECT |
WeJOYSTICK_MODE |
3 |
MODE |
按键MODE |
WeJOYSTICK_BUTTON_L |
4 |
BUTTON_L |
左摇杆按键 |
WeOYSTICK_BUTTON_R |
5 |
BUTTON_R |
右摇杆按键 |
WeJOYSTICK_RIGHT_L |
6 |
RIGHT_L |
十字按键右键 |
WeJOYSTICK_LEFT_L |
7 |
LEFT_L |
十字按键左键 |
WeJOYSTICK_UP_L |
8 |
UP_L |
十字按键上键 |
WeJOYSTICK_DOWN_L |
9 |
DOWN_L |
十字按键下键 |
WeJOYSTICK_UP_R |
10 |
UP_R |
按键Y |
WeJOYSTICK_RIGHT_R |
11 |
RIGHT_R |
按键
B |
WeJOYSTICK_DOWN_R |
12 |
DOWN_R |
按键
A |
WeJOYSTICK_LEFT_R |
13 |
LEFT_R |
按键
X |
WeJOYSTICK_L1 |
14 |
L1 |
按键
L1 |
WeJOYSTICK_R1 |
15 |
R1 |
按键
R1 |
WeJOYSTICK_L2 |
16 |
L2 |
按键
L2 |
WeJOYSTICK_R2 |
17 |
R2 |
按键
R2 |
3.3. 功能模块及WeeeCode图形化编程指南
该模块支持的图形化编程平台目前有WeeeCode 3.0,其图形化编程指南如下:
模块功能 |
需传参数 |
图形化编程块举例 |
判断搜选按键是否被按下(布尔值) |
(1个参数)选择按键 |
|
返回摇杆模拟值(0~255) |
(2个参数)选择摇杆、选择方向轴 |
|
图形化编程示例:
3.4. 文本代码编程指南
Arduino功能函数说明:
函数名 |
功能 |
WeUSBHost(uint8_t receivePin,
uint8_t transmitPin) |
设置软串口的2个管脚。 |
init(int8_t type) |
初始化模块,此处填USB2_0 |
loop(void) |
开始检测 |
ButtonPressed(uint8_t button) |
检测某个按键是否按下(参数参考按键编程宏定义) |
readAnalog(uint8_t button) |
读取模拟值 |
joystickRx(void) |
右摇杆X方向的值 |
joystickRy(void) |
右摇杆Y方向的值 |
joystickLx(void) |
左摇杆X方向的值 |
joystickLy(void) |
左摇杆Y方向的值 |
Arduino编程示例:
#include "WeELF328P.h" #include "SoftwareSerial.h" WeUSBHost PS2(A3, A2); //A3,A2 for 328P void setup() { Serial.begin(9600); PS2.init(USB2_0); delay(10); } void loop() { PS2.loop(); if (PS2.ButtonPressed(WeJOYSTICK_START)) { Serial.println("START is pressed!"); } if (PS2.ButtonPressed(WeJOYSTICK_SELECT)) { Serial.println("SELECT is pressed!"); } if (PS2.ButtonPressed(WeJOYSTICK_MODE)) { Serial.println("MODE is pressed!"); } if (PS2.ButtonPressed(WeJOYSTICK_BUTTON_L)) { Serial.println("BUTTON_L is pressed!"); } if (PS2.ButtonPressed(WeJOYSTICK_BUTTON_R)) { Serial.println("BUTTON_R is pressed!"); } if (PS2.ButtonPressed(WeJOYSTICK_UP_L)) { Serial.print("L UP is "); Serial.println(PS2.readAnalog(WeJOYSTICK_UP_L)); } if (PS2.ButtonPressed(WeJOYSTICK_DOWN_L)) { Serial.print("L DOWN is "); Serial.println(PS2.readAnalog(WeJOYSTICK_DOWN_L)); } if (PS2.ButtonPressed(WeJOYSTICK_LEFT_L)) { Serial.print("L LEFT is "); Serial.println(PS2.readAnalog(WeJOYSTICK_LEFT_L)); } if (PS2.ButtonPressed(WeJOYSTICK_RIGHT_L)) { Serial.print("L RIGHT is "); Serial.println(PS2.readAnalog(WeJOYSTICK_RIGHT_L)); } if (PS2.ButtonPressed(WeJOYSTICK_L1)) { Serial.print("L1 is "); Serial.println(PS2.readAnalog(WeJOYSTICK_L1)); } if (PS2.ButtonPressed(WeJOYSTICK_R1)) { Serial.print("R1 is "); Serial.println(PS2.readAnalog(WeJOYSTICK_R1)); } if (PS2.ButtonPressed(WeJOYSTICK_L2)) { Serial.print("L2 is "); Serial.println(PS2.readAnalog(WeJOYSTICK_L2)); } if (PS2.ButtonPressed(WeJOYSTICK_R2)) { Serial.print("R2 is "); Serial.println(PS2.readAnalog(WeJOYSTICK_R2)); } if (PS2.ButtonPressed(WeJOYSTICK_UP_R)) { Serial.print("R UP is "); Serial.println(PS2.readAnalog(WeJOYSTICK_UP_R)); } if (PS2.ButtonPressed(WeJOYSTICK_DOWN_R)) { Serial.print("R DOWN is "); Serial.println(PS2.readAnalog(WeJOYSTICK_DOWN_R)); } if (PS2.ButtonPressed(WeJOYSTICK_LEFT_R)) { Serial.print("R LEFT is "); Serial.println(PS2.readAnalog(WeJOYSTICK_LEFT_R)); } if (PS2.ButtonPressed(WeJOYSTICK_RIGHT_R)) { Serial.print("R RIGHT is "); Serial.println(PS2.readAnalog(WeJOYSTICK_RIGHT_R)); } if(PS2.joystickRx()!=128) { Serial.print("PS2_RX value is: "); Serial.println(PS2.joystickRx()); } if(PS2.joystickRy()!=127) { Serial.print("PS2_RY value is: "); Serial.println(PS2.joystickRy()); } if(PS2.joystickLx()!=128) { Serial.print("PS2_LX value is: "); Serial.println(PS2.joystickLx()); } if(PS2.joystickLy()!=127) { Serial.print("PS2_LY value is: "); Serial.println(PS2.joystickLy()); } }
4.注意事项
手柄和USB接收器是配套使用的,手柄只连接出厂配套的USB接收器,不能连接其它手柄的USB接收器,所以不要弄丢接收器。
如果多个手柄同时使用时,可能会出现信号干扰,造成手柄连接中断的情况,此时尽量和其它手柄接、收器拉开距离,使干扰降低。