diff --git a/controller_teensy/src/main.cpp b/controller_teensy/src/main.cpp index 0de8403..744650c 100644 --- a/controller_teensy/src/main.cpp +++ b/controller_teensy/src/main.cpp @@ -23,7 +23,7 @@ unsigned long last_log_send=0; #define LOGMININTERVAL 20 //minimum interval (ms) to send logs #define LOGMAXINTERVAL 10000 //maximum time (ms) after which data is send -#define WRITE_HEADER_TIME 1000 +#define WRITE_HEADER_TIME 400 //just before FEEDBACKRECEIVETIMEOUT, so header gets written before error comments bool log_header_written = false; @@ -112,12 +112,12 @@ SerialCommand CommandFront; SerialCommand CommandRear; -typedef struct{ +typedef struct{ //match this struct to hoverboard-firmware SerialFeedback struct in main.c uint16_t start; int16_t cmd1; int16_t cmd2; - int16_t speedL_meas; //left speed is negative when driving forward - int16_t speedR_meas; //right speed is positive when driving forward + int16_t speedR_meas; //right speed is negatie when driving forward + int16_t speedL_meas; //left speed is positive when driving forward int16_t batVoltage; int16_t boardTemp; int16_t curL_DC; //negative values are current consumed. positive values mean generated current @@ -130,8 +130,8 @@ SerialFeedback NewFeedbackFront; SerialFeedback FeedbackRear; SerialFeedback NewFeedbackRear; -#define CURRENT_FILTER_SIZE 20 //latency is about CURRENT_FILTER_SIZE/2*MEASURE_INTERVAL (measure interval is defined by hoverboard controller) -#define CURRENT_MEANVALUECOUNT 4 //0<= meanvaluecount < CURRENT_FILTER_SIZE/2. how many values will be used from sorted weight array from the center region. abour double this values reading are used +#define CURRENT_FILTER_SIZE 40 //latency is about CURRENT_FILTER_SIZE/2*MEASURE_INTERVAL (measure interval is defined by hoverboard controller) +#define CURRENT_MEANVALUECOUNT 10 //0<= meanvaluecount < CURRENT_FILTER_SIZE/2. how many values will be used from sorted weight array from the center region. abour double this values reading are used typedef struct{ int16_t curL_DC[CURRENT_FILTER_SIZE] = {0}; //current will be inverted for this so positive value means consumed current int16_t curR_DC[CURRENT_FILTER_SIZE] = {0}; @@ -359,10 +359,10 @@ void writeLog(HardwareSerial &SerialRef, unsigned long time, MotorParameter &mpf SerialRef.print(mprear.filtered_curL,3); SerialRef.print(","); SerialRef.print(mprear.filtered_curR,3); SerialRef.print(","); - SerialRef.print(-fbfront.speedL_meas); SerialRef.print(","); //invert speed, because left wheels are negated - SerialRef.print(fbfront.speedR_meas); SerialRef.print(","); - SerialRef.print(-fbrear.speedL_meas); SerialRef.print(","); //invert speed, because left wheels are negated - SerialRef.print(fbrear.speedR_meas); SerialRef.print(","); + SerialRef.print(fbfront.speedL_meas); SerialRef.print(","); //invert speed, because left wheels are negated + SerialRef.print(-fbfront.speedR_meas); SerialRef.print(","); + SerialRef.print(fbrear.speedL_meas); SerialRef.print(","); //invert speed, because left wheels are negated + SerialRef.print(-fbrear.speedR_meas); SerialRef.print(","); SerialRef.print(fbfront.boardTemp/10.0); SerialRef.print(","); //in degC SerialRef.print(fbrear.boardTemp/10.0); SerialRef.print(","); //in degC @@ -569,7 +569,7 @@ void readButtons() { if (button_start_state) { //pressed if ( (loopmillis> button_start_lastchange + LONG_PRESS_ARMING_TIME)) { //pressed long - if (throttle_pos<=0 && brake_pos<=0 && !armed) { //brake or thottle not pressed + if (throttle_pos<=0 && brake_pos<=0 && controllers_connected && !armed) { //brake or thottle not pressed, controllers connected armed=true; //arm if button pressed long enough writeLogComment(Serial1,loopmillis, "Armed by button"); }