智能车电磁循迹模块化(进阶)
大家应该都喜欢模块化后的函数,可以直接调用。我之前学习的时候经过总结,把大部分电磁循迹的函数模块化了,大家以这些为参考,提升自己的理解。
关于电磁循迹模块化的内容大家可以看看我之前写的博客(16条消息)智能车电磁循迹模块化(差速舵机通用)_智能车电磁循迹程序_A_Frost的博客-CSDN博客我把PID等算法写成了模块化的函数,尽量使用局部变量和形参,大家可以方便调用。
电感归一化好处是增强赛道的适应性
各电感值最大最小值最后是全局变量,方便全局有时候会用到。
再此之前得先对赛道进行扫描处理
floatAD_L_Max=2000,AD_L_Min=1000,AD_R_Max=2000,AD_R_Min=1000;floatAD_M_Max=2000,AD_M_Min=1000;floatAD_LV_Max=100,AD_LV_Min=50,AD_RV_Max=100,AD_RV_Min=50;voidInductor_Scan(){uint16L_temp[10],R_temp[10],M_temp[10],LV_temp[10],RV_temp[10];inti;for(i=0;iAD_L_Max)AD_L_Max=L_temp[i];if(L_temp[i]AD_R_Max)AD_R_Max=R_temp[i];if(R_temp[i]AD_M_Max)AD_M_Max=M_temp[i];if(M_temp[i]AD_LV_Max)AD_LV_Max=LV_temp[i];if(LV_temp[i]AD_RV_Max)AD_RV_Max=RV_temp[i];if(RV_temp[i]0){//0开始变化向左转动左减右加if(turn_engleSet_engle){last_engle_error=0;Control_enable_L=0;}}if(Set_engleSet_engle){engle_error=Set_engle-turn_engle;PD_engle_val=P*engle_error+D*(engle_error-last_engle_error);last_engle_error=engle_error;Control_enable_R=1;}elseif(turn_engle8000)PD_engle_val=8000;elseif(PD_engle_val