一、连线问题(MH-RD)
雨滴检测板与传感器相连(不分正负),传感器与开发板相连,记得vcc与gnd不要接反,不小心烧到一个了。
引脚D0是开关信号输出,检测有没有雨滴(0和1),本处接到PD5引脚
引脚A0是模拟电压输出,可以输出模拟电压,需要接到对应功能的引脚,本处接到PA1引脚二、主要源码
1、rain.h里的源码
#include "system.h"
#define RAIN_STATE() GPIO_ReadInputDataBit(rain_PORT,rain_PIN)//读红外的状态
#define rain_PORT GPIOC
#define rain_PIN GPIO_Pin_4
#define rain_RCC RCC_APB2Periph_GPIOC
2、rain.c里的源码,对rain.c文件中的PD5接收引脚进行初始化
void rain_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
RCC_APB2PeriphClockCmd(rain_RCC,ENABLE);
GPIO_InitStructure.GPIO_Pin=rain_PIN; //选择你要设置的IO口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //设置浮空输入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置传输速率
GPIO_Init(rain_PORT,&GPIO_InitStructure); /* 初始化GPIO */
}
3、最后,在main.c函数里面进行情况选择,简单的调试程序
int main()
{
u8 i=0;
u16 value=0;
float vol;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
USART1_Init(115200);
ADCx_Init();
while(1)
{
i++;
if(i%20==0)
{
LED1=!LED1;
}
if(i%50==0)
{
value=Get_ADC_Value(ADC_Channel_1,20);
printf("检测AD值为:%d\r\n",value);
vol=(float)value*(3.3/4096);
printf("检测电压值为:%.2fV\r\n",vol);
}
delay_ms(10);
}
}
|