Arduino使用游戏摇杆joystick

这是我买的37款传感器套件中的一款,下面是截图:
 
根据参考文献1,了解到游戏摇杆的五个引脚的意义,除了电源正极和负极之外:
VRx表示X轴方向的输出
VRy表示Y轴方向的输出
SW输出0表示按下摇杆,其它值都表示没有按下摇杆。
那如果判断X轴和Y轴的方向呢?通过测试,发现引脚水平朝向右边时,X轴和Y轴如下图所示,摇杆静止时X轴输出为501,Y轴输出为503:
 

根据参考文献1中给出的Arduino示例代码,写了一个简单的向串口传输当前X轴、Y轴和是否按下按钮值的程序。
 
    

Arduino程序(修改自参考文献1,只是把串口数据格式变了)


#define JoyStick_X 0
#define JoyStick_Y 1
#define JoyStick_Z 2

void setup() 

{
Serial.begin(9600);
}

void loop()

{
int x,y,z;
x=analogRead(JoyStick_X);
y=analogRead(JoyStick_Y);
z=analogRead(JoyStick_Z);
Serial.print("X:");
Serial.print(x);
Serial.print(":Y:");
Serial.print(y);

if(analogRead(JoyStick_Z)==0)

{
Serial.println(":B:1");
}

else

{
Serial.println(":B:0");
}
delay(1000);
}


串口输出

X:501:Y:503:B:0
X:501:Y:503:B:0
X:501:Y:503:B:0
X:501:Y:503:B:0
X:0:Y:0:B:0
X:0:Y:0:B:0
X:0:Y:0:B:0
X:0:Y:0:B:0
X:501:Y:503:B:0
X:501:Y:503:B:0
X:501:Y:503:B:0
X:502:Y:503:B:0


实物连接图如下:
 
然后用C#写了一个简单的上位机程序,程序通过解析串口数据,获取X轴输出、Y轴输出、摇杆是否按下。程序主界面显示一把关闭的伞,根据摇杆在X和Y方向的输出而在X和Y方向移动,如果摇杆按下,则关闭的伞变为打开的伞,摇杆没有按下后,打开的伞重新变为关闭的伞。
上位机代码如下:https://github.com/guochao2299/JoyStickControl
最后是一个演示视频,同时录的手的操作和上位机软件的动作,但是不知道该怎么把这两个视频同时播放,只能把这两个视频按先手的操作再上位机软件的动作的顺序合并。

参考文献:
1)http://blog.csdn.net/al_shawn/article/details/51295296

你可能感兴趣的:(Arduino)