一、連線問題(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);
}
}
|