|
一、連線問題(MH-RD)
雨滴檢測板與傳感器相連(不分正負(fù)),傳感器與開發(fā)板相連,記得vcc與gnd不要接反,不小心燒到一個(gè)了。
引腳D0是開關(guān)信號(hào)輸出,檢測有沒有雨滴(0和1),本處接到PD5引腳
引腳A0是模擬電壓輸出,可以輸出模擬電壓,需要接到對應(yīng)功能的引腳,本處接到PA1引腳二、主要源碼
1、rain.h里的源碼
#include "system.h"
#define RAIN_STATE() GPIO_ReadInputDataBit(rain_PORT,rain_PIN)//讀紅外的狀態(tài)
#define rain_PORT GPIOC
#define rain_PIN GPIO_Pin_4
#define rain_RCC RCC_APB2Periph_GPIOC
2、rain.c里的源碼,對rain.c文件中的PD5接收引腳進(jìn)行初始化
void rain_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//定義結(jié)構(gòu)體變量
RCC_APB2PeriphClockCmd(rain_RCC,ENABLE);
GPIO_InitStructure.GPIO_Pin=rain_PIN; //選擇你要設(shè)置的IO口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //設(shè)置浮空輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //設(shè)置傳輸速率
GPIO_Init(rain_PORT,&GPIO_InitStructure); /* 初始化GPIO */
}
3、最后,在main.c函數(shù)里面進(jìn)行情況選擇,簡單的調(diào)試程序
int main()
{
u8 i=0;
u16 value=0;
float vol;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級(jí)分組 分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);
}
}
|
|