四线光敏电阻模块详解:原理与代码实现
创作时间:
作者:
@小白创作中心
四线光敏电阻模块详解:原理与代码实现
引用
CSDN
1.
https://blog.csdn.net/weixin_52680858/article/details/138321334
一、模块实物图
二、模块概述
2.1 模块特性
- 光敏电阻模块对环境光线最敏感,一般用来检测周围环境的光线亮度,触发单片机或继电器模块等;
- 模块在环境光线亮度达不到设定阈值时,DO端输出高电平,当外界环境光线亮度超过设定阈值时,DO端输出低电平;
- DO输出端可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光线亮度改变;
- 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);//显示中英字符串
}
}
热门推荐
二手房中介费怎么计算?一文详解中介服务费用
做腹部彩超需要空腹吗不能喝水吗
金庸武侠里,同为绝顶高手扫地僧与张三丰,究竟谁更胜一筹
尿素生产工艺解析
心理学情绪调节的方法,控制情绪的心理调节方法
巨骨舌鱼一年能长多大?
孕妈妈使用含水杨酸洗发水的安全性解析
五金电动工具百科知识大讲堂:电锯简介、选购、使用及保养
探究多媒体时代建筑企业加强宣传工作的有效策略
如何写github项目文档
水救技术高峰论坛+千岛湖空水救援实战演练,战力值拉满!
塔罗牌是什么:占卜工具与预测能力解析
麻婆豆腐制作详解:掌握三个关键窍门,轻松做出正宗美味
《荒野大镖客:救赎2》七年后登顶Steam销量榜的秘密
刹住“狂飙的小电驴”——电动自行车新国标提出更加严格安全要求
薛之谦的励志故事:从瑞士留学到音乐梦想的坚持
如何评估公司投资表现?这些评估标准对投资决策有何影响?
热力图:数据可视化的强大工具(上)
有期徒刑六个月缓刑一年是什么意思
《坦克世界》中的VK7201:从“失败狮”到“暴力王”的重装斗士
学会腹式呼吸让你更健康!
过年之后多吃这道菜,营养丰富脂肪低,比红薯润肠,比莴笋营养
卤菜店管理制度:规范经营、保障食品安全
学生论文连获国际顶会最佳,上海这所研究型高校为什么行?
库车旅游必去景点推荐:你不能错过的自然与历史之美
中国59式主战坦克,一口气生产了近1万辆,不愧是经典的“五对轮”
养殖自动化远程监控系统
Eclipse如何导入项目?详细步骤图文解析
地漏尺寸规格全解析:选购要点与安装指南
巴特勒交易后去了勇士,今年他们具有夺冠实力了吗?