|
STM32紅外避障程序
單片機(jī)源程序如下:
- //連接方式 :請(qǐng)參考interface.h文件
- //部份源碼來(lái)源網(wǎng)絡(luò)--請(qǐng)?jiān)囉?4小時(shí)后刪除
- #include "stm32f10x.h"
- #include "interface.h"
- #include "LCD1602.h"
- #include "IRCtrol.h"
- #include "motor.h"
- #include "UltrasonicCtrol.h"
- //全局變量定義
- unsigned int speed_count=0;//占空比計(jì)數(shù)器 50次一周期
- char front_left_speed_duty=SPEED_DUTY;
- char front_right_speed_duty=SPEED_DUTY;
- char behind_left_speed_duty=SPEED_DUTY;
- char behind_right_speed_duty=SPEED_DUTY;
- unsigned char tick_5ms = 0;//5ms計(jì)數(shù)器,作為主函數(shù)的基本周期
- unsigned char tick_1ms = 0;//1ms計(jì)數(shù)器,作為電機(jī)的基本計(jì)數(shù)器
- unsigned char tick_200ms = 0;//刷新顯示
- char ctrl_comm = COMM_STOP;//控制指令
- char ctrl_comm_last = COMM_STOP;//上一次的指令
- unsigned char continue_time=0;
- unsigned char duoji_count=0;
- unsigned char zhuanjiao = 11;
- char ctrl_comm1 = COMM_UP;//控制指令
- ////全局變量定義
- unsigned char const table3[]=" GOGO ";
- unsigned char const table4[]=" STOP ";
- ///獲取前方的距離,進(jìn)來(lái)前方向?yàn)橄蚯?br />
- void GetAllDistance(unsigned int *dis_direct)
- {
- CarStop();
- GetDistanceDelay();
- *dis_direct = distance_cm;
- LCD1602WriteDistance(distance_cm);
-
- }
- void BarrierProc()
- {
- if(distance_cm < 25)//前方有障礙物
- {
- unsigned int dis_direct;//前方距離
- CarStop();
- Delayms(400);
- LCD1602WriteCommand(ctrl_comm);
- GetAllDistance(&dis_direct);
-
- }
- else
- {
- CarGo();
- LCD1602WriteCommand(ctrl_comm1);
- }
- }
- int main(void)
- {
- delay_init();
- GPIOCLKInit();
- UserLEDInit();
- LCD1602Init();
- //IRCtrolInit();
- TIM2_Init();
- MotorInit();
- UltraSoundInit();
-
- Delayms(500);
- CarGo();
- while(1)
- {
- if(tick_5ms >= 5)
- {
- tick_5ms = 0;
- Distance();//計(jì)算距離
- BarrierProc();
- }
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
STM32紅外避障實(shí)驗(yàn).rar
(281.86 KB, 下載次數(shù): 115)
2017-12-19 18:33 上傳
點(diǎn)擊文件名下載附件
|
|