int16_t Odometry::calculatePwmTarget(uint8_t motor) { if(motor == MOTOR_RIGHT) return mPid_r_.calcPwmTarget(ticksPerSecond(MOTOR_RIGHT)); else return mPid_l_.calcPwmTarget(ticksPerSecond(MOTOR_LEFT)); }
int16_t Odometry::calculatePwmTarget(uint8_t motor, uint8_t output) { float avg, current; if(motor == MOTOR_RIGHT){ current = ticksPerSecond(MOTOR_RIGHT); mRightRing.write(current); avg = mRightRing.readAvg(); //belongs to tabular output if(output){ Serial.print((int) avg); Serial.print('\t'); } return mPid_r_.calcPwmTarget(avg); } else{ current = ticksPerSecond(MOTOR_LEFT); mLeftRing.write(current); avg = mLeftRing.readAvg(); //belongs to tabular output if(output){ Serial.print((int) avg); Serial.print('\t'); } return mPid_l_.calcPwmTarget(avg); } }
LPXLFOPER EXCEL_EXPORT xlSystemTime( LPXLFOPER ticksPerSeconda) { EXCEL_BEGIN; if (XlfExcel::Instance().IsCalledByFuncWiz()) return XlfOper(true); XlfOper ticksPerSecondb( (ticksPerSeconda)); CellMatrix ticksPerSecondc( ticksPerSecondb.AsCellMatrix("ticksPerSecondc")); DoubleOrNothing ticksPerSecond( DoubleOrNothing(ticksPerSecondc,"ticksPerSecond")); double t = (clock()+0.0)/CLOCKS_PER_SEC; double result( SystemTime( ticksPerSecond) ); t = (clock()+0.0)/CLOCKS_PER_SEC-t; CellMatrix resultCells(result); CellMatrix time(1,2); time(0,0) = "time taken"; time(0,1) = t; resultCells.PushBottom(time); return XlfOper(resultCells); EXCEL_END }