From 058362a53358c1968b183f88639005f813adb3bf Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 27 Jan 2021 14:19:36 +0100 Subject: [PATCH] Correctifs de bugs --- SimulatorDescriptor.h | 15 ++- SimulatorDescriptor.hid | Bin 664 -> 664 bytes ZenDrive Simulator/ZenDrive Simulator.ino | 109 +++++++++++++--------- ZenDrive Simulator/ZenDrive.cpp | 37 ++++++-- ZenDrive Simulator/ZenDrive.h | 3 +- sharedButtons/sharedButtons.ino | 4 +- 6 files changed, 105 insertions(+), 63 deletions(-) diff --git a/SimulatorDescriptor.h b/SimulatorDescriptor.h index 7c6b1d0..098f2f6 100644 --- a/SimulatorDescriptor.h +++ b/SimulatorDescriptor.h @@ -1,7 +1,7 @@ -// D:\Documents\Simulator project\SimulatorDescriptor.h +// D:\Documents\zendrive-simulator\SimulatorDescriptor.h -char ReportDescriptor[125] = { +char ReportDescriptor[122] = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x04, // USAGE (Joystick) 0xa1, 0x01, // COLLECTION (Application) @@ -45,8 +45,8 @@ char ReportDescriptor[125] = { 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x05, // REPORT_ID (5) 0x05, 0x09, // USAGE_PAGE (Button) - 0x19, 0x01, // USAGE_MINIMUM (Button 1) - 0x29, 0x0b, // USAGE_MAXIMUM (Button 11) + 0x19, 0x09, // USAGE_MINIMUM (Button 9) + 0x29, 0x13, // USAGE_MAXIMUM (Button 19) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x01, // REPORT_SIZE (1) @@ -56,15 +56,14 @@ char ReportDescriptor[125] = { 0x75, 0x05, // REPORT_SIZE (5) 0x81, 0x03, // INPUT (Cnst,Var,Abs) 0x05, 0x02, // USAGE_PAGE (Simulation Controls) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) 0xa1, 0x00, // COLLECTION (Physical) 0x09, 0xc8, // USAGE (Steering) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x01, // REPORT_COUNT (1) 0x81, 0x02, // INPUT (Data,Var,Abs) 0xc0, // END_COLLECTION - 0xc0, // END_COLLECTION - 0x05, 0x01 // USAGE_PAGE (Generic Desktop) + 0xc0 // END_COLLECTION }; diff --git a/SimulatorDescriptor.hid b/SimulatorDescriptor.hid index 71eed66282de6894a53f9c68ccc7241cb48a3b4b..2ec2aceac435c05ac39010be877f9ddef318b30a 100644 GIT binary patch delta 39 qcmbQiI)in?MMiE;22O^*3_zeMJoye|GIt}8`5VMnt)J}0 900) ZenDrive.switchSpeedR(); - else if(value > 800) ZenDrive.switchSpeed6(); - else if(value > 700) ZenDrive.switchSpeed5(); - else if(value > 600) ZenDrive.switchSpeed4(); - else if(value > 500) ZenDrive.switchSpeed3(); - else if(value > 400) ZenDrive.switchSpeed2(); - else if(value > 300) ZenDrive.switchSpeed1(); + int value = analogRead(SPEEDS_PIN); + if(value < 200) ZenDrive.switchSpeed1(); + else if(value < 326) ZenDrive.switchSpeed2(); + else if(value < 421) ZenDrive.switchSpeed3(); + else if(value < 493) ZenDrive.switchSpeed4(); + else if(value < 551) ZenDrive.switchSpeed5(); + else if(value < 596) ZenDrive.switchSpeed6(); + else if(value < 634) ZenDrive.switchSpeedR(); else ZenDrive.switchNeutral(); //Read handbrake ZenDrive.setHandbrake(map(analogRead(HANDBRAKE_PIN), 0, 1023, 0, 255)); @@ -93,8 +137,8 @@ void loop() { // Warning ZenDrive.setWarning(digitalRead(WARNING_PIN)); // Lights - if (digitalRead(LIGHTS_ON_PIN)) ZenDrive.switchLightsOn(); - else if(digitalRead(ROAD_LIGHTS_PIN)) ZenDrive.switchRoadLights(); + if (!digitalRead(LIGHTS_ON_PIN)) ZenDrive.switchLightsOn(); + else if(!digitalRead(ROAD_LIGHTS_PIN)) ZenDrive.switchRoadLights(); else ZenDrive.switchLightsOff(); // Head lights ZenDrive.setHeadLights(digitalRead(HEAD_LIGHTS_PIN)); @@ -103,35 +147,16 @@ void loop() { // Starter ZenDrive.setStarter(digitalRead(STARTER_PIN)); // Horn - ZenDrive.setHorn(digitalRead(HORN_PIN)); + ZenDrive.setHorn(!digitalRead(HORN_PIN)); // Cruise on - if(digitalRead(CRUISE_PIN)) ZenDrive.activeCruise(); + if(!digitalRead(CRUISE_PIN)) ZenDrive.activeCruise(); // Cruise up - if(digitalRead(CRUISE_UP_PIN)) ZenDrive.increaseCruise(); + if(!digitalRead(CRUISE_UP_PIN)) ZenDrive.increaseCruise(); // Cruise down - if(digitalRead(CRUISE_DOWN_PIN)) ZenDrive.decreaseCruise(); + if(!digitalRead(CRUISE_DOWN_PIN)) ZenDrive.decreaseCruise(); // Read direction ZenDrive.setDirection(map(analogRead(DIRECTION_PIN), 0, 1023, -127, 127)); // Send steering wheel states if they are changes if(ZenDrive.wheelNeedRefresh) ZenDrive.sendWheelStates(); - - // Read pin value - /*int clutchValue = map(analogRead(clutchPin), 0, 1023, 0, 255); - if(clutchValue < lastClutchState - 5 || clutchValue > lastClutchState + 5){ - //Serial.println(clutchValue); - ZenDrive.setHandbrake(clutchValue); - lastClutchState = clutchValue; - }*/ - - - /*for (int index = 0; index < 4; index++) - { - int currentButtonState = !digitalRead(index + pinToButtonMap); - if (currentButtonState != lastButtonState[index]) - { - Joystick.setButton(index, currentButtonState); - lastButtonState[index] = currentButtonState; - } - }*/ delay(50); } diff --git a/ZenDrive Simulator/ZenDrive.cpp b/ZenDrive Simulator/ZenDrive.cpp index 50255a8..ac33621 100644 --- a/ZenDrive Simulator/ZenDrive.cpp +++ b/ZenDrive Simulator/ZenDrive.cpp @@ -25,7 +25,7 @@ static const uint8_t _hidReportDescriptor[] PROGMEM = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x04, // USAGE (Joystick) 0xa1, 0x01, // COLLECTION (Application) - 0x85, GEARSHIFT_REPORT_ID, // REPORT_ID (3) + 0x85, 0x03, // REPORT_ID (3) 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // USAGE_MINIMUM (Button 1) 0x29, 0x08, // USAGE_MAXIMUM (Button 8) @@ -47,7 +47,7 @@ static const uint8_t _hidReportDescriptor[] PROGMEM = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x04, // USAGE (Joystick) 0xa1, 0x01, // COLLECTION (Application) - 0x85, PEDALS_REPORT_ID, // REPORT_ID (4) + 0x85, 0x04, // REPORT_ID (4) 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) @@ -63,10 +63,10 @@ static const uint8_t _hidReportDescriptor[] PROGMEM = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x04, // USAGE (Joystick) 0xa1, 0x01, // COLLECTION (Application) - 0x85, WHEEL_REPORT_ID, // REPORT_ID (5) + 0x85, 0x05, // REPORT_ID (5) 0x05, 0x09, // USAGE_PAGE (Button) - 0x19, 0x01, // USAGE_MINIMUM (Button 1) - 0x29, 0x0b, // USAGE_MAXIMUM (Button 11) + 0x19, 0x09, // USAGE_MINIMUM (Button 9) + 0x29, 0x13, // USAGE_MAXIMUM (Button 19) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x01, // REPORT_SIZE (1) @@ -76,15 +76,15 @@ static const uint8_t _hidReportDescriptor[] PROGMEM = { 0x75, 0x05, // REPORT_SIZE (5) 0x81, 0x03, // INPUT (Cnst,Var,Abs) 0x05, 0x02, // USAGE_PAGE (Simulation Controls) - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) 0xa1, 0x00, // COLLECTION (Physical) 0x09, 0xc8, // USAGE (Steering) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x01, // REPORT_COUNT (1) 0x81, 0x02, // INPUT (Data,Var,Abs) 0xc0, // END_COLLECTION - 0xc0 // END_COLLECTION + 0xc0 // END_COLLECTION }; ZenDrive_::ZenDrive_() @@ -108,7 +108,7 @@ ZenDrive_::ZenDrive_() steering = 0; } -void ZenDrive_::begin(bool initAutoSendState) +void ZenDrive_::begin() { // Sending initial states sendGearshiftStates(); @@ -293,6 +293,7 @@ void ZenDrive_::setBlinkerLeft(bool value) { bitSet(wheelCommands, 0); sendWheelStates(); + delay(50); bitClear(wheelCommands, 0); sendWheelStates(); isBlinkerLeft = !isBlinkerLeft; @@ -305,6 +306,7 @@ void ZenDrive_::setBlinkerRight(bool value) { bitSet(wheelCommands, 1); sendWheelStates(); + delay(50); bitClear(wheelCommands, 1); sendWheelStates(); isBlinkerRight = !isBlinkerRight; @@ -317,6 +319,7 @@ void ZenDrive_::setWarning(bool value) { bitSet(wheelCommands, 2); sendWheelStates(); + delay(50); bitClear(wheelCommands, 2); sendWheelStates(); isWarning = !isWarning; @@ -332,8 +335,10 @@ void ZenDrive_::switchLightsOn() for(int i = 0; i < steps; i++){ bitSet(wheelCommands, 3); sendWheelStates(); + delay(50); bitClear(wheelCommands, 3); sendWheelStates(); + delay(50); isLights = true; isRoadLights = false; } @@ -349,8 +354,10 @@ void ZenDrive_::switchRoadLights() for(int i = 0; i < steps; i++){ bitSet(wheelCommands, 3); sendWheelStates(); + delay(50); bitClear(wheelCommands, 3); sendWheelStates(); + delay(50); isLights = false; isRoadLights = true; } @@ -366,8 +373,10 @@ void ZenDrive_::switchLightsOff() for(int i = 0; i < steps; i++){ bitSet(wheelCommands, 3); sendWheelStates(); + delay(50); bitClear(wheelCommands, 3); sendWheelStates(); + delay(50); isLights = false; isRoadLights = false; } @@ -380,6 +389,7 @@ void ZenDrive_::setHeadLights(bool value) { bitSet(wheelCommands, 4); sendWheelStates(); + delay(50); bitClear(wheelCommands, 4); sendWheelStates(); isHeadLights = !isHeadLights; @@ -392,6 +402,7 @@ void ZenDrive_::setFogLights(bool value) { bitSet(wheelCommands, 5); sendWheelStates(); + delay(50); bitClear(wheelCommands, 5); sendWheelStates(); isFogLights = !isFogLights; @@ -404,6 +415,7 @@ void ZenDrive_::setStarter(bool value) { bitSet(wheelCommands, 6); sendWheelStates(); + delay(50); bitClear(wheelCommands, 6); sendWheelStates(); isStarter = !isStarter; @@ -416,6 +428,7 @@ void ZenDrive_::setHorn(bool value) { if(value) bitSet(wheelCommands, 7); else bitClear(wheelCommands, 7); + isHorn = !isHorn; wheelNeedRefresh = true; } } @@ -424,24 +437,30 @@ void ZenDrive_::activeCruise() { bitSet(wheelCommands, 8); sendWheelStates(); + delay(50); bitClear(wheelCommands, 8); sendWheelStates(); + wheelNeedRefresh = false; } void ZenDrive_::increaseCruise() { bitSet(wheelCommands, 9); sendWheelStates(); + delay(50); bitClear(wheelCommands, 9); sendWheelStates(); + wheelNeedRefresh = false; } void ZenDrive_::decreaseCruise() { bitSet(wheelCommands, 10); sendWheelStates(); + delay(50); bitClear(wheelCommands, 10); sendWheelStates(); + wheelNeedRefresh = false; } void ZenDrive_::setDirection(uint8_t value) diff --git a/ZenDrive Simulator/ZenDrive.h b/ZenDrive Simulator/ZenDrive.h index 7125d62..1e5958b 100644 --- a/ZenDrive Simulator/ZenDrive.h +++ b/ZenDrive Simulator/ZenDrive.h @@ -52,7 +52,7 @@ private: public: ZenDrive_(); - void begin(bool initAutoSendState = true); + void begin(); void end(); // Gearshift module @@ -66,7 +66,6 @@ public: void switchSpeed5(); void switchSpeed6(); void switchSpeedR(); - int currentHandbrake = 0; void setHandbrake(int8_t value); // Pedals module diff --git a/sharedButtons/sharedButtons.ino b/sharedButtons/sharedButtons.ino index 50e7a0e..d06a841 100644 --- a/sharedButtons/sharedButtons.ino +++ b/sharedButtons/sharedButtons.ino @@ -2,12 +2,12 @@ const int SHARED_BUTTONS = A1; void setup() { Serial.begin(9600); - pinMode(SHARED_BUTTONS, INPUT_PULLUP); + pinMode(SHARED_BUTTONS, INPUT); } void loop() { Serial.println(analogRead(SHARED_BUTTONS)); - delay(50); + delay(250); }