四线光敏电阻模块讲解

一、模块实物图

   二、模块概述

2、1 模块特性

1. 光敏电阻模块对环境光线最敏感,一般用来检测周围环境的光线的亮度,触发单片机或继电器模块等;
2. 模块在环境光线亮度达不到设定阈值时,DO 端输出高电平,当外界环境光线亮度超过设定阈值时,DO
端输出低电平;
3. DO 输出端可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光线亮度改变;
4. DO 输出端可以直接驱动继电器模块,由此可以组成一个光控开关。

2.2 接口说明

VCC:外接3.3V-5.0V

GND:接地

DO:开关信号输出(0和1)

AO:模拟电压输出

三、转换公式

通过adc模数转化,获取到采样值,然后通过占比,获取到我们电压值,亦可将3.3换为100,将光照强度转化为百分比。

三、代码演示

#include "adc.h"

/***********************
函数名:ADC1_Init
函数功能:模数转换初始化
形参:void
返回值:void
函数说明:
光敏电阻  ---PA5--ADC12_IN5
************************/
void ADC1_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	ADC_InitTypeDef ADC_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//使能ADC1
	
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
	ADC_DeInit(ADC1);
	
	ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//连续转化模式设置
	ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//数据左对齐
	ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//软件触发
	ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//独立模式
	ADC_InitStructure.ADC_NbrOfChannel=1;//通道数
	ADC_InitStructure.ADC_ScanConvMode=DISABLE;//扫描模式禁止设置
	ADC_Init(ADC1,&ADC_InitStructure);
	
	//ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器
	
	ADC_Cmd(ADC1,ENABLE);//使能指定ADC外设
	
	ADC_ResetCalibration(ADC1);//使能复位校准
	while(ADC_GetResetCalibrationStatus(ADC1));//等待复位校准结束
	ADC_StartCalibration(ADC1);//开启AD校准
	ADC_GetCalibrationStatus(ADC1);//等待AD校准结束
}
/***********************
函数名:get_Adc_Value
函数功能:换取采样值
形参:u8 ch
返回值:u16
函数说明:
ch 转换通道   ADC_SampleTime_239Cycles5采样时间值    采样时间选择最长
1  采样通道数量
光敏电阻  ---PA5--ADC12_IN5
************************/
u16 get_Adc_Value(u8 ch)//通道一采样值
{	
   ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5);//ADC匹配通道
	 ADC_SoftwareStartConvCmd(ADC1,ENABLE);//ADC软件转换启动
	 while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待采样结束
	 return ADC_GetConversionValue(ADC1);//放回采样值
}


/***********************
函数名:Get_light_Value
函数功能:光照强度
形参:void
返回值:void
函数说明:
光敏电阻  ---PA5--ADC12_IN5---0x05
************************/
u8 light_value,soil_value;
u8 buf3[20];
u8 buf4[20];
u8 light_flag=0;
u8 soil_flag=0;
void Get_light_Value(void)
{
	light_value=0;
	u16 Rec=0;
	Rec=get_Adc_Value(0x05);//获取采样数值
	light_value = 100 - ((100 * Rec)/4096);//光照强度百分比

	sprintf((char *)buf3,"光照强度:%d%%LX",light_value);
	if(light_flag ==0)
	{
		Oled_ShowAll(4,0,buf3);//显示中英字符串
	}

}

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯之王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值