#include <iostream>
#include <fstream>
#include <vector>
/*
定
义
电
机
速
度
曲
线类
型
枚
举
*/
typedef enum SpeedCurve {
CURVE_NONE = 0, //
直
启
CURVE_TRAP = 1, //
梯
形
曲
线
CURVE_SPTA = 2 //S
型
曲
线
}SpeedCurveType;
/*
定
义
电
机
速
度
曲
线
对
象
*/
typedef struct CurveObject {
float startSpeed; //
开
始
调
速
时
的
初
始
速
度
float currentSpeed; //
当
前
速
度
float targetSpeed; //
⽬
标
速
度
float stepSpeed; //
加
速
度
float speedMax; //
最
⼤
速
度
float speedMin; //
最
⼩
速
度
uint32_t aTimes; //
调
速
时
间
uint32_t maxTimes; //
调
速
跨
度
SpeedCurveType curveMode; //
曲
线类
型
float flexible; //S
曲
线
拉
伸
度
}CurveObjectType;
static void CalCurveNone(CurveObjectType* trap);
static void CalCurveTRAP(CurveObjectType* trap);
static void CalCurveSPTA(CurveObjectType* spta);
void (*pCalCurve[])(CurveObjectType* curve) = { CalCurveNone,CalCurveTRAP
,CalCurveSPTA };
/*
电
机曲
线
加减
速
操
作
-------------------------------------------------------
- */
void MotorVelocityCurve(CurveObjectType* curve)
{
float temp = 0;
if (curve->targetSpeed > curve->speedMax)
{
curve->targetSpeed = curve->speedMax;
}
if (curve->targetSpeed < curve->speedMin)
{
curve->targetSpeed = curve->speedMin;