diff --git a/data/config.json b/data/config.json index 7df4dba..f3ca2ec 100644 --- a/data/config.json +++ b/data/config.json @@ -4,8 +4,8 @@ "passwd": "chillfumml", "speedprofile":[ { - "speed_max":-300, - "speed_min":300, + "speed_max":300, + "speed_min":-300, "steer_max":100, "steer_min":-100, "accel":200, diff --git a/src/lvgl_loop.h b/src/lvgl_loop.h index e5039a7..da4df9a 100644 --- a/src/lvgl_loop.h +++ b/src/lvgl_loop.h @@ -7,7 +7,7 @@ if (first == 0){ first = 1; } //lv_label_set_text_fmt(txt1, "speed: %d", driveSpeed ); -lv_label_set_text_fmt(txt1, "SetSpeed: %d", myDrive ); +lv_label_set_text_fmt(txt1, "SetSpeed: %d", forwardReverseInput ); lv_label_set_text_fmt(txt2, "configNum: %d", configNum); lv_label_set_text_fmt(txt3, "%d", configNum); @@ -18,7 +18,7 @@ lv_gauge_set_value (gauge, 0, driveSpeed ); //lv_gauge_set_value (gauge, 1, sentSpeed ); lv_gauge_set_value (gauge2, 0, batVoltage ); -lv_gauge_set_value (gauge3, 0, forwardReverseValue*-1); +lv_gauge_set_value (gauge3, 0, forwardReverseValue); lv_gauge_set_value (gauge3, 1, forwardReverseInput); lv_gauge_set_value (gauge3, 2, myDrive); diff --git a/src/lvgl_setup.h b/src/lvgl_setup.h index e69f3cd..1a5cacc 100644 --- a/src/lvgl_setup.h +++ b/src/lvgl_setup.h @@ -26,6 +26,7 @@ lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "SPEED"); lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "INPUT"); lv_obj_t *tab4 = lv_tabview_add_tab(tabview, "BATTERY"); + lv_obj_t *tab5 = lv_tabview_add_tab(tabview, "Chart"); lv_tabview_set_tab_act(tabview, tab_pos, false); // display position static lv_style_t st; lv_style_init(&st); lv_style_set_bg_color(&st,LV_STATE_DEFAULT,lv_color_hex(0x049CD8)); @@ -149,9 +150,9 @@ //------------------------------------------------------------------- - // Batterx GAUGE tab4 ================================================== + // Batterx GAUGE tab4 ================================================== // Gauge : https://docs.lvgl.io/latest/en/html/widgets/gauge.html - // Create a gauge on tab2 =========================================== + // Create a gauge on tab4 =========================================== static lv_style_t st5; lv_style_init(&st5); lv_style_set_text_font(&st5,LV_STATE_DEFAULT,&lv_font_montserrat_16); lv_page_set_scrollbar_mode(tab4, LV_SCROLLBAR_MODE_OFF); //scroll off @@ -171,4 +172,26 @@ lv_obj_align( label4, NULL, LV_ALIGN_CENTER, 0, 0); lv_label_set_text( label4, "Battery\n\n\n\n\nmAh"); lv_gauge_set_critical_value(gauge2, 3600); - //------------------------------------------------------------------- \ No newline at end of file + //------------------------------------------------------------------- + + // speed CHART tab5 ================================================== + // Chart : https://docs.lvgl.io/latest/en/html/widgets/chart.html + // Create a chart on tab5 =========================================== + + chart = lv_chart_create(tab5, NULL); + lv_obj_set_size( chart, screenWidth -20, screenHeight -20); // size + lv_obj_align( chart, NULL, LV_ALIGN_CENTER, 0, 0); + lv_chart_set_type( chart, LV_CHART_TYPE_LINE); + lv_chart_set_range(chart, -800, 800); // y axis + + ser1 = lv_chart_add_series(chart,LV_COLOR_BLUE); + ser2 = lv_chart_add_series(chart, LV_COLOR_RED); + ser3 = lv_chart_add_series(chart, LV_COLOR_GREEN); + + led1 = lv_led_create(tab5, NULL); + lv_obj_align(led1, NULL, LV_ALIGN_CENTER, 0,0); + lv_led_off(led1); + + led2 = lv_led_create(tab5, NULL); + lv_obj_align(led2, NULL, LV_ALIGN_CENTER, -50,0); + lv_led_off(led2); \ No newline at end of file diff --git a/src/lvgl_start.h b/src/lvgl_start.h index 8735c46..8204e61 100644 --- a/src/lvgl_start.h +++ b/src/lvgl_start.h @@ -16,9 +16,17 @@ static lv_obj_t * label; static lv_obj_t * gauge; static lv_obj_t * gauge2; static lv_obj_t * gauge3; +static lv_obj_t * chart; +static lv_chart_series_t * ser1; +static lv_chart_series_t * ser2; +static lv_chart_series_t * ser3; +static lv_obj_t * led1; +static lv_obj_t * led2; + static lv_obj_t * tabview; + uint32_t period = 10; // -int tb = 4; // Number of tabs +int tb = 5; // Number of tabs int tab_pos = 0; int time_count = 0; diff --git a/src/main.ino b/src/main.ino index 01aeca5..bb0b2e2 100644 --- a/src/main.ino +++ b/src/main.ino @@ -158,32 +158,28 @@ int first = 0; #include "hoverboard_telemetry.h" -void accelerAte(int16_t start, int16_t target){ - /*myDrive = start; - while(myDrive > target){ - myDrive = myDrive - 1; - }*/ - myDrive = target; - - oldmyDrive = myDrive; - OLDforwardReverseValue = target; // start = target -} - -void decelerAte(int16_t start, int16_t target){ - /*myDrive = start; - while(myDrive < target){ - myDrive = myDrive + 1; - }*/ - myDrive = target; + void forWard(int16_t start, int16_t target){ + myDrive = start; + while(myDrive < target){ + myDrive = myDrive + 1; + } + //myDrive = target; + oldmyDrive = myDrive; + } - oldmyDrive = myDrive; - OLDforwardReverseValue = target; // start = target -} + void backWard(int16_t start, int16_t target){ + myDrive = start; + while(myDrive > target){ + myDrive = myDrive - 1; + } + //myDrive = target; + oldmyDrive = myDrive; + } -void calibrateCenter(int16_t statex, int16_t statey){ - leftRightCalibration = statex; - forwardReverseCalibration = statey; -} + void calibrateCenter(int16_t statex, int16_t statey){ + leftRightCalibration = statex; + forwardReverseCalibration = statey; + } // ########################## LOOP ########################## @@ -207,6 +203,11 @@ void loop(void) myDrive = 0; SendCommand(0, 0); } + + + lv_chart_set_next(chart, ser1, forwardReverseInput); + lv_chart_set_next(chart, ser2, forwardReverseValue); + lv_chart_set_next(chart, ser3, myDrive); } } diff --git a/src/nunchuk.h b/src/nunchuk.h index 0830d13..d594e00 100644 --- a/src/nunchuk.h +++ b/src/nunchuk.h @@ -32,15 +32,18 @@ if( leftRightValue > -15 && leftRightValue < 15 ){ leftRightValue = 0; }else{ - leftRightValue = leftRightValue - leftRightCalibration; + } if(forwardReverseInput > -15 && forwardReverseInput < 15){ + forwardReverseInput = 0; forwardReverseValue = 0; - }else if(forwardReverseInput < config.speed_max+(config.boost_max*configNum) && forwardReverseInput > config.speed_min+(config.boost_max*configNum)){ - forwardReverseValue = 0; + }else if(forwardReverseInput < config.speed_min-(config.boost_max*configNum)){ + forwardReverseValue = config.speed_min-(config.boost_max*configNum); + }else if(forwardReverseInput > config.speed_max+(config.boost_max*configNum)){ + forwardReverseValue = config.speed_max+(config.boost_max*configNum); }else{ - forwardReverseValue = forwardReverseValue - forwardReverseCalibration; + } /*if(forwardReverseInput < -50){ @@ -48,16 +51,33 @@ }*/ leftRightValue = map(leftRightValue, -100, 100, config.steer_min, config.steer_max); - forwardReverseValue = map(forwardReverseInput, -100, 100, config.speed_min+(config.boost_max*configNum), config.speed_max-(config.boost_max*configNum)); + forwardReverseValue = map(forwardReverseInput, -100, 100, config.speed_min-(config.boost_max*configNum), config.speed_max+(config.boost_max*configNum)); + + //myDrive = forwardReverseValue; + + if(forwardReverseInput > -5 && forwardReverseInput < 5){ + lv_led_off(led1); + lv_led_off(led2); + myDrive = 0; + }else{ + lv_led_on(led1); + lv_led_on(led2); + if(forwardReverseInput > 5){ // forward + lv_led_off(led2); + lv_led_on(led1); + forWard(OLDforwardReverseValue, forwardReverseValue); - if(OLDforwardReverseValue > forwardReverseValue){ // brake - //decelerAte(OLDforwardReverseValue, forwardReverseValue); - myDrive = forwardReverseValue; - }else if(OLDforwardReverseValue < forwardReverseValue){ - //accelerAte(OLDforwardReverseValue, forwardReverseValue); - myDrive = forwardReverseValue; + }else if(forwardReverseInput < -5){ // backward + lv_led_on(led2); + lv_led_off(led1); + backWard(OLDforwardReverseValue, forwardReverseValue); + + } } + + OLDforwardReverseValue = forwardReverseValue; + //float SentSpeedFactor = 2.0 * 3.14 * 0.08255 * 60 /1000; //float tempSentSpeed = (float)forwardReverseValue * SentSpeedFactor;