- #include "stm32f10x.h"
- #include "delay.h"
- #include "motor.h"
- #include "keysacn.h"
- #include "IRSEARCH.h"
- #include "IRAvoid.h"
- #include "usart.h"
- #include "UltrasonicWave.h"
- #include "timer.h"
- #include "Server.h"
- char ctrl_comm1 = COMM_STOP;//控制指令
- char ctrl_comm1_last = COMM_STOP;//上一次的指令
- int Q_temp,Q_temp_last,L_temp,R_temp;
- // 超声波转头函数
- int front_detection()
- {
- // ZYSTM32_brake(0);
- SetJointAngle(90);
- delay_ms(100);
- return UltrasonicWave_StartMeasure();
- }
- int left_detection()
- {
- // ZYSTM32_brake(0);
- SetJointAngle(175);
- delay_ms(300);
- return UltrasonicWave_StartMeasure();
- }
- int right_detection()
- {
- // ZYSTM32_brake(0);
- SetJointAngle(5);
- delay_ms(300);
- return UltrasonicWave_StartMeasure();
- }
- void BarrierProc(void)
- {
- delay_ms(10);
- Q_temp_last = Q_temp;
- Q_temp = front_detection();
- printf("测到的距离值为:%d\n",Q_temp);
-
- if( Q_temp > 45)
- {
- ctrl_comm1 = COMM_STOP;//防震荡
- return;
- }
-
- if((Q_temp_last > Q_temp)&&(Q_temp<=15)) ctrl_comm1 = COMM_DOWN;
- //if(Q_temp<=15) ctrl_comm1 = COMM_DOWN;
- if(Q_temp >=30) ctrl_comm1 = COMM_UP;
- }
- //extern int U_temp;
- /*
- void ZYSTM32_run(int speed,int time); //前进函数
- void ZYSTM32_brake(int time); //刹车函数
- void ZYSTM32_Left(int speed,int time); //左转函数
- void ZYSTM32_Spin_Left(int speed,int time); //左旋转函数
- void ZYSTM32_Right(int speed,int time); //右转函数
- void ZYSTM32_Spin_Right(int speed,int time);//右旋转函数
- void ZYSTM32_back(int speed,int time); //后退函数
- */
- int main(void)
- {
- delay_init();
- KEY_Init();
- IRSearchInit();
- IRAvoidInit();
- Timerx_Init(5000,7199); //10Khz的计数频率,计数到5000为500ms
- UltrasonicWave_Configuration(); //对超声波模块初始化
- uart_init(115200);
- TIM4_PWM_Init(7199,0); //初始化PWM
- TIM5_PWM_Init(9999,143); //不分频,PWM频率=72*10^6/(9999+1)/(143+1)=50Hz
- ZYSTM32_brake(500);
- keysacn();
- while(1)
- {
- BarrierProc();
-
- // Q_temp = front_detection();
- // printf("测到的距离值为:%d\n",Q_temp);
- //Q_temp_last = Q_temp;
- //Q_temp = front_detection();
- if(ctrl_comm1_last != ctrl_comm1)
- {
- ctrl_comm1_last = ctrl_comm1;
- switch(ctrl_comm1)
- {
- case COMM_UP: ZYSTM32_run(50,10);break;
- case COMM_DOWN: ZYSTM32_back(50,500); break;
- case COMM_LEFT: ZYSTM32_Left(50,700);break;
- case COMM_RIGHT:ZYSTM32_Right(50,700);break;
- case COMM_STOP: ZYSTM32_brake(500);break;
- default : break;
- }
- }
-
-
- }
- }
复制代码
全部资料51hei下载地址:
ZYSTM32-A0 智能小车超声波避障实验(有舵机).rar
(311.8 KB, 下载次数: 89)
|