这仅能使车以极慢的速度完成全元素任务
前提条件:能够
舵机打角
电机任意转速转动
读取电感前瞻获取到的值
屏幕显示
数据存储与读取
按键菜单
会更好:
陀螺仪数值读取
激光测距
干簧管/霍尔检测
编码器数据读取
速度闭环
在初始化里放各器件及函数的初始化
在中断里
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Cnt++; KeyScanInt(); Beep_IntCnt(); Car_Protect(); //--------------------------电磁处理和元素判断-------------------------------// TOFGetData();//获取激光测距的值 Inductor_deal();//获取前瞻电感值及滤波归一化等 Ele_judge();//元素识别与识别后的处理 //----------------------------陀螺仪数值获取---------------------------------// if(Cnt% 5== 0 ) { ICM20602DataFilter();//陀螺仪获取数据 ICM_I_Int();//陀螺仪积分 } if(!StartCar){ //-------------------------------方向控制------------------------------------// if(Cnt% 5== 0) { DirectionControl();//舵机打角 } //-------------------------------速度控制------------------------------------// ExSpeedControl();//顺序不能错 DiffSpeedControl(); SpeedControl();//电机控制 }
对于元素判断
在车速很低的情况下
可以用模板匹配:
在发车前,手动采集元素入口的电感值
(用eeprom配合按键菜单,存储各个电感的值,标记为该元素)
还可以加上激光测距等辅助条件
复制代码
1
2
3
4
5
6
7
8#define value 1234 if (sqr(LNow[0]-Lreserve[0])+sqr(LNow[1]-Lreserve[1])+sqr(LNow[2]-Lreserve[2])+sqr(LNow[3]-Lreserve[3])+sqr(LNow[4]-Lreserve[4])+sqr(LNow[5]-Lreserve[5])+sqr(LNow[6]-Lreserve[6])+sqr(LNow[7]-Lreserve[7]) <=value) { fork_flag=1; fork_state=1; }
元素处理
判到元素之后,设置舵机及电机的变化
最后
以上就是欢呼摩托最近收集整理的关于智能车入门——实现低速完赛<新手从零做车>的全部内容,更多相关智能车入门——实现低速完赛<新手从零做车>内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复