当前位置: 首页 > news >正文

STM32小项目———感应垃圾桶

文章目录

  • 前言
  • 一、超声波测距
    • 1.超声波简介
    • 2.超声波测距原理
    • 2.超声波测距步骤
  • 二、舵机的控制
  • 三、硬件搭建及功能展示
  • 总结


前言

一个学习STM32的小白~ 有问题请评论区或私信指出


提示:以下是本篇文章正文内容,下面案例可供参考

一、超声波测距

1.超声波简介

超声波传感器模块上面通常有两个超声波元器件,
。一个用于发射,一个用于接收。
电路板上有四个引脚:VCC GND Trig(触发),Echo(回应)

主要参数:
工作电压与电流:5V,15mA
感应距离: 2~400cm
感测角度:不小于15°
被测物的面积不要小于50cm并且尽量平整
具备温度补偿电路

在这里插入图片描述

2.超声波测距原理

超声波模块的触发脚(Trig)输入10us以上的高电位,即可发射超声波,发射超声波后,与接收到传回的超声波之前,”响应”脚(Echo)位呈现高电平。因此,程序可以从”响应”脚位(Echo)的高电平脉冲持续时间,换算出被测物的距离。

距离公式:高电平持续时间 * 声速(340/秒)/2
在这里插入图片描述

2.超声波测距步骤

1.配置GPIO引脚结构体(Trig,Echo)。
2.配置定时器结构体
3.配置定时器中断结构体
4.开启时钟(定时器,GPIO)
5.Tria引脚输出高电平(10us以上),然后关闭
6.等待Echo引脚输入高电平开始,定时器打开–>开启计数器计数
7.等待Echo引脚输入高电平结束,定时器关闭—>停止计数器计数
8.通过计数器的值计算得出超声波测量距离

#include "HCSR04.h"
#include "stm32f10x.h"                  // Device header
#include "SysTick.h"
uint32_t ms_Count = 0;#define Trig_Value_High  GPIO_SetBits(GPIOB,GPIO_Pin_11)
#define Trig_Value_LOW  GPIO_ResetBits(GPIOB,GPIO_Pin_11)#define Echo_Read  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)void HCSR04_Config(void)
{GPIO_InitTypeDef  HCSR04_Structure;TIM_TimeBaseInitTypeDef  TIM4_Structure;NVIC_InitTypeDef nvic_Structure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//TrigHCSR04_Structure.GPIO_Mode = GPIO_Mode_Out_PP;HCSR04_Structure.GPIO_Pin = GPIO_Pin_11;HCSR04_Structure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&HCSR04_Structure);//EchoHCSR04_Structure.GPIO_Mode = GPIO_Mode_IN_FLOATING;HCSR04_Structure.GPIO_Pin = GPIO_Pin_10;GPIO_Init(GPIOB,&HCSR04_Structure);TIM4_Structure.TIM_ClockDivision = TIM_CKD_DIV1;TIM4_Structure.TIM_CounterMode = TIM_CounterMode_Up;TIM4_Structure.TIM_Period = 1000-1;TIM4_Structure.TIM_Prescaler =72-1;TIM4_Structure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM4,&TIM4_Structure);TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);TIM_Cmd(TIM4,DISABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);nvic_Structure.NVIC_IRQChannel = TIM4_IRQn;nvic_Structure.NVIC_IRQChannelPreemptionPriority = 0;nvic_Structure.NVIC_IRQChannelSubPriority = 0;nvic_Structure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&nvic_Structure);}void open_TIM4(void)
{TIM_SetCounter(TIM4,0);//初始化CNT = 0ms_Count = 0;//计时器 = 0TIM_Cmd(TIM4,ENABLE);
}void close_TIM4(void)
{TIM_Cmd(TIM4,DISABLE);
}int Get_timeCount(void)
{uint32_t t_Count;t_Count = ms_Count*1000;//毫秒化微妙t_Count += TIM_GetCounter(TIM4);//加上当前CNT值TIM4->CNT = 0;//CNT置0delay_ms(50);return t_Count;
}float GetLenth(void)
{uint32_t time = 0;uint16_t i = 0;float lenth = 0;float sum = 0;while(i != 5)//取五次测距结果{Trig_Value_High;//发射20us超声波delay_us(20);Trig_Value_LOW;while(Echo_Read == 0);//等待Echo接收反射波open_TIM4();//接收到反射波打开定时器i = i+1;//记录次数while(Echo_Read == 1);等待Echo接收的反射波停止close_TIM4();//关闭定时器time = Get_timeCount();//获取反射波持续时间lenth = ((float)time/58.3);//计算距离cm/ussum += lenth;}lenth = sum/5.0;return lenth;
}void TIM4_IRQHandler(void)
{if( TIM_GetITStatus(TIM4,TIM_IT_Update) != RESET){ms_Count++;//每次中断代表1ms过去了TIM_ClearITPendingBit(TIM4,TIM_IT_Update);}}

二、舵机的控制

本文讲述舵机控制电机方法点击直达

三、硬件搭建及功能展示

如图:

在这里插入图片描述

在这里插入图片描述


总结

局部变量初值一定不要忘记~~ 切记!!!

相关文章:

STM32小项目———感应垃圾桶

文章目录 前言一、超声波测距1.超声波简介2.超声波测距原理2.超声波测距步骤 二、舵机的控制三、硬件搭建及功能展示总结 前言 一个学习STM32的小白~ 有问题请评论区或私信指出 提示:以下是本篇文章正文内容,下面案例可供参考 一、超声波测距 1.超声波…...

嵌入式MCU平台汇总

文章目录 1. 单片机(MCU) 2. 数字信号处理器(DSP) 3. ARM Cortex 系列 4. 超低功耗MCU 5. 物联网MCU(IoT MCU) 6. 开源架构MCU(RISC-V) 7. 可编程逻辑器件(FPGA&a…...

C#udpClient组播

一、0udpClient 控件: button(打开,关闭,发送),textbox,richTextBox 打开UDP: UdpClient udp: namespace _01udpClient {public partial class Form1 : Form{public Form1(){Initi…...

《昇思25天学习打卡营第14天 | 昇思MindSpore基于MindNLP+MusicGen生成自己的个性化音乐》

14天 本节学了基于MindNLPMusicGen生成自己的个性化音乐。 MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型的音乐生成模型,能够根据文本描述或音频提示生成高质量的音乐样本。 MusicGen模型基于Transformer结构,可以分解为三个不同的阶段…...

新奥集团校招面试经验分享、测评笔试题型分析

一、走进新奥集团 新奥集团成立于1989年,总部位于河北廊坊,是中国领先的清洁能源企业集团。业务涵盖城市燃气、能源化工、环保科技等多个领域,致力于构建现代能源体系,提升生活品质。 二、新奥集团校招面试经验分享 新奥集团的…...

【推荐】Prometheus+Grafana企业级监控预警实战

新鲜出炉!!!PrometheusGrafanaAlertmanager springboot 企业级监控预警实战课程,从0到1快速搭建企业监控预警平台,实现接口调用量统计,接口请求耗时统计…… 详情请戳 https://edu.csdn.net/course/detai…...

深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径

文章目录 一、分批渲染1、setTimeout定时器分批渲染2、使用requestAnimationFrame()改进渲染2.1、什么是requestAnimationFrame2.2、为什么使用requestAnimationFrame而不是setTimeout或setInterval2.3、requestAnimationFrame的优势和适用场景 二、滚动触底加载数据三、Elemen…...

AI时代,你的工作会被AI替代吗?

AI在不同领域的应用和发展速度是不同的。在智商方面,尤其是在逻辑推理、数据分析和模式识别等领域,AI已经取得了显著的进展。例如,在国际象棋、围棋等策略游戏中,AI已经能够击败顶尖的人类选手。在科学研究、医学诊断、股市分析等…...

Java_日志

日志技术 可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中) 可以随时以开关的形式控制日志启停,无需侵入到源代码中去进行修改。 日志技术的体系结构 日志框架:JUL、Log4j、Logback、其他实现。 日志接口&#xf…...

springcould-config git源情况下报错app仓库找不到

在使用spring config server服务的时候发现在启动之后的一段时间内控制台会抛出异常,spring admin监控爆红,控制台信息如下 --2024-06-26 20:38:59.615 - WARN 2944 --- [oundedElastic-7] o.s.c.c.s.e.JGitEnvironmentRepository : Error occured …...

MySQL serverTimezone=UTC

在数据库连接字符串中使用 serverTimezoneUTC 是一个常见的配置选项,特别是当数据库服务器和应用程序服务器位于不同的时区时。这个选项指定了数据库服务器应当使用的时区,以确保日期和时间数据在客户端和服务器之间正确传输和处理。 UTC(协…...

基于YOLOv9的PCB板缺陷检测

数据集 PCB缺陷检测,我们直接采用北京大学智能机器人开放实验室数据提供的数据集, 共六类缺陷 漏孔、鼠咬、开路、短路、杂散、杂铜 已经对数据进行了数据增强处理,同时按照YOLO格式配置好,数据内容如下 模型训练 ​ 采用YOLO…...

高考结束,踏上西北的美食之旅

高考的帷幕落下,暑期的阳光洒来,是时候放下书本,背上行囊,踏上一场充满期待的西北之旅。而在甘肃这片广袤的土地上,除了壮丽的自然风光,还有众多令人垂涎欲滴的美食等待着您的品尝。当您踏入甘肃&#xff0…...

人工智能 (AI) 在能源系统中应用的机会和风险

现代文明极度依赖于电力的获取。电力系统支撑着我们视为理所当然的几乎所有基本生活功能。没有电力的获取,大多数经济活动将是不可能的。然而,现有的电网系统并未设计来应对当前——更不用说未来的——电力需求。与此同时,气候变化迫切要求我…...

[AIGC] 定时删除日志文件

文章目录 需求实现脚本解释 需求 实现一个定时任务,定时删除两天前的日志文件,如果某个目录使用量超过80%,则删除文件 实现 要实现这样的要求,我们可以创建一个shell脚本,在该脚本中使用find命令查找两天前的日志文…...

C++:typeid4种cast转换

typeid typeid typeid是C标准库中提供的一种运算符,它用于获取类型的信息。它主要用于类型检查和动态类型识别。当你对一个变量或对象使用typeid运算符时,它会返回一个指向std::type_info类型的指针,这个信息包含了关于该类型名称、大小、基…...

vue3的配置和使用

vue的使用需要配置node且node版本需要在15以上。管理员方式打开cmd,输入node -v,可以查看node版本。 创建vue有以下两种方式 npm init vuelatestnpm create vuelatest创建后输入项目名,其它的输入否即可,新手可以先不用 按照要求…...

决策树划分属性依据

划分依据 基尼系数基尼系数的应用信息熵信息增益信息增益的使用信息增益准则的局限性 最近在学习项目的时候经常用到随机森林,所以对决策树进行探索学习。 基尼系数 基尼系数用来判断不确定性或不纯度,数值范围在0~0.5之间,数值越低&#x…...

短视频利器 ffmpeg (2)

ffmpeg 官网这样写到 Converting video and audio has never been so easy. 如何轻松简单的使用: 1、下载 官网:http://www.ffmpeg.org 安装参考文档: https://blog.csdn.net/qq_36765018/article/details/139067654 2、安装 # 启用RPM …...

【计算机毕业设计】基于Springboot的智能物流管理系统【源码+lw+部署文档】

包含论文源码的压缩包较大,请私信或者加我的绿色小软件获取 免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

LLMs 系列实操科普(1)

写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

MySQL的pymysql操作

本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

[特殊字符] 手撸 Redis 互斥锁那些坑

📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...

Python学习(8) ----- Python的类与对象

Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化? 在数据科学和分析领域,可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具,如 Matplotlib、Seaborn、Plotly 等,但 Pandas 内置的可视化功能因其与数据结…...