STM32 实现光敏传感器

Posted 为了维护世界和平_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 实现光敏传感器相关的知识,希望对你有一定的参考价值。

原理

光敏电阻将光强转换成电压信号;
有强时 DO 输出低电平,光弱时 DO 输出高电平;

电源接 5V 时,DO 输出的是 2.6V
不同强度的光强,可以通过调节滑块来改变

光敏电阻实物图

引脚说明

名称Value
VCC电源(5V)
GND地线
OD输出信号

实现功能

有光时,开发版的LED灯亮,没有光时,灯灭;

原理图

LED灯原理图

将光敏电阻的OD引脚接到开发版的PC13上

配置方法

  • 设置LED的时钟
  • 配置LED的GPIO
    选择GPIO类,GPIO时钟,GPIO具体引脚
//STM32上的LED1 GPIO为PB5

#define LED1_GPIO_PORT    GPIOB			            
#define LED1_GPIO_CLK 	    RCC_APB2Periph_GPIOB	
#define LED1_GPIO_PIN		GPIO_Pin_5

#define ON  0
#define OFF 1

/* 宏定义实现LED灯的设置*/
#define LED1(a)	if (a)	\\
					GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);\\
					else		\\
					GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN)
			 
void LED_GPIO_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_APB2PeriphClockCmd( LED1_GPIO_CLK, ENABLE);
		
		GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;	
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
		GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
}
  • 配置LDR的时钟
  • 配置LDR的GPIO
#define    LDR_GPIO_CLK       RCC_APB2Periph_GPIOC
#define    LDR_GPIO_PORT    GPIOC		   
#define    LDR_GPIO_PIN		  GPIO_Pin_13

void LDR_GPIO_Config(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
   RCC_APB2PeriphClockCmd(LDR_GPIO_CLK,ENABLE);
   
   GPIO_InitStructure.GPIO_Pin = LDR_GPIO_PIN; 
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 
   GPIO_Init(LDR_GPIO_PORT, &GPIO_InitStructure);
}

//检测功能
uint8_t LDR_Test(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{			
   if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == 1 )  //读取DO数据,如果高,则LDR设置OFF,否则设置ON
   	return LDR_OFF;  
   else
   	return LDR_ON;   
}

主函数

int main(void)
{	
	LED_GPIO_Config();//LED配置
	LED2_OFF;//LED灯初始化熄灭

	LDR_GPIO_Config();//光敏配置
	
	while(1)
	{	   
		if (LDR_Test(LDR_GPIO_PORT,LDR_GPIO_PIN) == LDR_ON)
      		LED2_ON;  
    	else
      		LED2_OFF; 
	}
}

以上是关于STM32 实现光敏传感器的主要内容,如果未能解决你的问题,请参考以下文章

STM32+BH1750光敏传感器获取光照强度

STM32+BH1750光敏传感器获取光照强度

STM32F103(十九)ADC相关的几个实验—内部温度传感器内部参照电压光敏传感器

《嵌入式-STM32开发指南》第三部分 外设篇 - 第5章 光敏传感器

《嵌入式-STM32开发指南》第三部分 外设篇 - 第5章 光敏传感器

STM32与4脚光敏电阻的简单使用——初学