简介
DFRobot特别推出Arduino无线遥控手柄 V2.2,在V1.1版本基础上再做大幅度升级!XBEE插 槽可以支持XBEE、WIFI、RF和蓝牙模块,让您可以与机器人、移动平台或无人机(UAV)等 任何您想要的控制设备进行通信。
与V1.1版本最大的区别在与使用了Arduino Leonado作为主微控器,这样它依然还是一个超 高个性化的游戏手柄,更妙的这是一个带震动电机的游戏手柄!可以适应Linux、Mac OS X以及Windows系统环境。电池盒可使用三节AAA电池或USB-ICSP电源输入。
整个手柄有两个模拟量的摇杆(每个带有模拟量按键),还有17个高性能按键,控制器采用 传统PS3游戏手柄布局,适合绝大多数类似的游戏,经过按键编程后也兼容XBOX系列游戏。 所有按键、摇杆以及震动电机都具备超高可定制化设计,每个按键和摇杆都可以重新定义其键值和功能,让你可以设计出无限的可能,更好地贴合你的项目需求。
特性
- 主控器选型:Arduino Leonardo
- 电源:三节AAA电池或USB供电
- 可编程资源:
- 两个模拟量摇杆
- 两个摇杆按键
- 17个个性按键
- 编程接口 ICSP(需使用专用USB转ICSP接线)
- 有一个RESET按钮(标称ANALOG)
- 可编程的LED
- MODE:表示开关状态
- RX:可编程的LED,根据需要自由编程
- 支持XBB、蓝牙、RF和WIFI
程序下载连接图
GamePad v2.0 内部结构图
## 引脚定义- 无线模块(串口):D0,D1
- 1:D9
- 2:D11
- 3:D12
- 4:D10
- UP:D5
- LEFT::D6
- DOWN:D7
- RIGHT:D8
- SELECT:D3
- START:D4
- 左JOY:X-A4,Y-A5
- 左JOY_BUTTON:A0
- 右JOY:X-A2,Y-A3
- 右JOY_BUTTON:A1
- 左Z1:D15 Z2:D16
- 右Z1:D13 Z2:D14
- MOTOR:D2
- RXLED:D17
- ANALOG:RESET
按键测试代码
使用xbee/ Ble-Link等模块时请将Serial改为Serial1,本程序只用于电脑上的串口调试。
/*
// #
// # Editor : Tong Hui from DFRobot, based on Lauren from DFRobot v1.0 code
// # Date : 12.24.2012
// # Product name: Wireless Joystick v2.2 for Arduino
// # Product SKU : DFR0182
// # Code Version: 2.0
// # Description:
// # The sketch for using the gamepad and print the button state and the analog values of the gamepad
// #
*/
int buttonState[17];
int joystick[4];
int AnalogButton[2];
void setup()
{
Serial.begin(57600); //Init the Serial baudrate
InitIO(); // Initialize the inputs/outputs and the buffers
}
void InitIO(){
for(int i = 0; i < 17; i++) pinMode(i, INPUT);
}
void loop()
{
DataUpdate(); //read the buttons and the joysticks data
printData(); //print the datas and states
delay(100);
}
void DataUpdate(){
for(int i = 3; i < 17; i++) buttonState[i] = digitalRead(i);
buttonState[0] = analogRead(0);
buttonState[1] = analogRead(1);
for(int i = 0; i < 4; i++) joystick[i] = analogRead(i);
for(int i = 4; i < 6; i++) AnalogButton[i-4] = analogRead(i);
}
String Buttons[17] = {
"J2","J1","NULL","S2","S1","UP","LEFT","DOWN","RIGHT","1","4","2","3","RZ1","RZ2","LZ1","LZ2"};
// Buttons Nmes
void printData(){
for(int i = 0; i < 17; i++) Serial.print(buttonState[i]),Serial.print(" ");
for(int i = 0; i < 4; i++) Serial.print(joystick[i]),Serial.print(" ");
for(int i = 0; i < 2; i++) Serial.print(AnalogButton[i]),Serial.print(" ");
Serial.println("");
Serial.print("Button Pressed:");
for(int i = 0; i < 2; i++) if(buttonState[i] < 100) Serial.print(Buttons[i]),Serial.print(",");
for(int i = 3; i < 17; i++) if(buttonState[i] == 0) Serial.print(Buttons[i]),Serial.print(",");
Serial.println("");
Serial.print("Analog Sticks:");
for(int i = 0; i < 4; i++) Serial.print(joystick[i]),Serial.print(",");
for(int i = 0; i < 2; i++) Serial.print(AnalogButton[i]),Serial.print(",");
Serial.println("");
Serial.println("");
}