xiaop5345 发表于 2012-3-12 15:16:34

求助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"); 只发送一次再按再松开再发一次,怎么弄。刚学编程能力浅。求教

xiaop5345 发表于 2012-3-13 17:50:35

虚心求教!!!试了两天了都写不好只能要不就一直发要不就不发~~~~救救我

弘毅 发表于 2012-3-13 19:32:42

有没有参照这个帖子。。。测试帖子中的PS2手柄代码。。。看看所有按键是否能正常工作。按一次返回一次的数值?

http://www.geek-workshop.com/forum.php?mod=viewthread&tid=172

xiaop5345 发表于 2012-3-14 13:19:52

试过的,这个就是从你的那个代码里摘出来的。那个代码只能实现按下按键就会一直发送。发送的多少取决于延时的长短我试过几个方法都不行。我需要按下不管多久抬起按键这是一个周期 ,一个周期只发送一次Serial.println("shang");

xiaop5345 发表于 2012-3-14 13:25:26

弘毅 发表于 2012-3-13 19:32 static/image/common/back.gif
有没有参照这个帖子。。。测试帖子中的PS2手柄代码。。。看看所有按键是否能正常工作。按一次返回一次的数值 ...

那段代码里面有很多是我看不懂的地方, 而且把所有有用的代码摘出来之后,发现有很多是没有用到的。那个程序也不稳定用几下手柄就会和接收器重新配对。

xiaop5345 发表于 2012-3-14 13:25:26

弘毅 发表于 2012-3-13 19:32 static/image/common/back.gif
有没有参照这个帖子。。。测试帖子中的PS2手柄代码。。。看看所有按键是否能正常工作。按一次返回一次的数值 ...

那段代码里面有很多是我看不懂的地方, 而且把所有有用的代码摘出来之后,发现有很多是没有用到的。那个程序也不稳定用几下手柄就会和接收器重新配对。

弘毅 发表于 2012-3-14 15:51:06

xiaop5345 发表于 2012-3-14 13:25 static/image/common/back.gif
那段代码里面有很多是我看不懂的地方, 而且把所有有用的代码摘出来之后,发现有很多是没有用到的。那个程 ...

因为那个库是逆向解析的PS2协议,所以不是所有PS2手柄都可以用,那个实验中用的PS2无线手柄,后面生产的批次,有人买过。。。协议有变,会导致不能用。

目前用的最稳定的,就是PS2原装有线手柄。

你说的要重新配对这些问题,肯定是手柄原因造成的。

xiaop5345 发表于 2012-3-14 18:58:29

我只摘出需要的句子它就很稳定了~~~~我现在需要解决的就是,按下不管多久抬起按键只发送一次!!硬件现在没有问题只是软件。

弘毅 发表于 2012-3-14 20:15:52

xiaop5345 发表于 2012-3-14 18:58 static/image/common/back.gif
我只摘出需要的句子它就很稳定了~~~~我现在需要解决的就是,按下不管多久抬起按键只发送一次!!硬件现在没 ...

哦,明白了,你是要软件消抖~~~~

可以参考这篇帖子,里面有软件消抖代码http://www.geek-workshop.com/forum.php?mod=viewthread&tid=74

xiaop5345 发表于 2012-3-15 14:52:28

#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);

}
这样写没问题吧???怎么还是不行

xiaop5345 发表于 2012-3-15 14:53:54

感觉像是哪有冲突发一个Serial.println("shang");手柄就再不反映了,而且也不重新配对

弘毅 发表于 2012-3-15 15:10:49

重新买几款PS2手柄测试下吧。。。只要是非原装的,都是逆向解析的协议。。。PS2的库也是逆向的。两次逆向解析后,能不能用完全看运气。

我自己买了4款PS2手柄,两款可以用,两款用起来就有莫名其妙问题。

xiaop5345 发表于 2012-3-15 16:00:49

你帮我测试下后来发的那个在你的好用的手柄下能用吗???如果能用就是手柄问题我就不在编程上下工夫了。我打算用垒加的方法试试。收到一个值+1加到10发送一次命令。机器人动了就松手那第二次肯定不够时间加到10。这其实很不好先编编看吧~~~麻烦弘哥方便的话帮我测试下第二个程序。

xiaop5345 发表于 2012-3-15 19:15:46

#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自己做个手柄来的直接。

xiaop5345 发表于 2012-3-15 19:17:06

说个题外话,其实我的最终目的是要做个铁甲钢拳里的控制器!!
页: [1]
查看完整版本: 求助PS2手柄程序的问题