求助PS2手柄程序的问题
#include <PS2X_lib.h>PS2X ps2x;
int a=0;
void setup(){
ps2x.config_gamepad(13,11,10,12);
Serial.begin(9600);
}
void loop(){
ps2x.read_gamepad();
if(ps2x.Button(PSB_PAD_UP))
Serial.println("shang");
delay(20);
}
我想实现按下再松开按键,就发送一个Serial.println("shang"); 只发送一次再按再松开再发一次,怎么弄。刚学编程能力浅。求教
虚心求教!!!试了两天了都写不好只能要不就一直发要不就不发~~~~救救我 有没有参照这个帖子。。。测试帖子中的PS2手柄代码。。。看看所有按键是否能正常工作。按一次返回一次的数值?
http://www.geek-workshop.com/forum.php?mod=viewthread&tid=172 试过的,这个就是从你的那个代码里摘出来的。那个代码只能实现按下按键就会一直发送。发送的多少取决于延时的长短我试过几个方法都不行。我需要按下不管多久抬起按键这是一个周期 ,一个周期只发送一次Serial.println("shang"); 弘毅 发表于 2012-3-13 19:32 static/image/common/back.gif
有没有参照这个帖子。。。测试帖子中的PS2手柄代码。。。看看所有按键是否能正常工作。按一次返回一次的数值 ...
那段代码里面有很多是我看不懂的地方, 而且把所有有用的代码摘出来之后,发现有很多是没有用到的。那个程序也不稳定用几下手柄就会和接收器重新配对。 弘毅 发表于 2012-3-13 19:32 static/image/common/back.gif
有没有参照这个帖子。。。测试帖子中的PS2手柄代码。。。看看所有按键是否能正常工作。按一次返回一次的数值 ...
那段代码里面有很多是我看不懂的地方, 而且把所有有用的代码摘出来之后,发现有很多是没有用到的。那个程序也不稳定用几下手柄就会和接收器重新配对。 xiaop5345 发表于 2012-3-14 13:25 static/image/common/back.gif
那段代码里面有很多是我看不懂的地方, 而且把所有有用的代码摘出来之后,发现有很多是没有用到的。那个程 ...
因为那个库是逆向解析的PS2协议,所以不是所有PS2手柄都可以用,那个实验中用的PS2无线手柄,后面生产的批次,有人买过。。。协议有变,会导致不能用。
目前用的最稳定的,就是PS2原装有线手柄。
你说的要重新配对这些问题,肯定是手柄原因造成的。 我只摘出需要的句子它就很稳定了~~~~我现在需要解决的就是,按下不管多久抬起按键只发送一次!!硬件现在没有问题只是软件。 xiaop5345 发表于 2012-3-14 18:58 static/image/common/back.gif
我只摘出需要的句子它就很稳定了~~~~我现在需要解决的就是,按下不管多久抬起按键只发送一次!!硬件现在没 ...
哦,明白了,你是要软件消抖~~~~
可以参考这篇帖子,里面有软件消抖代码http://www.geek-workshop.com/forum.php?mod=viewthread&tid=74 #include <PS2X_lib.h>
PS2X ps2x;
void setup(){
ps2x.config_gamepad(13,11,10,12);
Serial.begin(9600);
}
void loop(){
ps2x.read_gamepad();
if(ps2x.Button(PSB_PAD_UP))
{
Serial.println("shang");
delay(100);
while(ps2x.Button(PSB_PAD_UP));
{delay(100);
}
}
delay(30);
}
这样写没问题吧???怎么还是不行 感觉像是哪有冲突发一个Serial.println("shang");手柄就再不反映了,而且也不重新配对 重新买几款PS2手柄测试下吧。。。只要是非原装的,都是逆向解析的协议。。。PS2的库也是逆向的。两次逆向解析后,能不能用完全看运气。
我自己买了4款PS2手柄,两款可以用,两款用起来就有莫名其妙问题。 你帮我测试下后来发的那个在你的好用的手柄下能用吗???如果能用就是手柄问题我就不在编程上下工夫了。我打算用垒加的方法试试。收到一个值+1加到10发送一次命令。机器人动了就松手那第二次肯定不够时间加到10。这其实很不好先编编看吧~~~麻烦弘哥方便的话帮我测试下第二个程序。 #include <PS2X_lib.h>
PS2X ps2x;
int a=0;
void setup(){
ps2x.config_gamepad(13,11,10,12);
Serial.begin(9600);
}
void loop(){
ps2x.read_gamepad();
if(ps2x.Button(PSB_PAD_UP))
{a=a+1;
if(a=10)
{a=0;
Serial.println("shang");
delay(10);
}
}
delay(500);
}
这样改了下,只要控制好按下的时间基本能用了不过有时按长了会执行两次。另外这逆向的库确实不靠谱,研究了下圆圈三角那几个键又不一样。其实还不如自己用arduino自己做个手柄来的直接。 说个题外话,其实我的最终目的是要做个铁甲钢拳里的控制器!!
页:
[1]