目录
1.1 雨滴传感器简介
为确保自适应天气控制策略执行的准确性,加设雨滴传感器来辅助判断天气情况。该传感器用于雨雪天气状况的监测,可转成数字信号或模拟信号输出。传感器采用高品质FR-04双面材料,采用镀镍处理表面,具有对抗氧化,导电性,及寿命方面更优越的性能。如图1所示。
该传感器具有数字开关量DO输出(0和1)和模拟量AO电压输出两种输出形式。
本系统使用雨滴传感器仅辅助判断识别是否有雨掉落,因此单片机仅需连接其DO数字量输出,通过检测其高低电平来判断感应板上是否有雨,因此接线如下所示:
GND——GND
VCC——3.3V
DO——PC0
若想采集雨量的大小,可将单片机接入其AO模拟量输出口,用ADC进行模拟信号采集。
1.2 代码浅析
water.h
#ifndef __WATER_H
#define __WATER_H
#include "sys.h"
#define gpio_readC GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0) //读取GPIOA的P0口电平(0/1)
void Water_Init(void); //延时初始化函数
int Water_read(void); //读取A0口
#endif
water.c
#include "delay.h"
#include "water.h"
#include "uart.h"
void Water_Init(void)
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOA端口时钟
GPIO_InitTypeDef GPIO_InitStructure; //定义一个设置GPIO的结构体变量
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //设置PC0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //设置PC0引脚为浮空输入
GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化GPIOC
}
int Water_read(void)
{
if(gpio_readC == 1)
{
return 1;
}
else
{
return 0;
}
}
函数Water_read(void)是读取雨滴传感器的状态,无雨时,感应板上无水滴,DO输出为高电平,结果返回1;有雨时,DO输出为低电平,结果返回0;