当前位置:   article > 正文

基于STM32的智能循迹避障小车实验(循迹部分)_基于stm32 单片机的四驱寻迹避障小车proteus 仿真实现工作过程

基于stm32 单片机的四驱寻迹避障小车proteus 仿真实现工作过程

接上一部分基于STM32的智能循迹避障小车实验(小车运动部分)

上一篇我们成功让小车动起来了,现在我们试着让小车听话地运动。

实验所用器件及其介绍

这一部分主要利用了循迹模块两个

图 1循迹模块

就是这个东西:

一共三个引脚

VCC:电源线,连接单片机的3.3V-5V
GND
:地线,连接单片机的接地(GND
OUT:开关信号输出(传感器检测到黑线的时候,这个引脚呈现高电平)

循迹模块工作原理:红外发射器一直发射红外线,红外线经发射后被接收,此时输出低电平,输出指示灯点亮。
                 黑色是不反射红外线的,也就是说循迹模块遇到黑线,模块输出高电平,输出指示灯熄灭。

注意当循迹模块距离地面太高时,会出现与循迹模块遇到黑线的一样情况,因此循迹模块距离地面不要太高。

了解了循迹模块的特点后,我们开始连线:将两个模块的VCCGND分别接到开发板的VCCGND,最后一个OUT接到普通GPIO口上,将两个循迹块固定到小车前方,如图 2循迹模块安装实物图。

图 2循迹模块安装实物图

安装完成后我们进入编程实现部分。

编程实现

CobeMX设置

这部分我们直接打开之前完成的运动小车部分,在其上继续完成。打开CobeMX。循迹模块只需使用普通的GPIO口设置为GPIO_Input(输入)模式,这里我选择的是PB12(左侧循迹模块)和PE8(右侧循迹模块)。

图 3循迹模块CobeMX设置

完成基本设置后点击生成代码。

代码实现

现在我们只需要识别循迹模块OUT接口对应的GPIO口电平即可了解小车的运动路线情况。此处实现比较简单,直接上代码:

  1. // 循迹
  2. void Car_XunJi(void)
  3. {
  4.        if(Right_Light == GPIO_PIN_SET)  // 右侧检测到黑线
  5.        {
  6.               if(Left_Light == GPIO_PIN_SET)  // 左侧检测到黑线
  7.               {
  8.                      Car_Go();  // 同时检测到黑线就直行
  9.               }
  10.               else
  11.               {
  12.                      Car_Right();  // 只有右侧检测到黑线,右转
  13.               }
  14.              
  15.        }
  16.        if(Left_Light == GPIO_PIN_SET)
  17.        {
  18.               Car_Left();  // 只有左侧检测到黑线,左转
  19.        }     
  20.        else
  21.        {
  22.               Car_Go();  // 左右两侧都没有检测到黑线救直行
  23.        }

这样就完成了循迹函数的书写,接下来只需在主函数中调用这个函数即可完成循迹小车。

主函数部分:

  1. int main(void)
  2. {
  3.   /* USER CODE BEGIN 1 */
  4.   /* USER CODE END 1 */
  5.   /* MCU Configuration--------------------------------------------------------*/
  6.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  7.   HAL_Init();
  8.   /* USER CODE BEGIN Init */
  9.   /* USER CODE END Init */
  10.   /* Configure the system clock */
  11.   SystemClock_Config();
  12.   /* USER CODE BEGIN SysInit */
  13.   /* USER CODE END SysInit */
  14.   /* Initialize all configured peripherals */
  15.   MX_GPIO_Init();
  16.   MX_TIM2_Init();
  17.   MX_USART1_UART_Init();
  18.   MX_TIM3_Init();
  19.   MX_TIM4_Init();
  20.   /* USER CODE BEGIN 2 */
  21.        printf("这是智能小车方向控制测试程序");
  22.        Car_Go();
  23.       
  24.   /* USER CODE END 2 */
  25.   /* Infinite loop */
  26.   /* USER CODE BEGIN WHILE */
  27.   while (1)
  28.   {
  29. Car_XunJi();
  30. HAL_Delay(100);
  31.     /* USER CODE END WHILE */
  32.     /* USER CODE BEGIN 3 */
  33.   }        
  34.   /* USER CODE END 3 */
  35. }

跳下一部分基于STM32的智能循迹避障小车实验(舵机部分)

最后附上整个项目的HAL库源码:

百度网盘 请输入提取码

提取码:1234

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/320917
推荐阅读
相关标签
  

闽ICP备14008679号