STM32基于hal库的智能小车(2)红外循迹

11 篇文章 10 订阅
1 篇文章 0 订阅

代码下载:https://download.csdn.net/download/sea1216/13685645
4路循迹如下图:
在这里插入图片描述
按着它的说明接线就好了,并选定好单片机引脚。我用STM32CUBEMX接着上一篇文章添加4个引脚,最后生成的程序如下(main.h):

#define BZ1_Pin GPIO_PIN_4
#define BZ1_GPIO_Port GPIOA
#define BZ2_Pin GPIO_PIN_5
#define BZ2_GPIO_Port GPIOA
#define BZ3_Pin GPIO_PIN_6
#define BZ3_GPIO_Port GPIOA
#define BZ4_Pin GPIO_PIN_7
#define BZ4_GPIO_Port GPIOA

其中说明如:
//定义红外避障引脚及功能
//最左边红外头BZ4_Pin
//左边红外头BZ3_Pin
//最右边红外头BZ1_Pin
//右边红外头BZ2_Pin
在main.h中添加如下:

//定义读取端口高低电平
#define BZ1_IN			HAL_GPIO_ReadPin(BZ1_GPIO_Port,BZ1_Pin)//读取最右边红外头数据,如果为1则表示靠近黑线
#define BZ2_IN			HAL_GPIO_ReadPin(BZ2_GPIO_Port,BZ2_Pin)
#define BZ3_IN			HAL_GPIO_ReadPin(BZ3_GPIO_Port,BZ3_Pin)
#define BZ4_IN			HAL_GPIO_ReadPin(BZ4_GPIO_Port,BZ4_Pin)

在main.c中添加如下程序:

//红外循迹避障测试
	//黑色无反射,输出1,灯亮
	while(1)
	{
		if(BZ1_IN&&BZ2_IN&&BZ3_IN&&BZ4_IN)//如果同时检测到信号,则停车,灯闪烁
		{
			CAR_STOP;
			LED_on;
			HAL_Delay(300);
			LED_off;
			HAL_Delay(300);
		}
		else if(BZ1_IN||BZ2_IN)//如果左边两个红外避障有信号则右移
			{
				LED_on;
				CAR_RIGHT;
			}
		else if(BZ3_IN||BZ4_IN)//如果右边两个红外避障有信号则左移
			{
				LED_on;
                CAR_LEFT;
			}				
		else 
			{
				LED_off;
				CAR_UP;
			}
	}

最后连接图如下(4路红外避障应该买那种检测头是直角的,我买的直的,最后只能自己做一个板子固定在底盘上,再把红外头固定在上面。):
在这里插入图片描述

1.时钟源 外部时钟 2.GPIO (实验:点亮LED灯,获取引脚的电平高低,将对应引脚置高置低)。 3.PWM-脉宽调制 主要是调节占空比(在小车中用来实现小车的加减速)。 4.TIMX定时器 5.红外遥控 主要运用了EXTI(外部中断/事件控制器),系统延时(系统滴答定时器SysTick)。 6.超声波避障 了解了超声波工作的原理,主要运用了TIM2定时器(用来定时测距),GPIO口。 7.红外探测 通过对障碍物和光的感应来返回电平的状态,从而达到避障和巡线效果。 8.测速码盘 (通过检测码盘上的凹槽数来获取脉冲数,通过计算公式得到小车当前速度) TIM3定时器(定时测速)。 9.PID算法 为了使小车的速度更快的达到目标值,获取更稳定的速度。 10.系统的使用 我们在小车内加入系统,对小车的数据获取,状态实现任务化,使小车内的运作更加有序。我们主要使用μC/OS-II系统内核来实现系统。在实现过程中,我们了解了系统的任务调度以及任务运行和处理器之间的关系(多任务同时运行)。 μC/OS-II内核中的任务控制块,任务状态,以及多任务和任务的优先级类似操作系统中的进程操作。 11.任务间的通信 主要用到信号量(主要就是PV操作 P操作:占用资源。V操作:释放资源);邮箱(邮箱可以使一个任务或者中断服务子程序向另一个任务发送指针型的变量,通常该指针指向包含了“消息”特定的数据结构)。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值