串口控制小车电机转动+蓝牙长按控制

串口控制小车电机转动+蓝牙长按控制

程序

1.main.c:调用串口初始化函数,循环里调用Stop函数让小车停止

2.Motor.c:小车前进、后退、左转、右转和停止的函数

3.Delay.c:延时函数

4.Uart.c:串口初始化函数,发送一个字节函数,发送一个字符串函数,中断处理函数接收串口指令,从而控制小车启动

在这里插入图片描述

长按模式:蓝牙助手按钮一直按着,小车就一直启动,松手就停止

1.在main函数的while循环中添加让小车停止的函数,如果没有串口中断时就一直是停止状态,当有中断信号过来时就控制小车启动,

void main()
{
	UartInit();
	while(1)
	{
		/*1.要实现点动,就要让main函数里一直是停止,串口有控制信号过来后,
		跟main函数争夺控制权,要在串口控制信号后加适当延时,让动起来一小会后再自动停止
		2.要实现长按启动松手停止也是要在main函数中一直停止*/
		Stop();		
	}
}

2.中断处理函数中也要相应修改,在控制信号后加适当的延时,延时越小,就越接近点动模式,太小的话小车轮子会抽搐,适当加大点就有点动的现象;

若要长按模式的话,延时就要适当大点,经实验延时400ms效果挺好,同时手机蓝牙助手也要修改为长按一直发送串口信号才能实现

/**
  * @brief 串口中断处理函数
  * @param 无
  * @retval无
  */
void Uart_Rountine() interrupt 4
{
	static unsigned int i = 0;
	unsigned char temp;
	if(RI)
	{
		RI = 0;
		temp = SBUF;
		if(temp == 'F' || temp == 'B' || temp == 'L' || temp == 'R' || temp == 'S')
		{
			i = 0;
		}
		rec[i++] = temp;
		if(rec[0] == 'F' && rec[1] == 'o')
		{
			GoForward();
			//收到前进信号后延时400ms,再被main函数停止,延时时间越小,就越接近点动模式
			Delay1ms(400);			
			i = 0;
			memset(rec,'\0',SIZE);
		}
		if(rec[0] == 'B' && rec[1] == 'a')
		{
			GoBack();
			Delay1ms(400);		//延时
			i = 0;
			memset(rec,'\0',SIZE);
		}
		if(rec[0] == 'L' && rec[1] == 'e')
		{
			GoLeft();
			/*左转的延时少一点,可通过点动方式一点一点地调方向,
			如果延时大的话,按一下就转动很大,不便调方向*/
			Delay1ms(200);		
			i = 0;
			memset(rec,'\0',SIZE);
		}
		if(rec[0] == 'R' && rec[1] == 'i')
		{
			GoRight();
			Delay1ms(200);		//右转的延时跟左转同理
			i = 0;
			memset(rec,'\0',SIZE);
		}
		if(rec[0] == 'S' && rec[1] == 't')
		{
			Stop();
			i = 0;
			memset(rec,'\0',SIZE);
		}
		if(i == SIZE){i = 0;}
	}
}

3.修改蓝牙助手

连上HC-08蓝牙后再去自定义按钮界面修改点击属性

在这里插入图片描述

点击后设置按钮,选择长按发送,持续发送时间间隔为50ms,间隔越小,说明一直按着按钮的话串口发送数据的频率就越高

在这里插入图片描述

修改完后下载程序,独立给小车供电就能用手机蓝牙助手长按控制小车前进后退左转和右转了,跟遥控车一样

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值