标题:
STM32智能小车超声波跟随的程序源码
[打印本页]
作者:
zsmart
时间:
2018-7-16 09:29
标题:
STM32智能小车超声波跟随的程序源码
#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)
2018-7-16 17:13 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
ckeai
时间:
2018-12-9 20:58
新手求教 1.u_temp = UltrasonicWave_Distance*10;u_temp难道不是距离吗?为什么不是直接赋值UltrasonicWave_Distance,还有乘以10
2. Q_temp_last = Q_temp;
Q_temp = front_detection();没明白
3.为啥同样是转头SetJointAngle()里的值还不一样
4。SetJointAngle();这个函数没看懂
作者:
vuckil
时间:
2018-12-24 20:02
参考学习下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1