次のコードを使用して、サム ジョイスティックの位置を特定しています。
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 で問題なく動作しますが、位置が保持されている間は毎秒ではなく、1 回だけ位置を取得しようとしています。
再び中央 (0) になるまで値を 1 つだけ取るようにコードを変更するにはどうすればよいですか?
例:
ジョイスティックを左に動かすと、次のように表示されます。
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;
}
Up と Down ではうまくいくようですが、Left と Right ではうまくいきません。うまくいくこともありますが、うまくいかないことの方が多いです。