STM32HAL 快速入门(七):GPIO 输入之光敏传感器控制蜂鸣器

STM32HAL 快速入门(七):GPIO 输入之光敏传感器控制蜂鸣器

前言

大家好,这里是 Hello_Embed。上一篇我们用 GPIO 输入模式实现了按键控制 LED,本篇将进阶到 “光敏传感器控制蜂鸣器”—— 通过读取光敏传感器的信号,实现 “环境变暗时 LED 点亮、蜂鸣器报警” 的联动效果,进一步熟悉 GPIO 输入与输出的结合应用。下一篇我们会引入 “中断” 的概念,让 GPIO 响应更高效。

一、核心组件与原理

本次实战涉及光敏传感器模块、有源蜂鸣器模块,以及 STM32 的 GPIO 引脚,先了解各组件的工作原理。

1. 光敏传感器模块
  • 使用说明
    请添加图片描述
  • 电路图
    请添加图片描述
  • 核心芯片 LM393(比较器)
    • 当 “+” 引脚电压 > “-” 引脚电压时,DO 端输出高电平,模块自带 LED 熄灭;
    • 当 “+” 引脚电压 < “-” 引脚电压时,DO 端输出低电平,模块自带 LED 点亮。
  • 光照与电压的关系
    • 光照增强 → 光敏电阻阻值减小 → “+” 引脚电压降低 → DO 输出高电平(模块 LED 灭);
    • 光照减弱 → 光敏电阻阻值增大 → “+” 引脚电压升高 → DO 输出低电平(模块 LED 亮)。
2. 有源蜂鸣器模块
  • 实物图
    请添加图片描述
  • 原理图
    请添加图片描述
  • 控制逻辑:通过 2 号 I/O 引脚控制,当 I/O 为低电平时,蜂鸣器发声;高电平时,蜂鸣器不发声。
二、硬件连接

按以下方式连接电路(与韦东山课程保持一致):

  • 光敏传感器
    • AO 脚(模拟输出,本篇暂不用)接 PA3;
    • DO 脚(数字输出)接 PB11;
    • 剩余两脚分别接 GND 和 VCC。
  • 蜂鸣器
    • I/O 控制脚接 PA8;
    • 剩余两脚分别接 GND 和 VCC。
  • 系统板 LED:沿用 PC13(已配置为输出)。
    实物连接图
    请添加图片描述
三、CubeMX 配置
  1. 引脚功能配置
    • PB11:GPIO_Input(读取光敏传感器 DO 信号);
    • PA8:GPIO_Output(控制蜂鸣器);
    • PC13:GPIO_Output(控制系统板 LED)。
  2. 生成工程(确保时钟、调试模式等基础配置正确)。
四、代码实现:封装函数与逻辑控制

为使代码更清晰,我们封装三个函数分别处理 “判断环境亮度”“控制蜂鸣器”“控制 LED”,再在主循环中调用。

1. 函数封装(在/* USER CODE BEGIN PV */区域)
/* USER CODE BEGIN PV */
// 判断环境是否变暗(光敏传感器DO输出高电平表示光照强,低电平表示光照弱)
static int Dark(void)
{// PB11为低电平时,返回1(暗);高电平时,返回0(亮)return (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_11) == GPIO_PIN_RESET);
}// 控制蜂鸣器(on=1时发声,on=0时不发声)
static void BeepControl(int on)
{if (on)HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);  // 低电平发声elseHAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);    // 高电平不发声
}// 控制LED(on=1时点亮,on=0时熄灭)
static void LedControl(int on)
{if (on)HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);  // 低电平点亮elseHAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);    // 高电平熄灭
}
/* USER CODE END PV */
2. 主循环逻辑(在while(1)中)
while (1)
{/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if (Dark())  // 环境变暗{BeepControl(1);  // 蜂鸣器发声LedControl(1);   // LED点亮}else  // 环境变亮{BeepControl(0);  // 蜂鸣器不发声LedControl(0);   // LED熄灭}/* USER CODE END 3 */
}
五、实验结果
  • 未遮挡光敏传感器(光照强)
    请添加图片描述
    光敏传感器模块双灯亮(DO 输出低电平),PC13 LED 熄灭,蜂鸣器不发声。
  • 遮挡光敏传感器(光照弱)
    请添加图片描述
    光敏传感器模块一灯灭(DO 输出高电平),PC13 LED 点亮,蜂鸣器鸣叫。
结尾

本文通过 “光敏传感器控制蜂鸣器和 LED”,进一步练习了 GPIO 输入信号的读取与输出控制的结合,核心是通过封装函数使逻辑更清晰。但这种 “循环查询” 的方式效率较低 —— 如果需要同时处理多个任务,持续查询某一引脚会占用大量 CPU 资源。
下一篇笔记,我们将学习 “GPIO 中断”,让引脚状态变化时主动通知 CPU 处理,大幅提升响应效率。Hello_Embed 继续带你探索更高效的 GPIO 应用方式,敬请期待~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93869.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows环境,安装kafka

步骤 1: 准备工作 确保已安装 Java&#xff1a;Kafka 需要 Java 运行时环境 (JRE) 或 Java 开发工具包 (JDK) 来运行。请确认您的系统上已安装了 Java&#xff0c;并且 JAVA_HOME 环境变量正确配置。 解压 Kafka&#xff1a;将下载的 Kafka 压缩包解压到一个目录&#xff0c;比…

机器翻译60天修炼专栏介绍和目录

文章目录 第一章:机器翻译基础认知与语言学铺垫 第二章:经典机器翻译模型(统计机器翻译) 第三章:神经网络基础与词向量技术 第四章:神经机器翻译(NMT)基础架构 第五章:NMT模型进阶与训练实践 第六章:预训练模型与机器翻译应用 第七章:研究前沿与综合项目 导论:学习…

openwrt增加自定义网页

一. 简介 本文介绍在OpenWRT中使用Luci框架定制设备配置页面的方法,包括添加静态页面和参数配置页面的过程,以及如何利用lua脚本实现界面与功能的结合。 二. Luci介绍 UCI 是 Openwrt 中为实现所有系统配置的一个统一接口,英文名 Unified Configuration Interface,即统一…

微服务的编程测评系统11-jmeter-redis-竞赛列表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言1. 退出登录1.1 后端1.2 前端2. 获取当前用户信息3. C端用户竞赛列表功能3.1 后端3.2 Jmeter-基本操作3.3 数据版本性能测试-压力测试3.4 redis版本-缓存结构设计…

海滨浴场应急广播:守护碧海蓝天的安全防线

海滨浴场应急广播&#xff1a;守护碧海蓝天的安全防线&#xff01;海滨浴场&#xff0c;是人们休闲娱乐、亲近自然的理想场所。然而&#xff0c;变幻莫测的海洋环境也潜藏着诸多安全隐患&#xff0c;如溺水、离岸流、海蜇蜇伤、极端天气等。为了有效应对突发事件&#xff0c;保…

华曦达港股IPO观察丨以创新研发为笔,构建AI Home智慧生活新蓝图

深圳市华曦达科技股份有限公司自创立伊始&#xff0c;便将敏锐的市场洞察与前沿技术追踪视为生命线。通过构建一支卓越的研发团队&#xff0c;公司专注于自主核心技术的深耕与积累&#xff0c;以精密的硬件与创新的软件筑起坚实的技术壁垒。其精心打造的“技术创新&#xff0d;…

构建现代化的Web UI自动化测试框架:从图片上传测试实践说起

构建现代化的Web UI自动化测试框架&#xff1a;从图片上传测试实践说起如何设计一个可维护、可扩展的Web UI自动化测试框架&#xff1f;本文通过一个图片上传测试实例&#xff0c;详细介绍专业测试框架的搭建与实践。当前测试框架结构 首先&#xff0c;让我们了解一下当前的测试…

Apache IoTDB:大数据时代时序数据库选型的技术突围与实践指南

摘要&#xff1a;时序数据库在大数据时代迎来爆发式增长&#xff0c;IoTDB作为Apache顶级开源项目展现出显著优势&#xff1a;1. 性能卓越&#xff1a;支持千万级数据点/秒写入&#xff0c;18:1高压缩比&#xff0c;查询延迟低至500ms&#xff1b;2. 创新架构&#xff1a;采用树…

2025年8月16日(星期六):雨骑古莲村游记

清晨&#xff0c;当第一缕微光还未完全驱散夜幕的静谧&#xff0c;我们这群由校长领衔的骑行爱好者已整装待发。咖啡节早市尚未开摊&#xff0c;空气中弥漫着一种期待与宁静交织的氛围&#xff0c;仿佛连时间都在为我们即将开启的旅程而放慢脚步。今天的目标是古莲村&#xff0…

Pandas数据预处理中缺失值处理

一、缺失值的概念表现形式1.数据库中常用null表示2.部分编程语言中用NA表示3.可能表现为空字符串&#xff08;‘’&#xff09;或特定数值4.在Pandas中统一用NaN表示&#xff08;来自NumPy库&#xff0c;NaN、NAN、nan本质一致&#xff09;NaN的特性1.与任何值都不相等&#xf…

计算机网络:(十五)TCP拥塞控制与拥塞控制算法深度剖析

> 当网络变成"堵城",TCP如何化身智能交通指挥家?揭秘百万级并发背后的流量控制艺术! ### 一、生死攸关:为什么需要拥塞控制? **真实灾难案例**:1986年劳伦斯伯克利实验室网络大崩溃,因缺乏拥塞控制导致全网瘫痪36小时。TCP拥塞控制由此诞生,核心解决**资…

python中的单下划线“_”与双下划线“__”的使用场景及“左右双下划线”(魔术方法:`__xxx__`)

在Python中&#xff0c;单下划线“_”和双下划线“__”的使用场景和含义有显著区别&#xff0c;主要体现在命名约定和语法 一、单下划线“_”的使用场景 单下划线更多是编程约定&#xff08;而非强制语法&#xff09;&#xff0c;用于传递特定的“暗示”&#xff0c;不影响代码…

我们为什么需要时序数据库?

引言在当今数据驱动的世界中&#xff0c;时间序列数据正以前所未有的速度增长。从物联网设备传感器、金融交易记录到应用程序性能监控&#xff0c;时间序列数据无处不在。传统的关系型数据库在处理这类数据时往往力不从心&#xff0c;这时时序数据库(Time Series Database, TSD…

python-林粒粒的视频笔记1

python的方法和函数指什么 可变类型和不可变类型 不可变类型&#xff0c;比如字符串通过方法调用后&#xff0c;字符串本身的值不改变 要改变需要重新赋值才能进行改变 比如可变数据类型类型&#xff0c;调用方法后可以直接改变原列表 因此&#xff0c;可变数据类型需要再重新赋…

CentOS 7的下载与安装

一 、CentOS 7的下载与安装 注意&#xff1a; CentOS 7 已于2024年6月30日停止维护&#xff01; 1、下载 由于 centos 7 已经停止维护&#xff0c;部分镜像网站移除了对centos 7的支持&#xff0c;这里找到了部分现在还可以使用的镜像网站 阿里云开源镜像站&#xff1a;http…

矿物分类系统开发笔记(二):模型训练[删除空缺行]

目录 一、阶段衔接与开发目标 二、数据准备 三、模型选择与训练 1. 逻辑回归&#xff08;LR&#xff09; 2. 随机森林&#xff08;RF&#xff09; 3. 高斯朴素贝叶斯&#xff08;GNB&#xff09; 4. 支持向量机&#xff08;SVM&#xff09; 5. AdaBoost 6. XGBoost 四…

通信方式:命名管道

一、命名管道 1. 命名管道的原理 有了匿名管道&#xff0c;理解命名管道就非常简单了。 对于普通文件而言&#xff0c;两个进程打开同一个文件&#xff0c;OS是不会将文件加载两次的&#xff0c;这两个进程都会指向同一个文件&#xff0c;那么&#xff0c;也就享有同一份 in…

如何将数据库快速接入大模型实现智能问数,实现chatbi、dataagent,只需短短几步,不需要配置工作流!

智能问数系统初始化操作流程 一、系统初始化与管理员账号创建登录与初始化提示&#xff1a;首次访问系统登录页&#xff0c;若系统未初始化&#xff0c;会弹出 “系统未完成初始化&#xff0c;请初始化管理员账号” 提示&#xff0c;点击【去创建】。填写管理员信息&#xff1a…

告别手写文档!Spring Boot API 文档终极解决方案:SpringDoc OpenAPI

在前后端分离和微服务盛行的今天&#xff0c;API 文档是团队协作的“通用语言”。一份清晰、准确、实时同步的文档&#xff0c;能极大提升开发和联调效率。然而&#xff0c;手动编写和维护 API 文档&#xff08;如 Word、Markdown 或 Postman&#xff09;是一场永无止境的噩梦—…

N4200EX是一款全智能超声波检测仪产品简析

N4200EX是一款全智能超声波检测仪&#xff0c;适用于石油、石化、天然气、气体生产等行业的压力管路、阀门、设备的各种防爆场合气体泄漏、真空泄漏、阀门内漏检测。●本安防爆设计&#xff0c;防爆、防尘、防水、抗摔。●适应恶劣环境&#xff0c;可在-25℃超低温环境检测&…