diff --git a/ps2-arduino.ino b/ps2-arduino.ino index 8c4b626..3177e9b 100644 --- a/ps2-arduino.ino +++ b/ps2-arduino.ino @@ -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"); }