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

韦东山hal库 使用光敏传感器控制蜂鸣器

光敏传感器和蜂鸣器原理图

光敏电阻

image-20241116113928412

它的原理图为:

image-20241116113945153

LM393 是比较器,它的“+”极接到光敏电阻,“-”极接到可调电阻。当“+”极的电压大于“-”极的电压时,DO 输出高电平,LED 被熄灭;当“+”极的电压小于“-”极的电压时,DO 输出低电平,LED 被点亮。
调整可调电阻,就是调整“-”极的电压,也就是调整比较器的参考电压。
当光照比较强烈时,光敏电阻阻值下降,“+”极电压下降低于“-”极电压时,DO 输出低电平,LED 被点亮。
当光照比较弱时,光敏电阻阻值上升,“+”极电压上升高于“-”极电压时,DO 输出高电平,LED 被熄灭。

image-20241116114014467

有源蜂鸣器

有源蜂鸣器样子如下:

image-20241116114033936

目标

当比较暗的时候,点亮 LED、发出声音。

源文件:

https://wwyz.lanzoul.com/ivX7O2f7lk5g

代码分析

韦东山, 蜂鸣器和光敏电阻器件结合调试思路。

我们定义功能,

手遮挡器件, 然后触发 蜂鸣器响, 小灯亮

我们首先了解光敏电阻, 光照强度强, 电阻变小, V+ < V-(我理解是电压引入地下) , 所以输出电平变成了, 低电平

光照强度强, 电阻变小, V+ > V-(我理解是电压被电阻挡着了) , 所以输出电平变成了, 高电平

所以, 触发开关, 就是光照强度低, 端口输出 高电平

光敏电阻:

高电平 = 开

低电平 = 关

/**************************************************
函数名: static int isDark(void);
功  能: 当手遮挡的时候, 触发开关,
        光照强度强(手没有遮挡):  低电平 (电阻阻值下降, 正极的电压导入了地下, 所以 + 下降, -上升, 所以低电平)
        光照强度弱(手遮挡):  do, 高电平 (电阻阻值升高, 正极的电压被阻挡, 所以 + > - , 电压上升, 高电平)
参  数: 
返回值: 
**************************************************/
static int isDark(void)
{
		return (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_11) == GPIO_PIN_SET);
}

然后我们通过判断这个电平, 来控制 蜂鸣器

if(触发/高电平/遮挡)

{

​ //开小灯

​ //小灯根据插得方式, 进行控制电平, 同时也要考虑, 初始的时候, 电平是高电平, 还是低电平, 记得, 咱们想要的逻辑吻合

​ //比如平时, 想要让led灭, 手遮挡时候, 亮, 然后小灯, 正极是电源, 负极是io口, 那么小灯平时io口,就需要高电平, 被遮挡, io口是低电平, 对应的代码

static void LedControl(int on)
{
	if (on)
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
	else
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
}

​ //开蜂鸣器(同理)这里蜂鸣器正极连io口, 负极连地

static void BeepControl(int on)
{
	if (on)
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
	else
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
}

}


http://www.kler.cn/a/407469.html

相关文章:

  • GoZero对接GPT接口的设计与实现:问题分析与解决
  • 深入探索:JavaScript中实现乱序函数的艺术
  • 电脑禁用U盘的四种简单方法(电脑怎么阻止u盘使用)
  • HDR视频技术之三:色度学与颜色空间
  • [CISCN 2019初赛]Love Math 详细题解
  • Centos Stream 9安装Jenkins-2.485 构建自动化项目步骤
  • 【SKFramework框架核心模块】3-2、音频管理模块
  • 第10章 JavaScript的应用作业
  • 数据集-目标检测系列- 昙花(昙花一现) 检测数据集 epiphyllum >> DataBall
  • 机器学习周志华学习笔记-第6章<支持向量机>
  • MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
  • 第十六届蓝桥杯模拟赛第二期题解—Java
  • 自动化报表怎么写
  • python特殊字符序列
  • go-zero(九) 自定义拦截器
  • Rust中的静态派发与动态派发
  • 数据结构--跳表
  • Spark 中的 Shuffle 是分布式数据交换的核心流程,从源码角度分析 Shuffle 的执行路径
  • Microsoft SEAL中dwthandler.h解析
  • OpenCV相机标定与3D重建(3)校正鱼眼镜头畸变的函数calibrate()的使用