STM32基于hal库的智能小车—红外寻迹

这篇具有很好参考价值的文章主要介绍了STM32基于hal库的智能小车—红外寻迹。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

材料:

(1)stm32f407zgt6最小系统开发板

(2)l298n电机驱动模块1个

(3)四个电机

(4)循迹红外模块3个

一、组装

(1)L298N电机驱动模块与stm32开发板接线如下图:

STM32基于hal库的智能小车—红外寻迹

说明:PWM接线把跳线帽扒开接外面引脚 CH1接ENA,CH2接ENB。

(2)寻迹红外接线:

STM32基于hal库的智能小车—红外寻迹

二、主要程序

1、STM32CUBEMX配置如下:

(1)引脚配置:

STM32基于hal库的智能小车—红外寻迹

说明:

1)motor11、motor12 、motor21、motor22 为电机驱动引脚

2)  sensor1、sensor2、sensor3 为红外引脚

(2)配置RCC时钟:  STM32基于hal库的智能小车—红外寻迹

STM32基于hal库的智能小车—红外寻迹

(3) 时钟的配置: STM32基于hal库的智能小车—红外寻迹

 (4)预分频、分频和占空比配置:

STM32基于hal库的智能小车—红外寻迹

 三、程序

main.c

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);
TIM3->CCR1=TIM3->CCR4=80;//两个电机的速度范围(0-100),越大越快。
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

    Tracking();//寻迹
  }
  /* USER CODE END 3 */

 main.h

#include "Track.h"

电机程序: 

 Motor.c

#include "motor.h"
 
//前进
void car_go_straight(void)
{
   HAL_GPIO_WritePin(motor11_GPIO_Port,motor11_Pin,GPIO_PIN_SET);
   HAL_GPIO_WritePin(motor12_GPIO_Port,motor12_Pin,GPIO_PIN_RESET);
	
   HAL_GPIO_WritePin(motor21_GPIO_Port,motor21_Pin,GPIO_PIN_SET);
   HAL_GPIO_WritePin(motor22_GPIO_Port,motor22_Pin,GPIO_PIN_RESET);
}
 
//右转
void car_go_right(void)
{
   HAL_GPIO_WritePin(motor11_GPIO_Port,motor11_Pin,GPIO_PIN_SET);
   HAL_GPIO_WritePin(motor12_GPIO_Port,motor12_Pin,GPIO_PIN_RESET);
 
   HAL_GPIO_WritePin(motor21_GPIO_Port,motor21_Pin,GPIO_PIN_RESET);
   HAL_GPIO_WritePin(motor22_GPIO_Port,motor22_Pin,GPIO_PIN_SET);
 
}
 
//左转
void car_go_left(void)
{
   HAL_GPIO_WritePin(motor11_GPIO_Port,motor11_Pin,GPIO_PIN_RESET);
   HAL_GPIO_WritePin(motor12_GPIO_Port,motor12_Pin,GPIO_PIN_SET);
 
   HAL_GPIO_WritePin(motor21_GPIO_Port,motor21_Pin,GPIO_PIN_SET);
   HAL_GPIO_WritePin(motor22_GPIO_Port,motor22_Pin,GPIO_PIN_RESET); 
 
}
 
 
//停止
void car_go_ahead(void)
{
   HAL_GPIO_WritePin(motor11_GPIO_Port,motor11_Pin,GPIO_PIN_RESET);
   HAL_GPIO_WritePin(motor12_GPIO_Port,motor12_Pin,GPIO_PIN_RESET);
 
   HAL_GPIO_WritePin(motor21_GPIO_Port,motor21_Pin,GPIO_PIN_RESET);
   HAL_GPIO_WritePin(motor22_GPIO_Port,motor22_Pin,GPIO_PIN_RESET);
 
}
 
 
//后退
void car_go_after(void)
{
   HAL_GPIO_WritePin(motor11_GPIO_Port,motor11_Pin,GPIO_PIN_RESET);
   HAL_GPIO_WritePin(motor12_GPIO_Port,motor12_Pin,GPIO_PIN_SET);
 
   HAL_GPIO_WritePin(motor21_GPIO_Port,motor21_Pin,GPIO_PIN_RESET);
   HAL_GPIO_WritePin(motor22_GPIO_Port,motor22_Pin,GPIO_PIN_SET);
 
}

 Motor.h

#ifndef __MOTOR_H_
#define __MOTOR_H_
 
#include "main.h"
 
void car_go_straight(void);
void car_go_right(void);
void car_go_left(void);
void car_go_ahead(void);
void car_go_after(void);
 
#endif

寻迹程序:

Track.c

#include "Track.h"
#include "motor.h"

void Tracking(void)
{
	   ///右转
		if ((HAL_GPIO_ReadPin(sensor1_GPIO_Port,sensor1_Pin)==1)&&(HAL_GPIO_ReadPin(sensor2_GPIO_Port,sensor2_Pin)==0)) 
		while(1)//10
		{
			car_go_right();
			if((HAL_GPIO_ReadPin(sensor1_GPIO_Port,sensor1_Pin)==1)&&(HAL_GPIO_ReadPin(sensor2_GPIO_Port,sensor2_Pin)==1)&&(HAL_GPIO_ReadPin(sensor3_GPIO_Port,sensor3_Pin)==0))
			break ;	
		}
		
		//左转
		else  if((HAL_GPIO_ReadPin(sensor1_GPIO_Port,sensor1_Pin)==0)&&(HAL_GPIO_ReadPin(sensor2_GPIO_Port,sensor2_Pin)==1)) 
		while(1)//01
		{
			car_go_left();
		 if((HAL_GPIO_ReadPin(sensor1_GPIO_Port,sensor1_Pin)==1)&&(HAL_GPIO_ReadPin(sensor2_GPIO_Port,sensor2_Pin)==1)&&(HAL_GPIO_ReadPin(sensor3_GPIO_Port,sensor3_Pin)==0))
			break ;	
		}
		
		/直行
		else
			car_go_straight();
		 	
 }

Track.h

#ifndef __TRACK_H_
#define __TRACK_H_

#include "main.h"

extern void Tracking(void);

#endif

 文章来源地址https://www.toymoban.com/news/detail-430176.html

 

 

 

到了这里,关于STM32基于hal库的智能小车—红外寻迹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《基于STM32的红外避障小车》

    本文主要讲解基于 STM32的红外避障小车的实现(标准库) 基于 stm32 实现的一个简单智能避障小车,具有“直行”、转弯、“避障”的功能。 直行、转弯:基于 stm32 的通用定时器TIM3输出 PWM 方波信号实现 避障:使用到 stm32 的外部中断以及通用定时器(使用红外中断), 代码

    2024年01月22日
    浏览(45)
  • AT89S52单片机智能寻迹小车自动红外避障趋光检测发声发光设计

    wx供重浩:创享日记 对话框发送:寻迹 获取完整说明报告+源程序+数据 小车具有以下几个功能:自动避障功能;寻迹功能(按路面的黑色轨道行驶);趋光功能(寻找前方的点光源并行驶到位);检测路面所放置的铁片的个数的功能;计算并显示所走的路程和行走的时间,并

    2024年02月19日
    浏览(54)
  • 基于STM32,TB6612,TCRT5000的简易红外循迹小车

            提醒:本文章只叙述此小车相关大概内容(如模块的设置,C语言基础实现等),单片机详细教学不涉及。         循迹小车是学习单片机的“地基”,它能够让初学者认识单片机内部硬件结构及其功能,熟悉单片机的一些基础操作,如I/O的应用,定时中断与外

    2024年02月16日
    浏览(50)
  • 基于STM32F103的红外循迹 超声波避障小车

    单片机:stm32f103 传感器:普通红外(我用了4个) 超声波:HC-SR04 舵机:SG90 目标:可以循黑线(十字直行)、并避障 如果硬件配置和我一样以下代码可直接使用,用我配置的引脚即可。 亲测好用。 复制代码的同时请点个赞,多谢! .c .h .c .h .c .h .c .h 我的主函数有些啰嗦,

    2024年02月05日
    浏览(54)
  • 【STM32】基于HAL库的中断详细学习

    1.中断概述 1.1中断相关概念 1.2 STM32中断系统 2 .HAL库的中断处理 2.1 HAL 库的中断封装 2.2 外部中断处理流程 3.外部中断的HAL库定义 3.1. 外部中断的数据类型 3.2. 外部中断的接口函数 在计算机系统中,处理器常常需要与外部设备进行数据传输。常见的数据传输方式有以下四种:

    2024年02月02日
    浏览(80)
  • 基于stm32+HAL库的ADC电压采集实验

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 只会用if的大神提醒您,敌军还有30秒到达战场,碾碎他们!白银局不要怕! 软件:keil5、stm32cubemx、串口调试助手 硬件:stm32f103系列的开发板、杜邦线*1、串口工具 仅此而已!!!正好6神 1、打开cube

    2023年04月15日
    浏览(43)
  • 【stm32开发笔记】基于HAL库的STM32F4添加DSP库

    本文分两种方法添加DSP库:1.CubeMX直接配置ioc添加; 2.KEIL内添加; 简述:补齐全部lib库-添加DSP包-使能DSP勾选-添加头文件及魔术棒配置-测试 1.补齐lib库。( 如果使用直接默认添加的库,是不支持FPU的,所以需要补齐后找到所需的lib文件进行替换,在MX的工程管理栏,选择复制所

    2024年02月16日
    浏览(58)
  • STM32:基于HAL 库的外部中断按键以及消抖

    第一次写博客,有错误与问题欢迎指正。 这部分直接上代码,假设PB5为输入端且上拉,PB11为输出。 在CubeMx中配置完引脚(下降沿触发)并在NVIC中开启外部中断后,我们注意到,上一个程序有5个要素(我写了注释的5个): 中断回调函数HAL_GPIO_EXTI_Callback是一个虚函数,我们

    2024年04月10日
    浏览(49)
  • STM32基于HAL库的串口接受中断和空闲中断

    在通信方面。UART由于全双工通信,可以同时接受数据和发送数据而被广泛使用。 而接受数据则又有很多种方法 比如: 1根据结束符判断,数据是字符串形式,所以一般串口接受的接受符就是 \\\"rn\\\"  换成16进制ascil码显示就是 0X0D   0X0A (对应rn)  2定时器中断,设计\\\"喂狗信号量

    2023年04月08日
    浏览(48)
  • 基于STM32F103HAL库的声音定位系统

    这是一道学校出的电赛题目,要求在100*100cm的平面上实现定位实现声音定位。由于一米太大了,我们就做了40cm的,下面的讲解我按照40厘米的写。用到的处理器是stm32f103c8t6接下来分享一下调试心得。 硬件部分需要制作发声装置和接收装置,详细可以

    2024年02月14日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包