找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2951|回复: 0
打印 上一主题 下一主题
收起左侧

STM32雨滴检测传感器部分程序

[复制链接]
跳转到指定楼层
楼主
ID:897278 发表于 2021-3-27 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、连线问题(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);      
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表