Skip to content

Commit

Permalink
optimisations
Browse files Browse the repository at this point in the history
  • Loading branch information
captFuture committed May 19, 2022
1 parent aae5163 commit f51b525
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 31 deletions.
4 changes: 2 additions & 2 deletions data/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
{
"speed_max":300,
"speed_min":-300,
"steer_max":100,
"steer_min":-100,
"steer_max":200,
"steer_min":-200,
"accel":200,
"decel":200,
"boost":100,
Expand Down
10 changes: 5 additions & 5 deletions src/lvgl_loop.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ if (first == 0){
lv_label_set_text_fmt(label," ");
first = 1;
}
//lv_label_set_text_fmt(txt1, "speed: %d", driveSpeed );
lv_label_set_text_fmt(txt1, "SetSpeed: %d", forwardReverseInput );
lv_label_set_text_fmt(txt1, "speed: %d", driveSpeed );
//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);

Expand All @@ -18,9 +18,9 @@ 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);
lv_gauge_set_value (gauge3, 1, forwardReverseInput);
lv_gauge_set_value (gauge3, 2, myDrive);
//lv_gauge_set_value (gauge3, 0, forwardReverseValue);
//lv_gauge_set_value (gauge3, 1, forwardReverseInput);
//lv_gauge_set_value (gauge3, 2, myDrive);


if(motorOn){
Expand Down
4 changes: 2 additions & 2 deletions src/lvgl_setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -189,9 +189,9 @@
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_obj_align(led1, NULL, LV_ALIGN_CENTER, -50,-30);
lv_led_off(led1);

led2 = lv_led_create(tab5, NULL);
lv_obj_align(led2, NULL, LV_ALIGN_CENTER, -50,0);
lv_obj_align(led2, NULL, LV_ALIGN_CENTER, -100,-30);
lv_led_off(led2);
54 changes: 37 additions & 17 deletions src/main.ino
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ struct Config {
int speed_min;
int steer_max;
int steer_min;
int accel_min;
int decel_min;
unsigned int accel_min;
unsigned int decel_min;
int boost_max;
};

Expand All @@ -33,7 +33,7 @@ const char* password = config.passwd;
#define PIN_SCL 22
#define WII_I2C_PORT 0
#define READ_TASK_CPU 0
#define READ_DELAY 30
#define READ_DELAY 10
static unsigned int controller_type;

#define HOVER_SERIAL_BAUD 115200 // [-] Baud rate for HoverSerial (used to communicate with the hoverboard)
Expand Down Expand Up @@ -71,15 +71,16 @@ int16_t leftRightCalibration = 0;
int16_t forwardReverseCalibration = 0;
int16_t thresholdMovement = 100;
int16_t leftRightValue = 0;
int16_t leftRightInput = 0;
int16_t forwardReverseValue = 0;
int16_t forwardReverseInput = 0;
int16_t OLDleftRightValue = 0;
int16_t OLDforwardReverseValue = 0;
int16_t accel = config.accel_min; // Acceleration time [ms]
int16_t decel = config.accel_min; // Acceleration time [ms]
unsigned int accel = config.accel_min; // Acceleration time [ms]
unsigned int decel = config.accel_min; // Acceleration time [ms]
int16_t safetyCool = 10;


boolean rampDrive = false;
int16_t myDrive = 0;
int16_t oldmyDrive = 0;

Expand All @@ -105,6 +106,8 @@ typedef struct{
SerialFeedback Feedback;
SerialFeedback NewFeedback;

ramp speedRamp;

#include "lvgl_start.h"
#include "configload.h"

Expand All @@ -114,14 +117,15 @@ void setup()
M5.begin();
Serial.begin(SERIAL_BAUD);
HoverSerial.begin(HOVER_SERIAL_BAUD);
speedRamp.go(0);

while (!SPIFFS.begin()) {
Serial.println(F("Failed to initialize SPIFFS"));
bool formatted = SPIFFS.format();
if(formatted){
Serial.println("\n\nSuccess formatting");
Serial.println("\n\nSuccess formatting");
}else{
Serial.println("\n\nError formatting");
Serial.println("\n\nError formatting");
}
delay(1000);
}
Expand Down Expand Up @@ -158,21 +162,37 @@ int first = 0;

#include "hoverboard_telemetry.h"

void forWard(int16_t start, int16_t target){
void forWard(int16_t start, int16_t target, int8_t direction){
myDrive = start;
while(myDrive < target){
myDrive = myDrive + 1;
speedRamp.go(myDrive);
if(direction == 1){
speedRamp.go(target, 200, LINEAR, ONCEFORWARD); // accel
}else{
speedRamp.go(target, 500, LINEAR, ONCEBACKWARD); // decel
}
//myDrive = target;
while(speedRamp.getCompletion() < 100){
speedRamp.update();
lv_gauge_set_value (gauge3, 2, myDrive);
}

//myDrive = target;
oldmyDrive = myDrive;
}

void backWard(int16_t start, int16_t target){
void backWard(int16_t start, int16_t target, int8_t direction){
myDrive = start;
while(myDrive > target){
myDrive = myDrive - 1;
speedRamp.go(myDrive);
if(direction == 1){
speedRamp.go(target, 200, LINEAR, ONCEBACKWARD); // accel
}else{
speedRamp.go(target, 500, LINEAR, ONCEFORWARD); // decel
}
while(speedRamp.getCompletion() < 100){
speedRamp.update();
lv_gauge_set_value (gauge3, 2, myDrive);
}
//myDrive = target;

//myDrive = target;
oldmyDrive = myDrive;
}

Expand All @@ -198,7 +218,7 @@ void loop(void)
iTimeSend = millis();

if(motorOn == true){
SendCommand(leftRightValue, myDrive);
SendCommand(leftRightValue, myDrive * -1);
}else{
myDrive = 0;
SendCommand(0, 0);
Expand Down
38 changes: 33 additions & 5 deletions src/nunchuk.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,22 @@
}

// USART command 1000 is 1000 RPM
// 300 + 100 * 0,1,2,3,4 = 300, 400, 500, 600, 700
// speed 300 + 100 * 0,1,2,3,4 = 300, 400, 500, 600, 700
// steer 200 + 100 * 0,1,2,3,4 = 200, 300, 400, 500, 600
// mapped Value is sent to Controller and board speeds up

delay(200);
}

leftRightInput = state.x;
leftRightValue = state.x;
forwardReverseInput = state.y;
forwardReverseValue = state.y;
triggerstate = state.z;
switchState = state.c;

if( leftRightValue > -15 && leftRightValue < 15 ){
if( leftRightInput > - 5 && leftRightInput < 5 ){
leftRightInput = 0;
leftRightValue = 0;
}else{

Expand All @@ -50,10 +53,19 @@
forwardReverseInput = -50; // limit backward
}*/

leftRightValue = map(leftRightValue, -100, 100, config.steer_min, config.steer_max);
leftRightValue = map(leftRightInput, -100, 100, config.steer_min-(config.boost_max*configNum), config.steer_max+(config.boost_max*configNum));

if(leftRightValue > 500){
leftRightValue = 500;
}else if(leftRightValue < 300){
leftRightValue = 300;
}

forwardReverseValue = map(forwardReverseInput, -100, 100, config.speed_min-(config.boost_max*configNum), config.speed_max+(config.boost_max*configNum));

//myDrive = forwardReverseValue;
lv_gauge_set_value (gauge3, 0, forwardReverseValue);
lv_gauge_set_value (gauge3, 1, forwardReverseInput);

if(forwardReverseInput > -5 && forwardReverseInput < 5){
lv_led_off(led1);
Expand All @@ -66,12 +78,28 @@
if(forwardReverseInput > 5){ // forward
lv_led_off(led2);
lv_led_on(led1);
forWard(OLDforwardReverseValue, forwardReverseValue);
if(rampDrive){
if(OLDforwardReverseValue < forwardReverseValue){
forWard(OLDforwardReverseValue, forwardReverseValue, 1); // accel
}else{
forWard(OLDforwardReverseValue, forwardReverseValue, 0); // decel
}
}else{
myDrive = forwardReverseValue;
}

}else if(forwardReverseInput < -5){ // backward
lv_led_on(led2);
lv_led_off(led1);
backWard(OLDforwardReverseValue, forwardReverseValue);
if(rampDrive){
if(OLDforwardReverseValue > forwardReverseValue){
backWard(OLDforwardReverseValue, forwardReverseValue, 1); // accel
}else{
backWard(OLDforwardReverseValue, forwardReverseValue, 0); // decel
}
}else{
myDrive = forwardReverseValue;
}

}
}
Expand Down

0 comments on commit f51b525

Please sign in to comment.