PS2无线手柄使用手册

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

  手柄外观及按位介绍:



参数

/描述

供电方式

27号电池

手柄外形

PS2

接收器

USB

通信频段

2.4G

电源指示灯

红色LED

模式指示灯

绿色LED

传输距离

10m

摇杆数量

2

按键数量

15

尺寸大小

138mm*98mm*60mm(长**高)

1、手柄通电后,上方的红色电源指示灯(POWER)会常亮,进入休眠或者关闭状态时灭掉。

2、一般情况下,只要USB接收器通电,手柄会自动连接。

3、配对成功后,按“MODE”键,选择手柄发送模式,有2种模式可以切换,同时对应“MODE LED”指示灯亮起或熄灭。我们的程序采用其中摇杆输出模拟值的方式,也就是这个绿灯常亮的模式,用户注意切换好。

4、手柄特性:此手柄具有自动休眠省电模式。在开启无配对状态下,30s后启动省电模式;开启并配对完成的状态下,5分钟无按键按下,启动省电模式。此时只要按下START就能激活。

宏定义名

图形化编程表示

描述

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

    该模块支持的图形化编程平台目前有WeeeCode 3.0,其图形化编程指南如下:

模块功能

需传参数

图形化编程块举例

判断搜选按键是否被按下(布尔值)

(1个参数)选择按键

返回摇杆模拟值(0~255

(2个参数)选择摇杆、选择方向轴

  

图形化编程示例:

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());
  }
}

手柄和USB接收器是配套使用的,手柄只连接出厂配套的USB接收器,不能连接其它手柄的USB接收器,所以不要弄丢接收器。

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