stm32f103c8t6雨滴传感器的使用
时间: 2025-02-06 18:11:08 浏览: 29
STM32F103C8T6微控制器与雨滴传感器连接及编程
连接方法
对于STM32F103C8T6微控制器与雨滴传感器之间的连接,主要依赖于模拟输入通道读取来自雨滴传感器的电压变化。通常情况下,雨滴传感器提供了一个随湿度改变而变化的电阻值,该阻值的变化能够被转化为ADC(模数转换器)可以识别的电信号[^3]。
为了完成硬件上的连接工作,需将雨滴传感器的数据线接到STM32开发板上任意可用的ADC引脚上;GND端接地处理;VCC则接入电源正极。具体来说,在本案例中选择了PA0作为ADC采集点之一。
初始化设置
初始化阶段涉及到配置ADC外设以及使能相应的时钟资源。下面是一段用于初始化ADC功能并准备接收来自雨滴传感器数据的基础代码:
void Adc_Init(void){
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA, ENABLE);
// PA0 设置为模拟输入模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA,&GPIO📐⚗⚗
⚗⚗⚗/WebAPI/GPIO_Init(&GPIO_InitStructure));
ADC_DeInit(ADC1);
// 配置ADC参数...
}
这段代码完成了对ADC模块的基本设定,并指定了要使用的IO口为模拟输入状态以便后续获取环境中的湿气程度信息。
数据读取与处理
当一切准备好之后就可以开始周期性的从选定的ADC通道收集样本了。这里给出了一种简单的方法来计算平均值得以减少噪声干扰的影响:
u16 Get_Adc_Average(u8 ch,u8 times){
u32 temp_val=0;
for(;times>0;times--){
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
temp_val+=ADC_GetConversionValue(ADC1);
}
return (u16)(temp_val/times);
}
// 获取AD采样后的结果
adcx = Get_Adc_Average(ADC_Channel_1,10) ;
yuliang =(float)adcx*(3.3/4096);
printf("雨量信息是:%f\r\n",yuliang);
上述程序片段展示了如何调用Get_Adc_Average()
函数多次测量同一位置下的ADC值从而得到更稳定的结果,并最终将其转换成浮点型变量表示的实际物理意义——即降雨强度或水量大小。
相关推荐


















