代码篇
这里只讲部分主要代码,整体代码可以直接在CSDN上下载,或者留言邮箱地址我发给你们。
蓝牙控制代码篇
手机端使用的APP是蓝牙串口,我会打包到程序文档里面,也可以直接网上下载。
指令设置如下
界面设置如下:
单片机做相同的指令约束。
//蓝牙控制移动
void Select_Move(void)
{
switch(move_state){
case 'q' :CPWM[0]=1430;//
Set_Pwm_Motor1(600);Set_Pwm_Motor2(600);
REVERSE_Car();
TIM_Cmd(TIM4,ENABLE);
move_state=' ';
break;
case 's' :STOP_Car();
move_state=' ';
TIM_Cmd(TIM4,DISABLE);
break;
case 'h' :CPWM[0]=1430;
Set_Pwm_Motor1(600);Set_Pwm_Motor2(600);
FORWARD_Car();
TIM_Cmd(TIM4,ENABLE);
move_state=' ';
break;
case 'z' :Set_Pwm_Motor1(600);Set_Pwm_Motor2(600);//设置占空比,电机速度
CPWM[0]=980;//控制数字舵机左转
REVERSE_Car();//小车前进
TIM_Cmd(TIM4,ENABLE);//开启定时器,这边是PID调速的定时器
move_state=' ';//清除指令
break;
case 'y' :Set_Pwm_Motor1(600);Set_Pwm_Motor2(600);
CPWM[0]=1880;
REVERSE_Car();
TIM_Cmd(TIM4,ENABLE);
move_state=' ';
break;
}
}
串口接收中断
//蓝牙接收中断
void USART1_IRQHandler(){
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
move_state= USART_ReceiveData(USART1);
if(move_state=='d'){
//d e f 小车模式选择 避障
TIM_Cmd(TIM4,DISABLE);
Set_Pwm_Motor1(700);
Set_Pwm_Motor2(700);
m