added a deadzone to the analogue sticks
This commit is contained in:
+19
-6
@@ -26,6 +26,9 @@ byte waitTick = 0;
|
||||
char waitTextOutput[32];
|
||||
bool isControllerConnected;
|
||||
|
||||
int lx, ly, rx, ry;
|
||||
int deadzone = 20;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(57600);
|
||||
delay(300);
|
||||
@@ -46,8 +49,6 @@ void setup() {
|
||||
void loop() {
|
||||
if (!(error == 0 && type == 0)) {
|
||||
checkControllerConnection();
|
||||
|
||||
|
||||
delay(50);
|
||||
return;
|
||||
}
|
||||
@@ -204,10 +205,22 @@ void loop() {
|
||||
}
|
||||
|
||||
// Left stick
|
||||
XInput.setJoystick(JOY_LEFT, ps2x.Analog(PSS_LX), 255 - ps2x.Analog(PSS_LY));
|
||||
lx = ps2x.Analog(PSS_LX) - 128;
|
||||
ly = 127 - ps2x.Analog(PSS_LY);
|
||||
if (lx < deadzone && lx > -deadzone && ly < deadzone && ly > -deadzone) {
|
||||
lx = 0;
|
||||
ly = 0;
|
||||
}
|
||||
XInput.setJoystick(JOY_LEFT, lx, ly);
|
||||
|
||||
// Right stick
|
||||
XInput.setJoystick(JOY_RIGHT, ps2x.Analog(PSS_RX), 255 - ps2x.Analog(PSS_RY));
|
||||
rx = ps2x.Analog(PSS_RX) - 128;
|
||||
ry = 127 - ps2x.Analog(PSS_RY);
|
||||
if (rx < deadzone && rx > -deadzone && ry < deadzone && ry > -deadzone) {
|
||||
rx = 0;
|
||||
ry = 0;
|
||||
}
|
||||
XInput.setJoystick(JOY_RIGHT, rx, ry);
|
||||
}
|
||||
|
||||
void checkControllerConnection() {
|
||||
@@ -219,8 +232,8 @@ void checkControllerConnection() {
|
||||
case 0:
|
||||
type = ps2x.readType();
|
||||
if (type == 0) {
|
||||
display.write("Found\nDualShock 2!");
|
||||
XInput.setJoystickRange(0, 255);
|
||||
display.write("DualShock\n2\nconnected!");
|
||||
XInput.setJoystickRange(-128, 127);
|
||||
} else {
|
||||
display.write("Controller\nnot\nrecognised");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user