stm32 光敏电阻 led 蜂鸣器
时间: 2024-12-31 15:46:40 浏览: 9
### STM32 使用光敏电阻控制 LED 和蜂鸣器
#### 实现思路
在STM32平台上实现通过光敏电阻来控制LED和蜂鸣器的功能,主要涉及读取模拟信号并将其转换为数字信号处理。具体来说,当环境光线强度变化时,光敏电阻阻值随之改变,进而影响ADC采集到的电压值。根据设定阈值判断当前光照条件,并据此触发相应动作。
#### 硬件连接说明
- 将光敏电阻接入STM32的一个ADC通道(例如PA0)
- 连接LED至指定IO端口(如PB5),并通过限流电阻接地
- 接入有源蜂鸣器于另一GPIO引脚(比如PD2)
#### 示例代码展示
下面给出一段基于HAL库编写的C语言程序片段:
```c
#include "main.h"
#define LIGHT_THRESHOLD 1500 // 设置亮度阈值
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_ADC1_Init(void);
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC1_Init();
uint32_t adcValue;
while (1) {
/* 启动一次单次模式下的AD转换 */
HAL_ADC_Start(&hadc1);
/* 阻塞等待直到完成一组完整的转换序列 */
if(HAL_OK == HAL_ADC_PollForConversion(&hadc1, 10)){
adcValue = HAL_ADC_GetValue(&hadc1);
if(adcValue > LIGHT_THRESHOLD){
// 当检测到强光时点亮LED关闭蜂鸣器
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, RESET);
}else{
// 若处于较暗环境中则熄灭LED开启蜂鸣器报警
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, RESET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, SET);
}
/* 延迟一段时间再进行下一轮采样 */
HAL_Delay(500);
}
}
}
```
此段代码实现了基本逻辑:每当测量得到的ADC数值超过预设界限`LIGHT_THRESHOLD`时,则认为周围存在较强光源照射;反之,在昏暗环境下执行相反操作[^2]。
阅读全文