From aea62ec868ca5fdf0ff847df9804c39d26d95ac9 Mon Sep 17 00:00:00 2001 From: Fisch Date: Thu, 14 Jul 2022 20:05:22 +0200 Subject: [PATCH] make nrf coefficients adjustable via remote --- hoverbrettctrl/src/main.cpp | 46 +++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/hoverbrettctrl/src/main.cpp b/hoverbrettctrl/src/main.cpp index f05f234..73e1a0e 100644 --- a/hoverbrettctrl/src/main.cpp +++ b/hoverbrettctrl/src/main.cpp @@ -68,8 +68,8 @@ bool button_down_click=false; float speed_coefficient_nrf=1.0; // higher value == stronger float steer_coefficient_nrf=0.5; // higher value == stronger -#define SPEED_COEFFICIENT_GT 1 // higher value == stronger -#define STEER_COEFFICIENT_GT 0.5 // higher value == stronger +float speed_coefficient_gt=1.0; // higher value == stronger +float steer_coefficient_gt=0.5; // higher value == stronger unsigned long watchdogtimer=0; //set to current millis everytime new good control input is calculated @@ -462,9 +462,11 @@ void loop() { }else if ((lastnrfdata.commands & (1 << 2))>>0) { //up setup_directon_press_up = true; Serial.println("RF Button Up"); + speed_coefficient_nrf=1.0; }else if ((lastnrfdata.commands & (1 << 3))>>0) { //down setup_directon_press_down = true; Serial.println("RF Button Down"); + speed_coefficient_nrf=0.5; }else if ((lastnrfdata.commands & (1 << 4))>>0) { //right setup_directon_press_right = true; Serial.println("RF Button Right"); @@ -520,8 +522,8 @@ void loop() { //calculate speed l and r from speed and steer int16_t _out_speedl,_out_speedr; - _out_speedl = constrain(set_speed * speed_coefficient_nrf + set_steer * steer_coefficient_nrf, -1500, 1500); - _out_speedr = constrain(set_speed * speed_coefficient_nrf - set_steer * steer_coefficient_nrf, -1500, 1500); + _out_speedl = constrain(set_speed * speed_coefficient_nrf + set_steer * speed_coefficient_nrf * steer_coefficient_nrf, -1500, 1500); + _out_speedr = constrain(set_speed * speed_coefficient_nrf - set_steer * speed_coefficient_nrf * steer_coefficient_nrf, -1500, 1500); esc.setSpeed(_out_speedl,_out_speedr); } }//if pastpacket not ok, keep last out_steer and speed values until disarmed @@ -591,8 +593,8 @@ void loop() { if (loopmillis - last_controlupdate > CONTROLUPDATEPERIOD) { last_controlupdate = loopmillis; int16_t _out_speedl,_out_speedr; - _out_speedl = constrain(set_speed * SPEED_COEFFICIENT_GT + set_steer * STEER_COEFFICIENT_GT, -1000, 1000)*safetymultiplier; - _out_speedr = constrain(set_speed * SPEED_COEFFICIENT_GT - set_steer * STEER_COEFFICIENT_GT, -1000, 1000)*safetymultiplier; + _out_speedl = constrain(set_speed * speed_coefficient_gt + set_steer * speed_coefficient_gt * steer_coefficient_gt, -1000, 1000)*safetymultiplier; + _out_speedr = constrain(set_speed * speed_coefficient_gt - set_steer * speed_coefficient_gt * steer_coefficient_gt, -1000, 1000)*safetymultiplier; esc.setSpeed(_out_speedl,_out_speedr); } } @@ -614,8 +616,8 @@ void loop() { set_speed = set_speed*(1.0-filter_stop_set_speed); //simple Filter set_steer = set_steer*(1.0-filter_stop_set_steer); int16_t _out_speedl,_out_speedr; - _out_speedl = constrain(set_speed * speed_coefficient_nrf + set_steer * steer_coefficient_nrf, -1500, 1500); - _out_speedr = constrain(set_speed * speed_coefficient_nrf - set_steer * steer_coefficient_nrf, -1500, 1500); + _out_speedl = constrain(set_speed * speed_coefficient_nrf + set_steer * speed_coefficient_nrf * steer_coefficient_nrf, -1500, 1500); + _out_speedr = constrain(set_speed * speed_coefficient_nrf - set_steer * speed_coefficient_nrf * steer_coefficient_nrf, -1500, 1500); esc.setSpeed(_out_speedl,_out_speedr); } } @@ -630,8 +632,8 @@ void loop() { set_speed = set_speed*(1.0-filter_stop_set_speed); //simple Filter set_steer = set_steer*(1.0-filter_stop_set_steer); int16_t _out_speedl,_out_speedr; - _out_speedl = constrain(set_speed * speed_coefficient_nrf + set_steer * steer_coefficient_nrf, -1500, 1500); - _out_speedr = constrain(set_speed * speed_coefficient_nrf - set_steer * steer_coefficient_nrf, -1500, 1500); + _out_speedl = constrain(set_speed * speed_coefficient_nrf + set_steer * speed_coefficient_nrf * steer_coefficient_nrf, -1500, 1500); + _out_speedr = constrain(set_speed * speed_coefficient_nrf - set_steer * speed_coefficient_nrf * steer_coefficient_nrf, -1500, 1500); esc.setSpeed(_out_speedl,_out_speedr); } } @@ -862,6 +864,26 @@ void updateInputs(unsigned long loopmillis) { } } break; + case 1: // speed_coefficient_gt + if (button_inc_click) { + speed_coefficient_gt+=0.05; + speed_coefficient_gt = constrain(speed_coefficient_gt, 0.05, 1.0); + } + if (button_dec_click) { + speed_coefficient_gt-=0.05; + speed_coefficient_gt = constrain(speed_coefficient_gt, 0.05, 1.0); + } + break; + case 2: // steer_coefficient_gt + if (button_inc_click) { + steer_coefficient_gt+=0.05; + steer_coefficient_gt = constrain(steer_coefficient_gt, 0.05, 1.0); + } + if (button_dec_click) { + steer_coefficient_gt-=0.05; + steer_coefficient_gt = constrain(steer_coefficient_gt, 0.05, 1.0); + } + break; } @@ -1070,10 +1092,10 @@ void display_show_menu() { display.print(F("# Page 2 / ")); display.print(MENU_PAGES-1); display.print(F(" GT #")); display.println(); break; case 1: - display.print(F("speed_coeff_gt=")); display.println(SPEED_COEFFICIENT_GT,2); + display.print(F("speed_coeff_gt=")); display.println(speed_coefficient_gt,2); break; case 2: - display.print(F("steer_coeff_gt=")); display.println(STEER_COEFFICIENT_GT,2); + display.print(F("steer_coeff_gt=")); display.println(steer_coefficient_gt,2); break; case 3: