diff --git a/src/receiver.cpp b/src/receiver.cpp index 8a8f162..baa3344 100644 --- a/src/receiver.cpp +++ b/src/receiver.cpp @@ -8,6 +8,7 @@ #define esc1pin 15 #define esc2pin 13 #define fallbackpin 36 +#define failsafeValue 127 Servo esc1; @@ -72,8 +73,8 @@ void setup() { // Init escs, min and max value similar as Traxxas TQI 1100, 1900 // chanel, minAngel, maxAngel, minPulseWidth, maxPulseWidth - esc1.attach(esc1pin, 0, 0, 180, 1100, 1900); - esc2.attach(esc2pin, 1, 0, 180, 1100, 1900); + esc1.attach(esc1pin, 0, 0, 255, 1100, 1900); + esc2.attach(esc2pin, 1, 0, 255, 1100, 1900); //Set device in AP mode to begin with WiFi.mode(WIFI_AP); @@ -103,7 +104,8 @@ void setup() { void loop() { if(millis() - lastPacket > CONNECTION_TIMEOUT ) { isConnected = false; - int failsafeValue = map(analogRead(fallbackpin), 0, 4095, 0, 180); + //int failsafeValue = map(analogRead(fallbackpin), 0, 4095, 0, 180); + // Taking 127 because it should be the center value anyway writeServos(failsafeValue, failsafeValue); display.clear(); char buf[25]; diff --git a/src/remote.cpp b/src/remote.cpp index a43c9aa..0f7d379 100644 --- a/src/remote.cpp +++ b/src/remote.cpp @@ -36,22 +36,24 @@ const byte numOfSettings = 11; const float minVoltage = 3.2; const float maxVoltage = 4.1; +const float refVoltage = 3.3; + // Global copy of slave esp_now_peer_info_t slave; #define CHANNEL 3 #define PRINTSCANRESULTS 0 #define DELETEBEFOREPAIR 0 -#define HAL_MIN 1290 -#define HAL_MAX 2285 -#define HAL_CENTER 1785 +#define HAL_MIN 1390 +#define HAL_MAX 2260 +#define HAL_CENTER 1890 #define TRIM_LOW 180 #define TRIM_HIGH 0 //#define pairingMode #define leverPin 36 -#define triggerPin 37 -#define batteryMeasurePin 35 +#define triggerPin 17 +#define batteryMeasurePin 38 // ESPNOW functions ############################## @@ -193,7 +195,7 @@ bool manageSlave() { // send data void sendData() { - uint8_t esc1 = map(analogRead(leverPin), HAL_MIN, HAL_MAX, TRIM_LOW, TRIM_HIGH); + uint8_t esc1 = sendThrottle; uint8_t esc2 = esc1; const uint8_t data[] = { esc1, esc2 }; // no mixture for the normal mode @@ -252,7 +254,7 @@ void calculateThrottlePosition() { total += analogRead(leverPin); } hallMeasurement = total / 10; - + Serial.println(hallMeasurement); //DEBUG_PRINT( (String)hallMeasurement ); if (hallMeasurement >= HAL_CENTER) { @@ -271,16 +273,13 @@ float batteryVoltage() { float batteryVoltage = 0.0; int total = 0; - return 3.6; // for now always full -/* - for (int i = 0; i < 10; i++) { + for (int i = 0; i < 10; i++) { total += analogRead(batteryMeasurePin); - } + } - batteryVoltage = (refVoltage / 1024.0) * ((float)total / 10.0); - - return batteryVoltage; - */ + batteryVoltage = (refVoltage / 4096.0) * ((float)total / 10.0); + Serial.println(batteryVoltage); + return batteryVoltage; } // Function used to indicate the remotes battery level. @@ -392,84 +391,47 @@ void drawTitleScreen(String title) { delay(1500); } -void drawPage() { - /* - int decimals; - float value; - String suffix; - String prefix; +void drawBoardVoltage() { - int first, last; + int x = 0; + int y = 16; + String suffix = "V"; + String prefix = "BATTERY"; + float value = 0.0; // TODO: No info this yet, measure in the board - int x = 0; - int y = 16; + // Display prefix (title) + displayString = prefix; + displayString.toCharArray(displayBuffer, 10); + u8g2.setFont(u8g2_font_profont12_tr); + u8g2.drawStr(x, y - 1, displayBuffer); - // Rotate the realtime data each 4s. - if ((millis() - lastDataRotation) >= 4000) { + // Split up the float value: a number, b decimals. + int first = abs(floor(value)); + int last = value * pow(10, 3) - first * pow(10, 3); - lastDataRotation = millis(); - displayData++; + // Add leading zero + if (first <= 9) { + displayString = "0" + (String)first; + } else { + displayString = (String)first; + } - if (displayData > 2) { - displayData = 0; - } - } + // Display numbers + displayString.toCharArray(displayBuffer, 10); + u8g2.setFont(u8g2_font_logisoso22_tn ); + u8g2.drawStr(x + 55, y + 13, displayBuffer); - switch (displayData) { - case 0: - value = ratioRpmSpeed * data.rpm; - suffix = "KMH"; - prefix = "SPEED"; - decimals = 1; - break; - case 1: - value = ratioPulseDistance * data.tachometerAbs; - suffix = "KM"; - prefix = "DISTANCE"; - decimals = 2; - break; - case 2: - value = data.inpVoltage; - suffix = "V"; - prefix = "BATTERY"; - decimals = 1; - break; - } + // Display decimals + displayString = "." + (String)last; + displayString.toCharArray(displayBuffer, 3); + u8g2.setFont(u8g2_font_profont12_tr); + u8g2.drawStr(x + 86, y - 1, displayBuffer); - // Display prefix (title) - displayString = prefix; - displayString.toCharArray(displayBuffer, 10); - u8g2.setFont(u8g2_font_profont12_tr); - u8g2.drawStr(x, y - 1, displayBuffer); - - // Split up the float value: a number, b decimals. - first = abs(floor(value)); - last = value * pow(10, 3) - first * pow(10, 3); - - // Add leading zero - if (first <= 9) { - displayString = "0" + (String)first; - } else { - displayString = (String)first; - } - - // Display numbers - displayString.toCharArray(displayBuffer, 10); - u8g2.setFont(u8g2_font_logisoso22_tn ); - u8g2.drawStr(x + 55, y + 13, displayBuffer); - - // Display decimals - displayString = "." + (String)last; - displayString.toCharArray(displayBuffer, decimals + 2); - u8g2.setFont(u8g2_font_profont12_tr); - u8g2.drawStr(x + 86, y - 1, displayBuffer); - - // Display suffix - displayString = suffix; - displayString.toCharArray(displayBuffer, 10); - u8g2.setFont(u8g2_font_profont12_tr); - u8g2.drawStr(x + 86 + 2, y + 13, displayBuffer); - */ + // Display suffix + displayString = suffix; + displayString.toCharArray(displayBuffer, 10); + u8g2.setFont(u8g2_font_profont12_tr); + u8g2.drawStr(x + 86 + 2, y + 13, displayBuffer); } void drawSettingsMenu() { @@ -519,11 +481,11 @@ void updateMainDisplay() { do { if (changeSettings == true) { - //drawSettingsMenu(); + drawSettingsMenu(); drawSettingNumber(); } else { drawThrottle(); - drawPage(); + drawBoardVoltage(); drawBatteryLevel(); drawSignal(); } @@ -564,12 +526,12 @@ void setup() { Serial.println("ESPNowSkate Sender"); u8g2.begin(); drawStartScreen(); -/* - if (triggerActive()) { + + if (triggerActive()) { changeSettings = true; drawTitleScreen("Remote Settings"); - } - */ + } + // This is the mac address of the Master in Station Mode Serial.print("STA MAC: "); Serial.println(WiFi.macAddress()); @@ -599,17 +561,6 @@ void loop() { // Call function to update display and LED updateMainDisplay(); - - /* update Value - char buf[10]; - sprintf(buf, "%i", map(analogRead(leverPin), HAL_MIN, HAL_MAX, TRIM_LOW, TRIM_HIGH)); - u8g2.firstPage(); - do { - u8g2.setFont(u8g2_font_10x20_tr ); - u8g2.drawStr(0, 20, buf); - } while ( u8g2.nextPage() ); - */ - calculateThrottlePosition(); if (changeSettings == true) { @@ -633,7 +584,17 @@ void loop() { if (isPaired) { // pair success or already paired // Send data to device + sendData(); + /* update Value + char buf[10]; + sprintf(buf, "%i", map(analogRead(leverPin), HAL_MIN, HAL_MAX, TRIM_LOW, TRIM_HIGH)); + u8g2.firstPage(); + do { + u8g2.setFont(u8g2_font_10x20_tr ); + u8g2.drawStr(0, 20, buf); + } while ( u8g2.nextPage() ); + */ } else { // slave pair failed