====== PS2无线手柄使用手册 ====== ===== 1.概述 =====

   2.4G无线遥控手柄通过USBhost模块和主控板通讯,使用是必须连同USBhost模块一起用。

  手柄外观及按位介绍:

{{ :wm_wiki:ps2_wireless_controller:pasted:20200225-154139.png }}\\ {{ :wm_wiki:ps2_wireless_controller:pasted:20200225-154618.png }}\\ ===== 2.参数规格 =====

参数

/描述

供电方式

27号电池

手柄外形

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个参数)选择摇杆、选择方向轴

  

图形化编程示例:

{{ :wm_wiki:ps2_wireless_controller:pasted:20200225-175121.png }} ==== 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接收器,所以不要弄丢接收器。

如果多个手柄同时使用时,可能会出现信号干扰,造成手柄连接中断的情况,此时尽量和其它手柄接、收器拉开距离,使干扰降低。