使用STM32基于光敏电阻的光线检测器(STM32 Project 1)

配件部分

用到的配件有

1.面包板

2.stm32最小系统板

3.三线制光敏传感器

4.杜邦线若干

5.St-link下载器

6.Oled显示屏

实现功能

要实现的功能是当光敏电阻被遮挡时,光敏传感器会从DO口返回一个值(高低电平),利用stm32标准库函数中读取引脚电平函数读取光敏传感器返回值,对此值做一些运算以后,将当前是否遮挡显示在oled显示屏上

配件连接

st-link四个接口分别与最小系统板四接口连接——vcc(高电平),gnd(地线),swclk(串行时钟),swdio(串行数据)

oled四接口——gnd,vcc,scl,sda分别与最小系统板gnd,vcc,B6,B7相连接

光敏传感器三接口——gnd,vcc,do(数字信号输出)分别与最小系统板gnd,vcc,B12相连接

代码驱动

用到stm32标准库函数,以及完成封装的oled驱动函数

主要思路为:利用标准库函数GPIO_ReadInputDataBit()读取光敏传感器返回Do值,其中传感器模块在环境光线亮度达不到阈值时do口输出高电平,达到阈值时输出低电平,根据读取值判断环境光线亮度,并将此值经过运算输出在oled显示屏

光敏传感器部分代码

void lit_init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStructure);
}//光敏传感器初始化

                                                                                                          int get_lit(void){
	return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12);
}//光敏传感器读取

oled部分采用江协科技封装驱动函数

主程序部分

#include "stm32f10x.h"                  // Device header
#include "OLED.h"
#include "lit_init.h"

int main(){
	lit_init();
	OLED_Init();
	while(1){
	if(get_lit()==0){
	OLED_ShowString(1,1,"enoughlit");
	}
	if(get_lit()==1){
	OLED_ShowString(1,1,"nolit");
	}//进行判断,如果读取端口值为0,光敏传感器do口为低电平,说明光线充足
}}

运行效果

852017d1305349aa8cc35d2ae4cdb060.jpeg

 

作者:ZK_H

物联沃分享整理
物联沃-IOTWORD物联网 » 使用STM32基于光敏电阻的光线检测器(STM32 Project 1)

发表评论