STM32
直播中

刘继牛

7年用户 987经验值
私信 关注
[问答]

怎么实现STM32基于hal库智能小车的设计?

怎么实现STM32基于hal库智能小车的设计?

回帖(1)

史娟

2021-11-26 11:28:15
代码下载: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;
                        }
        }


  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分