From 689bf7b71c0696f01b5be04dc30c5be8a293e03b Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 15:06:05 +0200 Subject: [PATCH 1/9] major rewrite of the G27 arduino SW - add configurable median filter for axis signals - replace all configuration preprocessor switches with a calibration structure stored and loaded from EEPROM - add more configuration options (invert for all axis, replace reverse button with the right red button) - replace ASCII debug serial output with much more efficient binary serial output - add a supporting GUI for calibration and configuration --- .gitignore | 3 + .../G27_Pedals_and_Shifter.ino | 638 ++++++++++++------ G27_Pedals_and_Shifter/src/Filter.cpp | 100 +++ G27_Pedals_and_Shifter/src/Filter.h | 22 + G27_Pedals_and_Shifter/src/test_filter.py | 95 +++ g27_pedals_and_shifter_gui/calib.py | 480 +++++++++++++ setup.py | 13 + 7 files changed, 1142 insertions(+), 209 deletions(-) create mode 100644 .gitignore create mode 100644 G27_Pedals_and_Shifter/src/Filter.cpp create mode 100644 G27_Pedals_and_Shifter/src/Filter.h create mode 100644 G27_Pedals_and_Shifter/src/test_filter.py create mode 100644 g27_pedals_and_shifter_gui/calib.py create mode 100644 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1bdc30d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea +*.egg* +__pycache__ diff --git a/G27_Pedals_and_Shifter/G27_Pedals_and_Shifter.ino b/G27_Pedals_and_Shifter/G27_Pedals_and_Shifter.ino index b42f4d2..8729d61 100644 --- a/G27_Pedals_and_Shifter/G27_Pedals_and_Shifter.ino +++ b/G27_Pedals_and_Shifter/G27_Pedals_and_Shifter.ino @@ -5,31 +5,9 @@ // http://www.isrtv.com/forums/topic/13189-diy-g25-shifter-interface-with-h-pattern-sequential-and-handbrake-modes/ #include +#include #include "./src/G27PedalsShifter.h" - -// comment either out to disable -#define USE_PEDALS -#define USE_SHIFTER - -// for debugging, gives serial output rather than working as a joystick -//#define DEBUG true - -#if defined(DEBUG) -#define DEBUG_PEDALS true -#define DEBUG_SHIFTER true -#endif - -//#define DEBUG_PEDALS true -//#define DEBUG_SHIFTER true - -// red for brake, green for gas, blue for clutch -//#define PEDAL_COLORS true - -// for load-cell users and Australians -//#define INVERT_BRAKE true - -// use static thresholds rather than on-the-fly calibration -//#define STATIC_THRESHOLDS true +#include "./src/Filter.h" // LED PINS #define RED_PIN 3 @@ -97,38 +75,127 @@ #define OUTPUT_RED_CENTERRIGHT 17 #define OUTPUT_RED_RIGHT 18 -// SHIFTER AXIS THRESHOLDS -#define SHIFTER_XAXIS_12 290 //Gears 1,2 -#define SHIFTER_XAXIS_56 600 //Gears 5,6, R -#define SHIFTER_YAXIS_135 750 //Gears 1,3,5 -#define SHIFTER_YAXIS_246 290 //Gears 2,4,6, R - -// PEDAL AXIS THRESHOLDS -#define MIN_GAS 27 -#define MAX_GAS 925 -#define MIN_BRAKE 26 -#define MAX_BRAKE 845 -#define MIN_CLUTCH 45 -#define MAX_CLUTCH 932 - // MISC. #define MAX_AXIS 1023 #define SIGNAL_SETTLE_DELAY 10 +#define CALIB_DATA_MAGIC_NUMBER 0x27CA11B1 // change this when the struct definition changes + +#define FLAG_INVERT_BRAKE 0x1 // invert brake pedal +#define FLAG_INVERT_GAS 0x2 // invert gas pedal +#define FLAG_INVERT_CLUTCH 0x4 // invert clutch pedal +#define FLAG_REVERSE_RIGHT_RED 0x8 // use right red button for reverse gear instead of the reverse sensor + +typedef struct CalibData +{ + /* magic number, used for testing valid EEPROM content */ + uint32_t calibID; + /* bool whether to automatically calibrate the pedals at a power cycle or use a static calibration */ + uint8_t pedals_auto_calib; + /* flags, see the FLAG_* defines for the meaning of the bits */ + uint8_t flags; + /* bool whether to use the pedals */ + uint8_t use_pedals; + /* bool whether to use the shifter */ + uint8_t use_shifter; + /* size of median filter to filter pedal values */ + uint8_t pedal_median_size; + /* size of median filter to filter shifter values */ + uint8_t shifter_median_size; + /* only meaningful if pedals_auto_calib is 0 */ + uint16_t gasMin, gasMax, brakeMin, brakeMax, clutchMin, clutchMax; + /* defines the neutral zone of the y shifter hysteresis */ + uint16_t shifter_y_neutralMin, shifter_y_neutralMax; + /* defines the 246R zone of the y shifter hysteresis, should be less than shifter_y_neutralMin */ + uint16_t shifter_y_246R_gearZone; + /* defines the 135 zone of the y shifter hysteresis, should be greater than shifter_y_neutralMax */ + uint16_t shifter_y_135_gearZone; + /* threshold for gears 1 and 2 of the x shifter, should be less than shifter_x_56 */ + uint16_t shifter_x_12; + /* threshold for gears 5,6 and R of the x shifter, should be greater than shifter_x_12 */ + uint16_t shifter_x_56; +} CalibData; + +/* this structure holds the calibration data stored in EEPROM */ +typedef struct calibration +{ + /* the actual calibration struct */ + CalibData data; + /* CRC checksum */ + uint32_t crc; +} Calibration; + +static Calibration calibDefault = { + { + CALIB_DATA_MAGIC_NUMBER, + 1, /* pedals auto calib */ + 0, /* flags, everything on default */ + 1, /* use pedals */ + 1, /* use shifter */ + 0, /* pedals median size */ + 0, /* shifter median size */ + 0,0,0,0,0,0, /* calibrated pedal values */ + 1024/2 - 1024/10, 1024/2 + 1024/10, /* shifter_y_neutral */ + 1024/2 - 1024/3, 1024/2 + 1024/3, /* shifter_y_gearZone */ + 1024/3, 1024*2/3 /* shifter_x */ + }, + 0 /* crc will be set when written to EEPROM */ +}; +static Calibration calibration = calibDefault; + +unsigned long crc(uint8_t *buffer, uint16_t length) { + + const unsigned long crc_table[16] = { + 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, + 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, + 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, + 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c + }; + + unsigned long crc = ~0L; + + for (int index = 0 ; index < length ; ++index) { + crc = crc_table[(crc ^ buffer[index]) & 0x0f] ^ (crc >> 4); + crc = crc_table[(crc ^ (buffer[index] >> 4)) & 0x0f] ^ (crc >> 4); + crc = ~crc; + } + return crc; +} + +static int crcError = 0; +static int magicNumberError = 0; +static int lastCrcFromEEPROM = 0; +static int lastCrcFromContents = 0; +void loadEEPROM() +{ + Calibration fromEEPROM; + EEPROM.get(0, fromEEPROM); + + uint32_t eeprom_crc = crc((uint8_t*)&fromEEPROM.data, sizeof(fromEEPROM.data)); + lastCrcFromEEPROM = fromEEPROM.crc; + lastCrcFromContents = eeprom_crc; + if( eeprom_crc == fromEEPROM.crc && fromEEPROM.data.calibID == CALIB_DATA_MAGIC_NUMBER ) + { + calibration = fromEEPROM; + } else + { + crcError += eeprom_crc != fromEEPROM.crc; + magicNumberError += fromEEPROM.data.calibID != CALIB_DATA_MAGIC_NUMBER; + calibration = calibDefault; + } +} + // PEDAL CODE -typedef struct pedal { +typedef struct Pedal { byte pin; int min, max, cur, axis; -}; +} Pedal; -typedef struct pedal Pedal; +static Pedal* gasPedal = 0; +static Pedal* brakePedal = 0; +static Pedal* clutchPedal = 0; -void* gasPedal; -void* brakePedal; -void* clutchPedal; - -int axisValue(void* in) { - Pedal* input = (Pedal*)in; +int axisValue(struct Pedal* input) { int physicalRange = input->max - input->min; if (physicalRange == 0) { @@ -146,39 +213,21 @@ int axisValue(void* in) { return result; } -void processPedal(void* in) { - Pedal* input = (Pedal*)in; +void processPedal(struct Pedal* input, SignalFilter *flt, uint8_t filterSize) +{ + input->cur = apply_filter(flt, filterSize, analogRead(input->pin)); - input->cur = analogRead(input->pin); - - #if !defined(STATIC_THRESHOLDS) - // calibrate, we want the highest this pedal has been - input->max = input->cur > input->max ? input->cur : input->max; - // same for lowest, but bottom out at current value rather than 0 - input->min = input->min == 0 || input->cur < input->min ? input->cur : input->min; - #endif + if(calibration.data.pedals_auto_calib) + { + // calibrate, we want the highest this pedal has been + input->max = input->cur > input->max ? input->cur : input->max; + // same for lowest, but bottom out at current value rather than 0 + input->min = input->min == 0 || input->cur < input->min ? input->cur : input->min; + } input->axis = axisValue(input); } -void describePedal(char* name, char* axisName, void* in) { - Pedal* input = (Pedal*)in; - Serial.print("\nPIN: "); - Serial.print(input->pin); - Serial.print(" "); - Serial.print(name); - Serial.print(": "); - Serial.print(input->cur); - Serial.print(" MIN: "); - Serial.print(input->min); - Serial.print(" MAX: "); - Serial.print(input->max); - Serial.print(" "); - Serial.print(axisName); - Serial.print(" VALUE: "); - Serial.print(input->axis); -} - void setXAxis(void* in) { Pedal* input = (Pedal*)in; G27.setXAxis(input->axis); @@ -194,14 +243,6 @@ void setZAxis(void* in) { G27.setZAxis(input->axis); } -void pedalColor(void* inGas, void* inBrake, void* inClutch){ - Pedal* gas = (Pedal*)inGas; - Pedal* brake = (Pedal*)inBrake; - Pedal* clutch = (Pedal*)inClutch; - - setColor(brake->axis + MAX_AXIS, gas->axis + MAX_AXIS, clutch->axis + MAX_AXIS); -} - // SHIFTER CODE int buttonTable[] = { // first four are unused @@ -229,25 +270,12 @@ void getButtonStates(int *ret) { waitForSignalToSettle(); digitalWrite(SHIFTER_MODE_PIN, HIGH); // Switch to serial mode: one data bit is output on each clock falling edge -#if defined(DEBUG_SHIFTER) - Serial.print("\nBUTTON STATES:"); -#endif - for(int i = 0; i < 16; ++i) { // Iteration over both 8 bit registers digitalWrite(SHIFTER_CLOCK_PIN, LOW); // Generate clock falling edge waitForSignalToSettle(); ret[i] = digitalRead(SHIFTER_DATA_PIN); -#if defined(DEBUG_SHIFTER) - if (!(i % 4)) Serial.print("\n"); - Serial.print(" button"); - if (i < 10) Serial.print(0); - Serial.print(i); - Serial.print(" = "); - Serial.print(ret[i]); -#endif - digitalWrite(SHIFTER_CLOCK_PIN, HIGH); // Generate clock rising edge waitForSignalToSettle(); } @@ -259,32 +287,93 @@ void getShifterPosition(int *ret) { } int getCurrentGear(int shifterPosition[], int btns[]) { - int gear = 0; // default to neutral + static int gear = 0; // default to neutral int x = shifterPosition[0], y = shifterPosition[1]; + + if (y < calibration.data.shifter_y_neutralMax && y > calibration.data.shifter_y_neutralMin) + { + gear = 0; + } - if (x < SHIFTER_XAXIS_12) // Shifter on the left? + if (y > calibration.data.shifter_y_135_gearZone ) + { + if( x <= calibration.data.shifter_x_12 ) { - if (y > SHIFTER_YAXIS_135) gear = 1; // 1st gear - if (y < SHIFTER_YAXIS_246) gear = 2; // 2nd gear - } - else if (x > SHIFTER_XAXIS_56) // Shifter on the right? + if( gear != 3 ) /* avoid toggles between neighboring gears */ + { + gear = 1; + } + } else if ( x >= calibration.data.shifter_x_56 ) { - if (y > SHIFTER_YAXIS_135) gear = 5; // 5th gear - if (y < SHIFTER_YAXIS_246) gear = 6; // 6th gear - } - else // Shifter is in the middle + if( gear != 3 ) /* avoid toggles between neighboring gears */ + { + gear = 5; + } + } else { - if (y > SHIFTER_YAXIS_135) gear = 3; // 3rd gear - if (y < SHIFTER_YAXIS_246) gear = 4; // 4th gear + if( gear != 1 && gear != 5 ) /* avoid toggles between neighboring gears */ + { + gear = 3; + } } - - if (gear != 6) btns[BUTTON_REVERSE] = 0; // Reverse gear is allowed only on 6th gear position - if (btns[BUTTON_REVERSE] == 1) gear = 7; // Reverse is 7th gear (for the sake of argument) + } + if (y < calibration.data.shifter_y_246R_gearZone ) + { + if( x <= calibration.data.shifter_x_12 ) + { + if( gear != 4 ) /* avoid toggles between neighboring gears */ + { + gear = 2; + } + } else if ( x >= calibration.data.shifter_x_56 ) + { + uint8_t reverse = (calibration.data.flags & FLAG_REVERSE_RIGHT_RED) ? btns[BUTTON_RED_RIGHT] : btns[BUTTON_REVERSE]; + if(reverse) + { + if( gear != 4 && gear != 6 ) /* avoid toggles between neighboring gears */ + { + gear = 7; + } + } else + { + if( gear != 4 && gear != 7) /* avoid toggles between neighboring gears */ + { + gear = 6; + } + } + } else + { + if( gear != 2 && gear != 6 && gear != 7) /* avoid toggles between neighboring gears */ + { + gear = 4; + } + } + } + // reset button if we are not in reverse gear (this was there in original code, not sure if it's needed) + if (gear != 7) btns[BUTTON_REVERSE] = 0; return gear; } +typedef struct DebugStruct +{ + uint8_t sizeInBytes; + uint8_t calibButton; + int16_t axisValues[5]; + CalibData calib; + uint16_t numCrcErrors; + uint16_t numMagicNumErrors; + uint32_t profiling[4]; + uint16_t out_axis[3]; + uint32_t out_buttons; +} DebugStruct; + +static DebugStruct debug = {0}; + void setButtonStates(int buttons[], int gear) { + // SHIFTER CODE + debug.out_buttons = 0; + // release virtual buttons for all gears for (byte i = 0; i < 7; ++i) { G27.setButton(i, LOW); @@ -292,72 +381,187 @@ void setButtonStates(int buttons[], int gear) { if (gear > 0) { G27.setButton(gear - 1, HIGH); + debug.out_buttons |= 1 << (gear - 1); } for (byte i = BUTTON_RED_CENTERRIGHT; i <= BUTTON_DPAD_TOP; ++i) { G27.setButton(buttonTable[i], buttons[i]); + if( buttons[i] ) + { + debug.out_buttons |= 1 << buttonTable[i]; + } } } -void describeButtonStates(int buttons[], int shifterPosition[], int gear) { - Serial.print("\nSHIFTER X: "); - Serial.print(shifterPosition[0]); - Serial.print(" Y: "); - Serial.print(shifterPosition[1]); +#define CALIB_MIN(calibValue, curValue, minValue) if( calibValue < 0 || curValue < minValue ) { calibValue = minValue = curValue; } +#define CALIB_MAX(calibValue, curValue, maxValue) if( calibValue < 0 || curValue > maxValue ) { calibValue = maxValue = curValue; } +#define CALIB_RANGE(calibValue, curValue, minValue, maxValue) \ + { if( calibValue < 0 ) { calibValue = minValue = maxValue = curValue; } \ + CALIB_MIN(calibValue, curValue, minValue); \ + CALIB_MAX(calibValue, curValue, maxValue); } - Serial.print(" GEAR: "); - Serial.print(gear); - Serial.print(" REVERSE: "); - Serial.print(buttons[BUTTON_REVERSE]); +void calib(struct Pedal *gas, Pedal *brake, Pedal *clutch, int shifter_X, int shifter_Y, int calibButton) +{ + static uint8_t printMode = 0; + static enum COMMANDS { + IDLE = 'i', + RECORD_Y_SHIFTER_135 = 'u', + RECORD_Y_SHIFTER_246 = 'b', + RECORD_Y_SHIFTER_NEUTRAL = 'n', + RECORD_X_SHIFTER_12 = 'l', + RECORD_X_SHIFTER_56 = 'r', + RECORD_GAS = 'G', + RECORD_BRAKE = 'B', + RECORD_CLUTCH = 'C', + SET_PEDAL_AUTO_CALIBRATE = 'P', + RESET_PEDAL_AUTO_CALIBRATE = 'p', + SET_PEDALS_ENABLED = 'E', + RESET_PEDALS_ENABLED = 'e', + SET_SHIFTER_ENABLED = 'S', + RESET_SHIFTER_ENABLED = 's', + SET_GAS_INVERTED = 'Y', + RESET_GAS_INVERTED = 'y', + SET_BRAKE_INVERTED = 'X', + RESET_BRAKE_INVERTED = 'x', + SET_CLUTCH_INVERTED = 'Z', + RESET_CLUTCH_INVERTED = 'z', + SET_REVERSE_RIGHT_RED = 'Q', + RESET_REVERSE_RIGHT_RED = 'q', + SET_PEDAL_FILTSIZE_OFF = '0', + SET_PEDAL_FILTSIZE_3 = '3', + SET_PEDAL_FILTSIZE_5 = '5', + SET_PEDAL_FILTSIZE_7 = '7', + SET_PEDAL_FILTSIZE_9 = '9', + SET_PEDAL_FILTSIZE_15 = 'f', + SET_SHIFTER_FILTSIZE_OFF = '1', + SET_SHIFTER_FILTSIZE_3 = '2', + SET_SHIFTER_FILTSIZE_5 = '4', + SET_SHIFTER_FILTSIZE_7 = '6', + SET_SHIFTER_FILTSIZE_9 = '8', + SET_SHIFTER_FILTSIZE_15 = 'F', + SET_PRINT_MODE = 'O', + RESET_PRINT_MODE = 'o', + STORE_CALIB = 'w', + DEFAULT_CALIB = 'c', + EEPROM_CALIB = 'U' + } currentMode = IDLE; + static int calibValue = -1; + if (Serial.available() > 0) + { + char rx_byte = Serial.read(); + switch (rx_byte) + { + case IDLE: + case RECORD_Y_SHIFTER_135: + case RECORD_Y_SHIFTER_246: + case RECORD_Y_SHIFTER_NEUTRAL: + case RECORD_X_SHIFTER_12: + case RECORD_X_SHIFTER_56: + case RECORD_GAS: + case RECORD_BRAKE: + case RECORD_CLUTCH: calibValue = -1; currentMode = (COMMANDS)rx_byte; break; + + case SET_PEDAL_AUTO_CALIBRATE: calibration.data.pedals_auto_calib = 1; break; + case RESET_PEDAL_AUTO_CALIBRATE: calibration.data.pedals_auto_calib= 0; break; + + case SET_PEDALS_ENABLED: calibration.data.use_pedals = 1; break; + case RESET_PEDALS_ENABLED: calibration.data.use_pedals = 0; break; + + case SET_SHIFTER_ENABLED: calibration.data.use_shifter = 1; break; + case RESET_SHIFTER_ENABLED: calibration.data.use_shifter = 0; break; + + case SET_GAS_INVERTED: calibration.data.flags |= FLAG_INVERT_GAS; break; + case RESET_GAS_INVERTED: calibration.data.flags &= ~FLAG_INVERT_GAS; break; + case SET_BRAKE_INVERTED: calibration.data.flags |= FLAG_INVERT_BRAKE; break; + case RESET_BRAKE_INVERTED: calibration.data.flags &= ~FLAG_INVERT_BRAKE; break; + case SET_CLUTCH_INVERTED: calibration.data.flags |= FLAG_INVERT_CLUTCH; break; + case RESET_CLUTCH_INVERTED: calibration.data.flags &= ~FLAG_INVERT_CLUTCH; break; + case SET_REVERSE_RIGHT_RED: calibration.data.flags |= FLAG_REVERSE_RIGHT_RED; break; + case RESET_REVERSE_RIGHT_RED: calibration.data.flags &= ~FLAG_REVERSE_RIGHT_RED; break; + + case SET_PEDAL_FILTSIZE_OFF: calibration.data.pedal_median_size = 0; break; + case SET_PEDAL_FILTSIZE_3: calibration.data.pedal_median_size = 3; break; + case SET_PEDAL_FILTSIZE_5: calibration.data.pedal_median_size = 5; break; + case SET_PEDAL_FILTSIZE_7: calibration.data.pedal_median_size = 9; break; + case SET_PEDAL_FILTSIZE_9: calibration.data.pedal_median_size = 15; break; + case SET_PEDAL_FILTSIZE_15: calibration.data.pedal_median_size = 49; break; + + case SET_SHIFTER_FILTSIZE_OFF: calibration.data.shifter_median_size = 0; break; + case SET_SHIFTER_FILTSIZE_3: calibration.data.shifter_median_size = 3; break; + case SET_SHIFTER_FILTSIZE_5: calibration.data.shifter_median_size = 5; break; + case SET_SHIFTER_FILTSIZE_7: calibration.data.shifter_median_size = 9; break; + case SET_SHIFTER_FILTSIZE_9: calibration.data.shifter_median_size = 15; break; + case SET_SHIFTER_FILTSIZE_15: calibration.data.shifter_median_size = 49; break; + + case SET_PRINT_MODE: printMode = 1; break; + case RESET_PRINT_MODE: printMode = 0;; break; - Serial.print(" RED BUTTONS:"); - if (buttons[BUTTON_RED_LEFT]) { - Serial.print(" 1"); + case STORE_CALIB: + calibration.crc = crc((uint8_t*)&calibration.data, sizeof(calibration.data)); + EEPROM.put(0, calibration); + break; + case DEFAULT_CALIB: + calibration = calibDefault; + break; + case EEPROM_CALIB: + loadEEPROM(); + break; + } } - if (buttons[BUTTON_RED_CENTERLEFT]) { - Serial.print(" 2"); + if(printMode) + { + debug.sizeInBytes = sizeof(debug); + debug.calibButton = calibButton; + debug.axisValues[0] = shifter_X; + debug.axisValues[1] = shifter_Y; + debug.axisValues[2] = gas->cur; + debug.axisValues[3] = brake->cur; + debug.axisValues[4] = clutch->cur; + debug.calib = calibration.data; + debug.numCrcErrors = crcError; + debug.numMagicNumErrors = magicNumberError; + debug.profiling[3] = micros(); + uint16_t s = sizeof(debug); + Serial.write((const byte*)&debug, sizeof(debug)); + debug.profiling[0] = debug.profiling[3]; } - if (buttons[BUTTON_RED_CENTERLEFT]) { - Serial.print(" 3"); + if(calibButton) + { + switch(currentMode) + { + case RECORD_Y_SHIFTER_135: + CALIB_MIN(calibValue, shifter_Y, calibration.data.shifter_y_135_gearZone); + break; + case RECORD_Y_SHIFTER_246: + CALIB_MAX(calibValue, shifter_Y, calibration.data.shifter_y_246R_gearZone); + break; + case RECORD_Y_SHIFTER_NEUTRAL: + CALIB_RANGE(calibValue, shifter_Y, calibration.data.shifter_y_neutralMin, calibration.data.shifter_y_neutralMax); + break; + case RECORD_X_SHIFTER_12: + CALIB_MAX(calibValue, shifter_X, calibration.data.shifter_x_12); + break; + case RECORD_X_SHIFTER_56: + CALIB_MIN(calibValue, shifter_X, calibration.data.shifter_x_56); + break; + } } - if (buttons[BUTTON_RED_RIGHT]) { - Serial.print(" 4"); - } - - Serial.print(" BLACK BUTTONS:"); - if (buttons[BUTTON_BLACK_LEFT]) { - Serial.print(" LEFT"); - } - if (buttons[BUTTON_BLACK_TOP]) { - Serial.print(" TOP"); - } - if (buttons[BUTTON_BLACK_BOTTOM]) { - Serial.print(" BOTTOM"); - } - if (buttons[BUTTON_BLACK_RIGHT]) { - Serial.print(" RIGHT"); - } - - Serial.print(" D-PAD:"); - if (buttons[BUTTON_DPAD_LEFT]) { - Serial.print(" LEFT"); - } - if (buttons[BUTTON_DPAD_TOP]) { - Serial.print(" UP"); - } - if (buttons[BUTTON_DPAD_BOTTOM]) { - Serial.print(" DOWN"); - } - if (buttons[BUTTON_DPAD_RIGHT]) { - Serial.print(" RIGHT"); + switch(currentMode) + { + case RECORD_GAS: + CALIB_RANGE(calibValue, gas->cur, calibration.data.gasMin, calibration.data.gasMax); + break; + case RECORD_BRAKE: + CALIB_RANGE(calibValue, brake->cur, calibration.data.brakeMin, calibration.data.brakeMax); + break; + case RECORD_CLUTCH: + CALIB_RANGE(calibValue, clutch->cur, calibration.data.clutchMin, calibration.data.clutchMax); + break; } } void setup() { - Serial.begin(38400); -#if !defined(DEBUG_PEDALS) && !defined(DEBUG_SHIFTER) - G27.begin(false); -#endif + Serial.begin(460800); // lights pinMode(RED_PIN, OUTPUT); @@ -380,73 +584,89 @@ void setup() { brake->pin = BRAKE_PIN; clutch->pin = CLUTCH_PIN; - #if defined(STATIC_THRESHOLDS) - gas->min = MIN_GAS; - gas->max = MAX_GAS; + loadEEPROM(); - brake->min = MIN_BRAKE; - brake->max = MAX_BRAKE; + if( !calibration.data.pedals_auto_calib ) + { + gas->min = calibration.data.gasMin; + gas->max = calibration.data.gasMax; - clutch->min = MIN_CLUTCH; - clutch->max = MAX_CLUTCH; - #endif + brake->min = calibration.data.brakeMin; + brake->max = calibration.data.brakeMax; + + clutch->min = calibration.data.clutchMin; + clutch->max = calibration.data.clutchMax; + } else + { + gas->min = brake->min = clutch->min = MAX_AXIS; + gas->max = brake->max = clutch->max = 0; + } gasPedal = gas; brakePedal = brake; clutchPedal = clutch; } +SignalFilter signalFilters[5]; + void loop() { + debug.profiling[2] = micros(); // pedals - processPedal(gasPedal); - processPedal(brakePedal); - processPedal(clutchPedal); + processPedal(gasPedal, &signalFilters[0], calibration.data.pedal_median_size); + processPedal(brakePedal, &signalFilters[1], calibration.data.pedal_median_size); + processPedal(clutchPedal, &signalFilters[2], calibration.data.pedal_median_size); -#if defined(INVERT_BRAKE) - Pedal* brake = (Pedal*)brakePedal; - brake->axis = map(brake->axis, 0, MAX_AXIS, MAX_AXIS, 0); -#endif - -#if defined(DEBUG_PEDALS) - describePedal("GAS", "X", gasPedal); - describePedal("BRAKE", "Y", brakePedal); - describePedal("CLUTCH", "Z", clutchPedal); -#elif defined(USE_PEDALS) - setXAxis(gasPedal); - setYAxis(brakePedal); - setZAxis(clutchPedal); -#endif - -#if defined(PEDAL_COLORS) - pedalColor(gasPedal, brakePedal, clutchPedal); -#endif + if(calibration.data.flags & FLAG_INVERT_GAS ) + { + Pedal* gas = (Pedal*)gasPedal; + gas->axis = map(gas->axis, 0, MAX_AXIS, MAX_AXIS, 0); + } + if(calibration.data.flags & FLAG_INVERT_BRAKE ) + { + Pedal* brake = (Pedal*)brakePedal; + brake->axis = map(brake->axis, 0, MAX_AXIS, MAX_AXIS, 0); + } + if(calibration.data.flags & FLAG_INVERT_CLUTCH ) + { + Pedal* clutch = (Pedal*)clutchPedal; + clutch->axis = map(clutch->axis, 0, MAX_AXIS, MAX_AXIS, 0); + } + if(calibration.data.use_pedals) + { + setXAxis(gasPedal); + setYAxis(brakePedal); + setZAxis(clutchPedal); + debug.out_axis[0] = gasPedal->axis; + debug.out_axis[1] = brakePedal->axis; + debug.out_axis[2] = clutchPedal->axis; + } else + { + debug.out_axis[0] = 0xffff; + debug.out_axis[1] = 0xffff; + debug.out_axis[2] = 0xffff; + } + // shifter int buttonStates[16]; getButtonStates(buttonStates); + int shifterPosition[2]; getShifterPosition(shifterPosition); + shifterPosition[0] = apply_filter(&signalFilters[3], calibration.data.shifter_median_size, shifterPosition[0]); + shifterPosition[1] = apply_filter(&signalFilters[4], calibration.data.shifter_median_size, shifterPosition[1]); + int gear = getCurrentGear(shifterPosition, buttonStates); -#if defined(DEBUG_SHIFTER) - describeButtonStates(buttonStates, shifterPosition, gear); -#elif defined(USE_SHIFTER) - setButtonStates(buttonStates, gear); -#endif + if(calibration.data.use_shifter) + { + setButtonStates(buttonStates, gear); + } else + { + debug.out_buttons = 0xffffffff; + } -#if !defined(DEBUG_SHIFTER) || !defined(DEBUG_PEDALS) + calib(gasPedal, brakePedal, clutchPedal, shifterPosition[0], shifterPosition[1], buttonStates[BUTTON_RED_LEFT]); G27.sendState(); -#endif - -#if defined(DEBUG_PEDALS) || defined(DEBUG_SHIFTER) - Serial.print("\n----------------------------------------------------------------------------"); - // slow the output down a bit - delay(500); -#endif -} - -void setColor(int red, int green, int blue) { - analogWrite(RED_PIN, red); - analogWrite(GREEN_PIN, green); - analogWrite(BLUE_PIN, blue); + debug.profiling[1] = micros(); } diff --git a/G27_Pedals_and_Shifter/src/Filter.cpp b/G27_Pedals_and_Shifter/src/Filter.cpp new file mode 100644 index 0000000..1ada39e --- /dev/null +++ b/G27_Pedals_and_Shifter/src/Filter.cpp @@ -0,0 +1,100 @@ +#include "Filter.h" + +uint16_t apply_filter(SignalFilter *filter, uint8_t filterSize, uint16_t value) +{ + uint8_t i, idxMaxInLow = 0, idxMinInHigh = 0; + uint8_t filterSizeDiv2; + uint16_t v, vMaxInLow, vMinInHigh; + if( filterSize <= 1 ) + { + return value; + } + if( filterSize > MAX_FILTER_SIZE ) + { + filterSize = MAX_FILTER_SIZE; + } + filterSize = (filterSize/2)*2+1; /* assert sanity of filter size */ + filterSizeDiv2 = filterSize/2; + if( filterSize != filter->filterSize ) + { + /* initialize filter */ + filter->filterSize = filterSize; + filter->ringBufferIdx = 0; + filter->medianIdx = filterSizeDiv2; + filter->idxMaxInLow = 0; + filter->idxMinInHigh = 0; + for(i = 0; i < filterSize; i++) + { + filter->values[i] = value; + if( i < filterSizeDiv2 ) + { + filter->lowIdx[i] = i; + } + if( i > filterSizeDiv2 ) + { + filter->highIdx[i-filterSizeDiv2-1] = i; + } + } + } + /* remove the last item */ + v = filter->values[filter->ringBufferIdx]; + if( v <= filter->values[filter->medianIdx] || filter->idxMaxInLow == 255 ) + { + for(i = 0; i < filterSizeDiv2; i++) + { + if( filter->ringBufferIdx == filter->lowIdx[i] ) + { + filter->lowIdx[i] = filter->medianIdx; + } + if( filter->values[filter->lowIdx[i]] > filter->values[filter->lowIdx[idxMaxInLow]] ) + { + idxMaxInLow = i; + } + } + filter->idxMaxInLow = idxMaxInLow; + } + idxMaxInLow = filter->idxMaxInLow; + if( v >= filter->values[filter->medianIdx] || filter->idxMinInHigh == 255 ) + { + for(i = 0; i < filterSizeDiv2; i++) + { + if( filter->ringBufferIdx == filter->highIdx[i] ) + { + filter->highIdx[i] = filter->medianIdx; + } + if( filter->values[filter->highIdx[i]] < filter->values[filter->highIdx[idxMinInHigh]] ) + { + idxMinInHigh = i; + } + } + filter->idxMinInHigh = idxMinInHigh; + } + idxMinInHigh = filter->idxMinInHigh; + /* the median index is now free */ + vMaxInLow = filter->values[filter->lowIdx[idxMaxInLow]]; + vMinInHigh = filter->values[filter->highIdx[idxMinInHigh]]; + filter->values[filter->ringBufferIdx] = value; + if( value < vMaxInLow ) + { + uint8_t tmp = filter->lowIdx[idxMaxInLow]; + filter->lowIdx[idxMaxInLow] = filter->ringBufferIdx; + filter->medianIdx = tmp; + filter->idxMaxInLow = 255; + } else if( value > vMinInHigh ) + { + uint8_t tmp = filter->highIdx[idxMinInHigh]; + filter->highIdx[idxMinInHigh] = filter->ringBufferIdx; + filter->medianIdx = tmp; + filter->idxMinInHigh = 255; + } else + { + filter->medianIdx = filter->ringBufferIdx; + } + filter->ringBufferIdx++; + if( filter->ringBufferIdx >= filterSize ) + { + filter->ringBufferIdx = 0; + } + return filter->values[filter->medianIdx]; +} + diff --git a/G27_Pedals_and_Shifter/src/Filter.h b/G27_Pedals_and_Shifter/src/Filter.h new file mode 100644 index 0000000..a318273 --- /dev/null +++ b/G27_Pedals_and_Shifter/src/Filter.h @@ -0,0 +1,22 @@ +#ifndef MEDIAN_FILTER_H +#define MEDIAN_FILTER_H + +#include + +#define MAX_FILTER_SIZE 49 + +typedef struct SignalFilter +{ + uint16_t values[MAX_FILTER_SIZE]; + uint8_t ringBufferIdx; + uint8_t filterSize; + uint8_t lowIdx[MAX_FILTER_SIZE/2]; + uint8_t highIdx[MAX_FILTER_SIZE/2]; + uint8_t idxMaxInLow; + uint8_t idxMinInHigh; + uint8_t medianIdx; +} SignalFilter; + +uint16_t apply_filter(SignalFilter *filter, uint8_t filterSize, uint16_t value); + +#endif diff --git a/G27_Pedals_and_Shifter/src/test_filter.py b/G27_Pedals_and_Shifter/src/test_filter.py new file mode 100644 index 0000000..4120c8e --- /dev/null +++ b/G27_Pedals_and_Shifter/src/test_filter.py @@ -0,0 +1,95 @@ +import ctypes as ct + +MAX_FILTER_SIZE = 49 + +class SignalFilter(ct.Structure): + _fields_ = [ + ("values", ct.c_uint16*MAX_FILTER_SIZE), + ("ringBufferIdx", ct.c_uint8), + ("filterSize", ct.c_uint8), + ("lowIdx", ct.c_uint8*(MAX_FILTER_SIZE//2)), + ("highIdx", ct.c_uint8*(MAX_FILTER_SIZE//2)), + ("idxMinInHigh", ct.c_uint8), + ("idxMaxInLow", ct.c_uint8), + ] + +def apply_filter(filter, filterSize, value): + idxMaxInLow = 0 + idxMinInHigh = 0 + if filterSize <= 1: + return value + if filterSize > MAX_FILTER_SIZE: + filterSize = MAX_FILTER_SIZE + filterSize = (filterSize//2)*2+1 #/* assert sanity of filter size */ + filterSizeDiv2 = filterSize//2 + if filterSize != filter.filterSize: + #/* initialize filter */ + filter.filterSize = filterSize + filter.ringBufferIdx = 0 + filter.medianIdx = filterSizeDiv2 + filter.idxMaxInLow = 0 + filter.idxMinInHigh = 0 + for i in range(filterSize): + filter.values[i] = value + if i < filterSizeDiv2: + filter.lowIdx[i] = i + if i > filterSizeDiv2: + filter.highIdx[i-filterSizeDiv2-1] = i + # /* remove the last item */ + print(list(filter.lowIdx)[:filterSizeDiv2], list(filter.highIdx)[:filterSizeDiv2], filter.medianIdx, list(filter.values)[:filterSize], filter.ringBufferIdx, filter.idxMaxInLow, filter.idxMinInHigh, value) + v = filter.values[filter.ringBufferIdx] + if v <= filter.values[filter.medianIdx] or filter.idxMaxInLow == 255: + for i in range(filterSizeDiv2): #for(i = 0; i < filterSizeDiv2; i++) + if filter.ringBufferIdx == filter.lowIdx[i]: + filter.lowIdx[i] = filter.medianIdx + if filter.values[filter.lowIdx[i]] > filter.values[filter.lowIdx[idxMaxInLow]]: + idxMaxInLow = i + filter.idxMaxInLow = idxMaxInLow + idxMaxInLow = filter.idxMaxInLow + if v >= filter.values[filter.medianIdx] or filter.idxMinInHigh == 255: + for i in range(filterSizeDiv2): #for(i = 0; i < filterSizeDiv2; i++) + if filter.ringBufferIdx == filter.highIdx[i]: + filter.highIdx[i] = filter.medianIdx + if filter.values[filter.highIdx[i]] < filter.values[filter.highIdx[idxMinInHigh]]: + idxMinInHigh = i + filter.idxMinInHigh = idxMinInHigh + idxMinInHigh = filter.idxMinInHigh + #/* the median index is now free */ + vMaxInLow = filter.values[filter.lowIdx[idxMaxInLow]] + vMinInHigh = filter.values[filter.highIdx[idxMinInHigh]] + filter.values[filter.ringBufferIdx] = value + if value < vMaxInLow: + tmp = filter.lowIdx[idxMaxInLow] + filter.lowIdx[idxMaxInLow] = filter.ringBufferIdx + filter.medianIdx = tmp + filter.idxMaxInLow = 255 + elif value > vMinInHigh: + tmp = filter.highIdx[idxMinInHigh] + filter.highIdx[idxMinInHigh] = filter.ringBufferIdx + filter.medianIdx = tmp + filter.idxMinInHigh = 255 + else: + filter.medianIdx = filter.ringBufferIdx + print(list(filter.lowIdx)[:filterSizeDiv2], list(filter.highIdx)[:filterSizeDiv2], filter.medianIdx, list(filter.values)[:filterSize], filter.ringBufferIdx, filter.idxMaxInLow, filter.idxMinInHigh, value) + assert sorted([filter.medianIdx] + list(filter.lowIdx)[:filterSizeDiv2] + list(filter.highIdx)[:filterSizeDiv2]) == sorted(np.arange(filterSize, dtype=np.uint8)) + #low = np.array(filter.values)[np.array(filter.lowIdx[:filterSizeDiv2])] + #high = np.array(filter.values)[np.array(filter.highIdx[:filterSizeDiv2])] + #assert np.all(low[filter.idxMaxInLow] >= low) + #assert np.all(high[filter.idxMinInHigh] <= high) + filter.ringBufferIdx += 1 + if filter.ringBufferIdx >= filterSize: + filter.ringBufferIdx = 0 + return filter.values[filter.medianIdx] + +if __name__ == "__main__": + import numpy as np + for filterSize in [0, 3, 5, 9, 15, 49]: + filter = SignalFilter() + numbers = np.random.randint(0, 1023, size=10000, dtype=np.uint16) + for i,n in enumerate(numbers): + m = apply_filter(filter, filterSize, n) + if i >= filterSize: + if filterSize > 0: + assert m == np.median(numbers[i-filterSize+1:i+1]) + else: + assert m == n diff --git a/g27_pedals_and_shifter_gui/calib.py b/g27_pedals_and_shifter_gui/calib.py new file mode 100644 index 0000000..f6716e5 --- /dev/null +++ b/g27_pedals_and_shifter_gui/calib.py @@ -0,0 +1,480 @@ +import struct +import ctypes as ct +import sys +import time +import traceback +from PySide2.QtCore import QRectF, Qt, QObject, QThread, Signal, QMutex, QMutexLocker, QTimer, QSignalBlocker +from PySide2.QtGui import QBrush, QPen, QColor +from PySide2.QtWidgets import (QApplication, QWidget, QGroupBox, QLabel, QGridLayout, QVBoxLayout, QRadioButton, + QCheckBox, QComboBox, QPushButton) +import serial +from serial.tools import list_ports +import pyqtgraph as pg +import numpy as np +# all joystick inputs seem to have issues with the more than 16 buttons present on G27 shifter. +# therefore, we just use inputs to connect to the device and all other stuff is transferred via serial +# port. +import inputs + +FLAG_INVERT_BRAKE = 0x1 +FLAG_INVERT_GAS = 0x2 +FLAG_INVERT_CLUTCH = 0x4 +FLAG_REVERSE_RIGHT_RED = 0x8 + +# following structures need to be synchronized with Arduino C Code +class CalibData(ct.Structure): + _pack_ = 2 + _fields_ = [ + ("calibID", ct.c_uint32), + ("pedals_auto_calib", ct.c_uint8), + ("flags", ct.c_uint8), + ("use_pedals", ct.c_uint8), + ("use_shifter", ct.c_uint8), + ("pedals_median_size", ct.c_uint8), + ("shifter_median_size", ct.c_uint8), + ("gasMin", ct.c_uint16), + ("gasMax", ct.c_uint16), + ("brakeMin", ct.c_uint16), + ("brakeMax", ct.c_uint16), + ("clutchMin", ct.c_uint16), + ("clutchMax", ct.c_uint16), + ("shifter_y_neutralMin", ct.c_uint16), + ("shifter_y_neutralMax", ct.c_uint16), + ("shifter_y_246R_gearZone", ct.c_uint16), + ("shifter_y_135_gearZone", ct.c_uint16), + ("shifter_x_12", ct.c_uint16), + ("shifter_x_56", ct.c_uint16), + ] + +class DebugStruct(ct.Structure): + _pack_ = 2 + _fields_ = [ + ("sizeInBytes", ct.c_uint8), + ("calibButton", ct.c_uint8), + ("axisValues", ct.c_uint16*5), + ("calib", CalibData), + ("numCrcErrors", ct.c_uint16), + ("numMagicNumErrors", ct.c_uint16), + ("profiling", ct.c_uint32*4), + ("out_axis", ct.c_uint16*3), + ("out_buttons", ct.c_uint32) + ] + + +class Values: + def __init__(self, history_time_s = 1.0): + self.mutex = QMutex() + self.history_time_ns = np.int64(history_time_s*1e9) + self.times = np.zeros((0,), dtype=np.int64) + self.gas = np.zeros((0,), dtype=np.uint16) + self.brake = np.zeros((0,), dtype=np.uint16) + self.clutch = np.zeros((0,), dtype=np.uint16) + self.sx = np.zeros((0,), dtype=np.uint16) + self.sy = np.zeros((0,), dtype=np.uint16) + self.calib = CalibData() + + def update(self, dbg): # options + ml = QMutexLocker(self.mutex) + self.times = np.append(self.times, [time.perf_counter_ns()]) + v = self.times >= self.times[-1] - self.history_time_ns + self.times = self.times[v] + self.gas = np.append(self.gas, [dbg.axisValues[2]])[v] + self.brake = np.append(self.brake, [dbg.axisValues[3]])[v] + self.clutch = np.append(self.clutch, [dbg.axisValues[4]])[v] + self.sx = np.append(self.sx, [dbg.axisValues[0]])[v] + self.sy = np.append(self.sy, [dbg.axisValues[1]])[v] + self.calib = dbg.calib + + def add(self, other): + ml = QMutexLocker(other.mutex) + ml2 = QMutexLocker(self.mutex) + self.times = np.append(self.times, other.times) + self.gas = np.append(self.gas, other.gas) + self.brake = np.append(self.brake, other.brake) + self.clutch = np.append(self.clutch, other.clutch) + self.sx = np.append(self.sx, other.sx) + self.sy = np.append(self.sy, other.sy) + self.calib = other.calib + other.times = np.resize(other.times, (0,)) + other.gas = np.resize(other.gas, (0,)) + other.brake = np.resize(other.brake, (0,)) + other.clutch = np.resize(other.clutch, (0,)) + other.sx = np.resize(other.sx, (0,)) + other.sy = np.resize(other.sy, (0,)) + v = self.times >= self.times[-1] - self.history_time_ns + self.times = self.times[v] + self.gas = self.gas[v] + self.brake = self.brake[v] + self.clutch = self.clutch[v] + self.sx = self.sx[v] + self.sy = self.sy[v] + +class G27CalibGui(QWidget): + sendModeCmd = Signal(object) + setObjectCmd = Signal(object) + + def __init__(self): + super().__init__() + self.tl_layout = QGridLayout(self) + rbtn_values = QGroupBox("Calibration Values", self) + vbox = QVBoxLayout(rbtn_values) + self.mode_btns = [ + QRadioButton(s, rbtn_values) for s in + ["Idle", "Shifter neutral zone", "Shifter 135 zone", "Shifter 246R zone", "Shifter 12 zone", + "Shifter 56 zone", "Gas pedal (if not auto-calibrated)", "Brake pedal (if not auto-calibrated)", + "Clutch pedal (if not auto-calibrated)"]] + self.mode_btns[0].setChecked(True) + self.mode_cmds = [b"i", b"n", b"u", b"b", b"l", b"r", b"G", b"B", b"C"] + self.help_cmds = [ + "First decide about the filtering needed (in middle panel). If there is a lot of noise in the signal, " + "maybe because of old pots, you might want to use a multi-sample median filter. Note that this filter " + "introduces some delay, so you want to keep the numbers reasonable low. Afterwards, iterate through " + "the calibration values in the left panel.\n\n" + "When you're done, you can save the calibration in the right panel to the EEPROM.", + "Put the shifter in neutral position. Afterwards, keep the left red button pressed and move the " + "shifter while still in neutral. When reaching the calibrated area, the gear will be set to neutral.", + "Put the shifter in 3rd gear. Afterwards keep the left red button pressed and move the shifter " + "while still in 3rd gear. When done, release the red button. Optionally repeat for gears 1st and 5th.", + "Put the shifter in 4th gear. Afterwards keep the left red button pressed and move the shifter " + "while still in 4th gear. When done, release the red button. Optionally repeat for gears 2nd and 6th.", + "Put the shifter in 1st gear. Afterwards keep the left red button pressed and move the shifter " + "while still in 1st gear. When done, release the red button. Optionally repeat for 2nd gear.", + "Put the shifter in 5th gear. Afterwards keep the left red button pressed and move the shifter " + "while still in 5th gear. When done, release the red button. Optionally repeat for 6th gear.", + "Move the gas pedal multiple times between lowest and highest position.", + "Move the brake pedal multiple times between lowest and highest position.", + "Move the clutch pedal multiple times between lowest and highest position." + ] + for b in self.mode_btns: + vbox.addWidget(b) + b.toggled.connect(self.modeChanged) + self.tl_layout.addWidget(rbtn_values, 0,0, 1, 1) + + cbtn_options = QGroupBox("Options", self) + grid = QGridLayout(cbtn_options) + self.option_btns = [ + QCheckBox(s, cbtn_options) for s in + ["Enable pedal auto-calibration", + "Invert gas/throttle pedal", + "Invert brake pedal", + "Invert clutch pedal", + "Use right red button for reverse instead pushing the gear", + "Enable pedals", + "Enable shifter"] + ] + [QComboBox(), QComboBox()] + self.option_cmds = [(b"p", b"P"), + (b"y", b"Y"), + (b"x", b"X"), + (b"z", b"Z"), + (b"q", b"Q"), + (b"e", b"E"), + (b"s", b"S"), + (b"0", b"3", b"5", b"7", b"9", b"f"), + (b"1", b"2", b"4", b"6", b"8", b"F"), + ] + for (idx, name) in [(-2, "pedals"), (-1, "shifter")]: + for size in [0,3,5,9,15,49]: + self.option_btns[idx].addItem("off" if size == 0 else (str(size) + "-median"), size) + for i,b in enumerate(self.option_btns): + n_checkboxes = len(self.option_cmds) - 2 + if i < n_checkboxes: + grid.addWidget(b, i, 0, 1, 2) + else: + grid.addWidget(QLabel("Pedal filter" if i == n_checkboxes else "Shifter filter", parent=self), i, 0) + grid.addWidget(b, i, 1) + if isinstance(b, QCheckBox): + b.toggled.connect(self.optionChanged) + else: + b.currentIndexChanged.connect(self.optionChanged) + self.tl_layout.addWidget(cbtn_options, 0, 1, 1, 1) + + cbtn_persistent = QGroupBox("Persistency") + self.persistent_btns = [QPushButton(s, parent=self) for s in ["Save to EEPROM", "Load from EEPROM", "Defaults"]] + self.persistent_cmds = [b"w", b"U", b"c"] + vbox = QVBoxLayout(cbtn_persistent) + for i,b in enumerate(self.persistent_btns): + vbox.addWidget(b) + b.clicked.connect(self.persistent_cmd) + self.tl_layout.addWidget(cbtn_persistent, 0, 2, 1, 1) + + self.helpArea = QLabel(self.help_cmds[0], self) + self.helpArea.setWordWrap(True) + f = self.helpArea.font() + f.setBold(True) + f.setPointSizeF(f.pointSizeF()*1.5) + self.helpArea.setFont(f) + self.tl_layout.addWidget(self.helpArea, 0, 3, 1, 1) + + shifter_label = QLabel("Shifter") + self.tl_layout.addWidget(shifter_label, 1,2,1,2,alignment=Qt.AlignHCenter) + shifter_plot = pg.PlotWidget(parent=self) + shifter_plot.setMouseEnabled(x=False,y=False) + self.tl_layout.addWidget(shifter_plot, 2,2, 1,2) + shifter_plot.setRange(QRectF(0,0,1023,1023), padding=0) + pi = shifter_plot.getPlotItem() + self.shifter_neutral_plot = pg.LinearRegionItem(values = (400, 600), orientation='horizontal', movable=False, + brush = QBrush(QColor(200,50,50,50)), + pen=QPen(QColor(200,50,50))) + shifter_plot.addItem(self.shifter_neutral_plot) + self.shifter_135_plot = pg.LinearRegionItem(values = (800, 1024), orientation='horizontal', movable=False, + brush = QBrush(QColor(50,200,50,50)), + pen = QPen(QColor(50,200,50))) + shifter_plot.addItem(self.shifter_135_plot) + self.shifter_246_plot = pg.LinearRegionItem(values = (0, 200), orientation='horizontal', movable=False, + brush = QBrush(QColor(50,50,200,50)), + pen = QPen(QColor(50,50,200))) + shifter_plot.addItem(self.shifter_246_plot) + self.shifter_12_plot = pg.LinearRegionItem(values = (0, 200), orientation='vertical', movable=False, + brush = QBrush(QColor(50,200,200,50)), + pen = QPen(QColor(50,200,200))) + shifter_plot.addItem(self.shifter_12_plot) + self.shifter_56_plot = pg.LinearRegionItem(values = (800, 1024), orientation='vertical', movable=False, + brush = QBrush(QColor(200,200,50,50)), + pen = QPen(QColor(200,200,50))) + shifter_plot.addItem(self.shifter_56_plot) + self.shifter_pos_plot = pi.plot(x=[512], y=[512], symbol='+', pen=None) + + pedals_label = QLabel("Pedals") + self.tl_layout.addWidget(pedals_label, 1,0,1,2,alignment=Qt.AlignHCenter) + pedals_plot = pg.PlotWidget(parent=self) + pedals_plot.setMouseEnabled(x=False,y=False) + pedals_plot.setRange(QRectF(-1,0,4,1023), padding=0) + pedals_plot.getAxis('bottom').setTicks([[(0.0,"Gas/Throttle"), (1.0,"Brake"), (2.0,"Clutch")],[]]) + self.tl_layout.addWidget(pedals_plot,2,0,1,2) + self.pedals_pos_plot = pg.BarGraphItem(x=np.arange(3), height=[512,512,512], width=0.5) + self.pedals_gas_calib_plot = pedals_plot.getPlotItem().plot(x=[0], y=[0], pen=QPen(QColor(255,0,0),width=0.1), brush=QBrush(Qt.NoBrush)) + self.pedals_brake_calib_plot = pedals_plot.getPlotItem().plot(x=[0], y=[0], pen=QPen(QColor(0,255,0))) + self.pedals_clutch_calib_plot = pedals_plot.getPlotItem().plot(x=[0], y=[0], pen=QPen(QColor(0,0,255))) + self.pedals_pos_plot2 = pedals_plot.getPlotItem().plot(x=[], y=[], symbol='+', pen=None) + pedals_plot.addItem(self.pedals_pos_plot) + + self.status_line = QLabel(self) + self.tl_layout.addWidget(self.status_line,3,0,1,2) + self.status_line2 = QLabel(self) + self.tl_layout.addWidget(self.status_line2,3,2,1,2) + self.currentVals = Values() + + def modeChanged(self, toggled): + if toggled: + o = self.sender() + idx = self.mode_btns.index(o) + self.sendModeCmd.emit(self.mode_cmds[idx]) + self.helpArea.setText(self.help_cmds[idx]) + + def optionChanged(self, option): + o = self.sender() + idx = self.option_btns.index(o) + self.sendModeCmd.emit(self.option_cmds[idx][int(option)]) + + def persistent_cmd(self): + o = self.sender() + idx = self.persistent_btns.index(o) + self.sendModeCmd.emit(self.persistent_cmds[idx]) + + def newVals(self, values, dbg): + updateRate = 0.040*1e9 # 25 Hz + if len(self.currentVals.times) == 0 or (len(values.times) > 0 and + values.times[-1] > self.currentVals.times[-1] + updateRate): # each 10ms + self.currentVals.add(values) + values = self.currentVals + self.pedals_pos_plot.setOpts(height=[values.gas[-1], values.brake[-1], values.clutch[-1]]) + self.pedals_pos_plot2.setData(x=np.concatenate(([-0.35]*len(values.gas), [0.65]*len(values.brake), [1.65]*len(values.clutch))), + y=np.concatenate((values.gas, values.brake, values.clutch))) + + self.pedals_gas_calib_plot.setPen(QPen(QColor(255,0,0),width=0)) + self.pedals_gas_calib_plot.setData(x=[-0.0, -0.0, +0.0, +0.0, -0.0], + y=[values.calib.gasMin, values.calib.gasMax, values.calib.gasMax, values.calib.gasMin, values.calib.gasMin]) + self.pedals_brake_calib_plot.setData(x=[1.0,1.0,1.0,1.0,1.0], + y=[values.calib.brakeMin, values.calib.brakeMax, values.calib.brakeMax, values.calib.brakeMin, values.calib.brakeMin]) + self.pedals_clutch_calib_plot.setData(x=[2.0,2.0,2.0,2.0,2.0], + y=[values.calib.clutchMin, values.calib.clutchMax, values.calib.clutchMax, values.calib.clutchMin, values.calib.clutchMin]) + + self.shifter_pos_plot.setData(x=values.sx, y=values.sy) + self.shifter_neutral_plot.setRegion((values.calib.shifter_y_neutralMin, values.calib.shifter_y_neutralMax)) + self.shifter_135_plot.setRegion((values.calib.shifter_y_135_gearZone, 1024)) + self.shifter_246_plot.setRegion((0, values.calib.shifter_y_246R_gearZone)) + self.shifter_12_plot.setRegion((0, values.calib.shifter_x_12)) + self.shifter_56_plot.setRegion((values.calib.shifter_x_56, 1024)) + + blockers = [] + for b in self.option_btns: + blockers.append(QSignalBlocker(b)) + self.option_btns[0].setChecked(values.calib.pedals_auto_calib) + self.option_btns[1].setChecked((values.calib.flags & FLAG_INVERT_GAS) != 0) + self.option_btns[2].setChecked((values.calib.flags & FLAG_INVERT_BRAKE) != 0) + self.option_btns[3].setChecked((values.calib.flags & FLAG_INVERT_CLUTCH) != 0) + self.option_btns[4].setChecked((values.calib.flags & FLAG_REVERSE_RIGHT_RED) != 0) + self.option_btns[5].setChecked(values.calib.use_pedals) + self.option_btns[6].setChecked(values.calib.use_shifter) + self.option_btns[7].setCurrentIndex(self.option_btns[7].findData(values.calib.pedals_median_size)) + self.option_btns[8].setCurrentIndex(self.option_btns[8].findData(values.calib.shifter_median_size)) + + prof = "Total runtime: %9.2f ms | prof[0->1]: %9.2f ms | prof[1->2]: %9.2f ms | prof[2->3]: %9.2f ms | FPS: %04d" % ( + (dbg.profiling[-1] - dbg.profiling[0])*1e-3, + (dbg.profiling[1] - dbg.profiling[0])*1e-3, + (dbg.profiling[2] - dbg.profiling[1])*1e-3, + (dbg.profiling[3] - dbg.profiling[2])*1e-3, + ((len(values.times)*1e9 / (values.times[-1] - values.times[0])) if len(values.times) > 1 else "N/A"), + ) + self.status_line.setText(prof) + + # output values + s = "" + if dbg.out_axis[0] != 0xffff: + s += "A0=%04d A1=%04d A2=%04d " % tuple(dbg.out_axis) + else: + s += "A0=N/A A1=N/A A2=N/A " + + if dbg.out_buttons != 0xffffffff: + bstr="{:019b}".format(dbg.out_buttons) + s += "ShifterBtn: " + bstr[:-7] + gear = bstr[-7:][::-1] + if "1" in gear: + gear = gear.index("1") + 1 + else: + gear = 0 + s += " ShifterGear=%d" % (gear) + else: + s += "Shifter=N/A" + self.status_line2.setText(s) + +class Collector(QObject): + + valuesChanged = Signal(object, object) + + def __init__(self, portName): + super().__init__() + self.portName = portName + self.thread = QThread() + self.moveToThread(self.thread) + self.thread.started.connect(self.create) + self.thread.start() + + def sendModeCmd(self, cmd): + self.serialPort.write(cmd) + #print("Sent CMD: ", cmd) + + def create(self): + try: + self.values = Values() + self.serialPort = serial.Serial(self.portName, baudrate=460800, timeout=1) #115200, timeout=1) + self.serialPort.write(b'O') + self.n = 0 + self.tstart = time.perf_counter_ns() + self.timer = QTimer() + self.timer.timeout.connect(self.readFromSerial, Qt.QueuedConnection) + self.timer.setInterval(0) + self.timer.start() + except Exception as e: + traceback.print_exc() + + def readFromSerial(self): + try: + buf = self.serialPort.read(1) + numBytes, = struct.unpack("B", buf) + while len(buf) < numBytes-1: + buf += self.serialPort.read(numBytes-1) + dbg = DebugStruct.from_buffer_copy(buf) + self.n += len(buf)+2 + if 0: + print("read %d bytes in %.2f seconds: bits/second=%.1f" % + (self.n, + (time.perf_counter_ns() - self.tstart)*1e-9, + self.n * 8 / ((time.perf_counter_ns() - self.tstart)*1e-9))) + if 0: + print("Profiling 01: %.1f ms 12: %.1f ms 23: %.1f ms 03: %.1f ms" % + ( + (items[-3] - items[-4])*1e-3, + (items[-2] - items[-3])*1e-3, + (items[-1] - items[-2])*1e-3, + (items[-1] - items[-4])*1e-3, + )) + self.values.update(dbg) + self.valuesChanged.emit(self.values, dbg) + except Exception as e: + traceback.print_exc() + +class JoystickSink(QObject): + def __init__(self, jsdev): + super().__init__() + self.jsdev = jsdev + self.thread = QThread() + self.moveToThread(self.thread) + self.thread.started.connect(self.create) + self.thread.start() + + def create(self): + self.timer = QTimer() + self.timer.timeout.connect(self.readFromDevice, Qt.QueuedConnection) + self.timer.setInterval(0) + self.timer.start() + + def readFromDevice(self): + try: + events = self.jsdev.read() + except: + pass + + +def main(): + app = QApplication(sys.argv) + vars = {} + def createGui(): + nonlocal vars + gui = G27CalibGui() + gui.setMinimumSize(1024, 700) + gui.setWindowTitle("G27 Pedalsand Shifter") + coll = Collector(vars["tty"]) + coll.valuesChanged.connect(gui.newVals) + js = JoystickSink(vars["jsdev"]) + gui.sendModeCmd.connect(coll.sendModeCmd) + gui.show() + if main_widget is not None: main_widget.hide() + vars["gui"] = gui + vars["coll"] = coll + vars["js"] = js + + if len(list_ports.comports()) != 1 or len(inputs.devices.gamepads) != 1: + main_widget = QWidget() + main_widget.setWindowTitle("G27 Pedalsand Shifter - serial port") + layout = QGridLayout(main_widget) + layout.addWidget(QLabel("Select Arduino COM port:", main_widget),0,0) + ttyCombo = QComboBox(main_widget) + layout.addWidget(ttyCombo,0,1) + layout.addWidget(QLabel("Select G27 joystick port:", main_widget), 1, 0) + jsCombo = QComboBox(main_widget) + layout.addWidget(jsCombo,1,1) + def refresh(): + ttyCombo.clear() + n = 0 + for p in list_ports.comports(): + ttyCombo.addItem(p.device) + n += 1 + k = 0 + jsCombo.clear() + for i,d in enumerate(inputs.devices.gamepads): + jsCombo.addItem(d.name, userData=d) + k += 1 + btnStart.setEnabled(n > 0 and k > 0) + def startgui(): + idx = ttyCombo.currentIndex() + vars["tty"] = ttyCombo.itemText(ttyCombo.currentIndex()) + vars["jsdev"] = jsCombo.itemData(jsCombo.currentIndex()) + createGui() + btnRefresh = QPushButton("Refresh Devices") + btnRefresh.clicked.connect(refresh) + layout.addWidget(btnRefresh, 0, 2) + btnStart = QPushButton("Start") + btnStart.clicked.connect(startgui) + refresh() + layout.addWidget(btnStart, 1, 2) + main_widget.show() + else: + main_widget = None + vars["tty"] = list_ports.comports()[0].device + vars["jsdev"] = inputs.devices.gamepads[0] + createGui() + return app.exec_() + +if __name__ == "__main__": + main() diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..f426a4a --- /dev/null +++ b/setup.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python + +from distutils.core import setup + +setup(name='G27_Pedals_and_Shifter_GUI', + version='0.1', + description='Calibration GUI for the G27 Arduino adapter.', + author='functionreturnfunction,NEYS', + url='https://github.com/n-e-y-s/G27_Pedals_and_Shifter_GUI', + packages=['g27_pedals_and_shifter_gui'], + install_requires=['PySide2>=5.12.0', 'pyqtgraph>=0.11.0', 'pyserial>=3.4', "numpy>=1.16.2", "inputs>=0.5"], + entry_points = {"gui_scripts" : ['g27calib = g27_pedals_and_shifter_gui.calib:main']}, + ) From d7b141770ffb58dd51c214aae2a622ea2cfec815 Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 15:39:26 +0200 Subject: [PATCH 2/9] Update README.md --- README.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6f01af2..35e0169 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,28 @@ NOTE: when wiring the male connector for the shifter, remember that the pins wil ## Firmware -Open the .ino file in the Arduino IDE, select the proper board type and COM port under "Tools" (you will need to install the [SparkFun board library](https://github.com/sparkfun/Arduino_Boards)). You will probably need to adjust the thresholds for SHIFTER_XAXIS_12 and friends, the values that decide which gear you're in based on the x/y axis of the shifter. Uncomment the `#define DEBUG_SHIFTER true` line near the top to get debugging information to aid in this process. +Open the .ino file in the Arduino IDE, select the proper board type and COM port under "Tools" (you will need to install the [SparkFun board library](https://github.com/sparkfun/Arduino_Boards)). ## Calibration and Configration -The pedals are self-calibrating, meaning the system determines the min/max value for each pedal in realtime. What this means is that each time the device is powered on, you'll need to push each of the three pedals all the way to the floor once to let it know what the maximums are. +After the firmware has been uploaded to the arduino, you want to calibrate and configure the SW for your specific device. There is a python-based graphical user interface available in this project. -When configuring the shifter and buttons, gears 1 - 6 are buttons 1 - 6, reverse is button 7, and then the rest of the buttons enumerate from there starting from the top black button. +### GUI installation +This description assumes a windows operating system. Other operating systems are similar. You need python for running this GUI, I suggest to get the interpreter at http://winpython.github.io/. I'd choose the minimal python 3.7 64 bit version, but other versions or distributions should also work. When you have a python interpreter in place, I suggest to create a virtual environment using the shell commands: + + cd + python -m venv g27calib + +This command creates a virtual python environment in the directory g27calib. Afterwards you can install the GUI with (assuming Windows platform) + + .\g27calib\Scripts\pip install -e git+https://github.com/n-e-y-s/G27_Pedals_and_Shifter@n-e-y-s_devel#egg=G27_Pedals_and_Shifter_GUI + +The python packager downloads some stuff from the internet and finally you are able to start + + g27calib/Scripts/g27calib + +and the gui should open. + +### Calibration process + +TODO From d72058326a70fa5f64a7544b367a46bd95005312 Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 15:54:30 +0200 Subject: [PATCH 3/9] forbid PySide2 5.15.x versions / start without joystick devive --- g27_pedals_and_shifter_gui/calib.py | 7 +++++-- setup.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/g27_pedals_and_shifter_gui/calib.py b/g27_pedals_and_shifter_gui/calib.py index f6716e5..10e1c80 100644 --- a/g27_pedals_and_shifter_gui/calib.py +++ b/g27_pedals_and_shifter_gui/calib.py @@ -426,7 +426,10 @@ def main(): gui.setWindowTitle("G27 Pedalsand Shifter") coll = Collector(vars["tty"]) coll.valuesChanged.connect(gui.newVals) - js = JoystickSink(vars["jsdev"]) + if vars["jsdev"] is not None: + js = JoystickSink(vars["jsdev"]) + else: + js = None gui.sendModeCmd.connect(coll.sendModeCmd) gui.show() if main_widget is not None: main_widget.hide() @@ -455,7 +458,7 @@ def main(): for i,d in enumerate(inputs.devices.gamepads): jsCombo.addItem(d.name, userData=d) k += 1 - btnStart.setEnabled(n > 0 and k > 0) + btnStart.setEnabled(n > 0) def startgui(): idx = ttyCombo.currentIndex() vars["tty"] = ttyCombo.itemText(ttyCombo.currentIndex()) diff --git a/setup.py b/setup.py index f426a4a..330ae39 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,6 @@ setup(name='G27_Pedals_and_Shifter_GUI', author='functionreturnfunction,NEYS', url='https://github.com/n-e-y-s/G27_Pedals_and_Shifter_GUI', packages=['g27_pedals_and_shifter_gui'], - install_requires=['PySide2>=5.12.0', 'pyqtgraph>=0.11.0', 'pyserial>=3.4', "numpy>=1.16.2", "inputs>=0.5"], + install_requires=['PySide2 >=5.12.0,<5.15', 'pyqtgraph>=0.11.0', 'pyserial>=3.4', "numpy>=1.16.2", "inputs>=0.5"], entry_points = {"gui_scripts" : ['g27calib = g27_pedals_and_shifter_gui.calib:main']}, ) From f4e3f75c41be876be8dfe1e6881b4286bbdba4cc Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 16:19:06 +0200 Subject: [PATCH 4/9] Update README.md --- README.md | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 35e0169..7c9b358 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ Arduino-based USB interface for Logitech G27 pedals and shifter: -![on breadboard](https://raw.githubusercontent.com/functionreturnfunction/G27_Pedals_and_Shifter/master/Breadboard.jpg) -![in altoids tin](https://raw.githubusercontent.com/functionreturnfunction/G27_Pedals_and_Shifter/master/Altoids Tin.jpg) +![on breadboard](Breadboard.jpg) +![in altoids tin](Altoids Tin.jpg) ## Required Parts/Materials @@ -27,16 +27,17 @@ Open the .ino file in the Arduino IDE, select the proper board type and COM port After the firmware has been uploaded to the arduino, you want to calibrate and configure the SW for your specific device. There is a python-based graphical user interface available in this project. ### GUI installation -This description assumes a windows operating system. Other operating systems are similar. You need python for running this GUI, I suggest to get the interpreter at http://winpython.github.io/. I'd choose the minimal python 3.7 64 bit version, but other versions or distributions should also work. When you have a python interpreter in place, I suggest to create a virtual environment using the shell commands: + +This description assumes a windows operating system. Other operating systems are similar. You need python3 for running this GUI, I suggest to get the interpreter at http://winpython.github.io/. I'd choose the minimal python 3.7 64 bit version, but other versions or distributions should also work. When you have a python interpreter in place, I suggest to create a virtual environment using the shell commands: cd python -m venv g27calib -This command creates a virtual python environment in the directory g27calib. Afterwards you can install the GUI with (assuming Windows platform) +This command creates a virtual python environment in the directory g27calib. Afterwards you can install the GUI with - .\g27calib\Scripts\pip install -e git+https://github.com/n-e-y-s/G27_Pedals_and_Shifter@n-e-y-s_devel#egg=G27_Pedals_and_Shifter_GUI + .\g27calib\Scripts\pip install git+https://github.com/n-e-y-s/G27_Pedals_and_Shifter@n-e-y-s_devel#egg=G27_Pedals_and_Shifter_GUI -The python packager downloads some stuff from the internet and finally you are able to start +Of course you can also specify a local path alternatively to the git path above. Pip downloads some packages from the internet and finally you should be able to start g27calib/Scripts/g27calib @@ -44,4 +45,18 @@ and the gui should open. ### Calibration process -TODO +At first you need to select the Arduino serial device. On linux platforms, it is also necessary to select the joystick device of the G27, otherwise the GUI might be very slow: + +[device selector](screenshots/device_selector.png) + +When everything is set correctly, press the Start button. You are presented with the calibration/configurtion GUI: + +[gui screenshot](screenshots/gui_in_action.png) + +On the upper right, you get some help text about what to do next. Using that everything shall be pretty self-explaining. The graphs in the lower part are for the pedals and the shifter respectively. You see the measurements over the last second depicted with the "+" marks. + +The first step is to decide for a suitable filtering. Depending on the wear of your device, the measurements can be quite noisy and so it might be desirable to enable the median filtering in the options panel. When changing the values you will see the immediate effect on the measurements. + +Afterwards you probably want at least to calibrate your shifter by selecting the calibration values for the shifter on the upper left panel. Optionally you can also pre-calibrate your pedals such that the values are stored on the Arduino. The default is to use auto-calibration for the pedals. + +Note that there is the status line output with some profiling output on the left side and the final output values of the axis, buttons and gear value as delivered to the games. From ebc2e80aed8bd03e481c7c01167a74721e631c8e Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 16:23:55 +0200 Subject: [PATCH 5/9] add some screenshots --- screenshots/device_selector.png | Bin 0 -> 23132 bytes screenshots/gui_in_action.png | Bin 0 -> 160755 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 screenshots/device_selector.png create mode 100644 screenshots/gui_in_action.png diff --git a/screenshots/device_selector.png b/screenshots/device_selector.png new file mode 100644 index 0000000000000000000000000000000000000000..05160ffce0a8567a8086575b9dbc42eb39ea5775 GIT binary patch literal 23132 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 literal 0 HcmV?d00001 diff --git a/screenshots/gui_in_action.png b/screenshots/gui_in_action.png new file mode 100644 index 0000000000000000000000000000000000000000..21542d1e084d03a67535a0788b63e7699cb930dc GIT binary patch literal 160755 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

u#D~dWPF@0@}u&UkEgHk8H(uT @x@Oj<};%WbDWmrs8- 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ǀt{89c!C9tL=@8QJ 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 z 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 literal 0 HcmV?d00001 From cb6eca2352e63aff44b65eb41b9a3240c08ad823 Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 16:26:14 +0200 Subject: [PATCH 6/9] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7c9b358..1ff235f 100644 --- a/README.md +++ b/README.md @@ -47,11 +47,11 @@ and the gui should open. At first you need to select the Arduino serial device. On linux platforms, it is also necessary to select the joystick device of the G27, otherwise the GUI might be very slow: -[device selector](screenshots/device_selector.png) +![device selector](screenshots/device_selector.png) When everything is set correctly, press the Start button. You are presented with the calibration/configurtion GUI: -[gui screenshot](screenshots/gui_in_action.png) +![gui screenshot](screenshots/gui_in_action.png) On the upper right, you get some help text about what to do next. Using that everything shall be pretty self-explaining. The graphs in the lower part are for the pedals and the shifter respectively. You see the measurements over the last second depicted with the "+" marks. From 12e98092f72b5666e6d8f2ba47fe927ff0cb9e3c Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 16:29:59 +0200 Subject: [PATCH 7/9] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1ff235f..c5658bd 100644 --- a/README.md +++ b/README.md @@ -60,3 +60,5 @@ The first step is to decide for a suitable filtering. Depending on the wear of y Afterwards you probably want at least to calibrate your shifter by selecting the calibration values for the shifter on the upper left panel. Optionally you can also pre-calibrate your pedals such that the values are stored on the Arduino. The default is to use auto-calibration for the pedals. Note that there is the status line output with some profiling output on the left side and the final output values of the axis, buttons and gear value as delivered to the games. + +Last step is to save the settings to the Arduino's EEPROM using the respective button. You can test that this has been working by going back to the default calibration (plots should change) and then reloading the EEPROM calibration (plots should change to the desired values). Everytime you turn on the Arduino it loads the EEPROM calibration automatically from now on. From a0a7afb27fd9d8b5c0b267ff70312b2a250789f3 Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 19:24:16 +0200 Subject: [PATCH 8/9] Update README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c5658bd..126dc4a 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,11 @@ Arduino-based USB interface for Logitech G27 pedals and shifter: ![on breadboard](Breadboard.jpg) -![in altoids tin](Altoids Tin.jpg) +![in altoids tin](Altoids_Tin.jpg) + +## Credits + +This fork wouldn't have been possible without the great project from functionreturnfunction: https://github.com/functionreturnfunction/G27_Pedals_and_Shifter. I am going to maintain this fork as long as my G27 shifter and pedals live on. ## Required Parts/Materials From 1b5497001003039f219c2ce46c73cdac21f9a60f Mon Sep 17 00:00:00 2001 From: n-e-y-s <44730000+n-e-y-s@users.noreply.github.com> Date: Mon, 15 Jun 2020 19:27:36 +0200 Subject: [PATCH 9/9] remove spaces in filename --- Altoids Tin.jpg => Altoids_Tin.jpg | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename Altoids Tin.jpg => Altoids_Tin.jpg (100%) diff --git a/Altoids Tin.jpg b/Altoids_Tin.jpg similarity index 100% rename from Altoids Tin.jpg rename to Altoids_Tin.jpg