我使用下面的代碼determin在拇指搖桿定位:拇指手柄位置只有一次
const int Left = 1;
const int Right = 2;
const int Up = 3;
const int Down = 4;
const int Center = 0;
int lastButton = -1;
int xpin = 4;
int ypin = 5;
int xAxis;
int yAxis;
char* myStrings[]={"Left","Right","Up","Down"};
int button;
void setup() {
Serial.begin(9600);
}
void loop() {
xAxis=map(analogRead(xpin), 0, 1023, 0, 10);
yAxis=map(analogRead(ypin), 0, 1023, 0, 10);
if (button == lastButton) {
//Serial.println(0);
//button = 0;
delay(50);
} else {
if (xAxis < 4) {
button = Left;
}
else if (xAxis > 6) {
button = Right;
}
if (yAxis < 4) {
button = Down;
}
else if (yAxis > 6) {
button = Up;
}
Serial.println(myStrings[button-1]);
button = 0;
delay(50);
}
lastButton = button;
}
上面的代碼工作在我的Arduino得很好,但我期待只得到了現在的位置ONCE而不是每一秒,而它在那裏舉行。
如何將代碼更改爲只有一個值,直到它再次居中(0)?
例子:
如果我操縱桿向左移動讀取:
Left
Left
Left
Left
etc etc until i release it.
什麼,我希望做的是這樣的:
Left
then it stops until i release it.
任何幫助將是巨大的!
更新
if (xAxis ==5) {
button = Center;
}
if (yAxis ==5) {
button = Center;
}
似乎與向上和向下,但沒有真正的左,右很好地工作。有時它起作用,但更多時候不起作用。
有布爾變量,如'isLeft'你它向左移動或釋放時設置。我不完全確定它對於遊戲杆的效果如何,但對於普通按鍵來說它確實很不錯。 – chris 2012-07-11 21:20:31
'lastButton'初始化在哪裏? – 2012-07-11 21:51:54
** int lastButton = -1; ** – StealthRT 2012-07-11 21:53:33