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

Posted stmplayer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32与4脚光敏电阻的简单使用——初学相关的知识,希望对你有一定的参考价值。

       这是我第一次写CSDN,排版可能有许多问题,描述的可能也有不清楚的地方,有问题的小伙伴可以私聊我,一起学习共同进步。

       今天发现了一个很有意思的传感器——光敏传感器,它可以判断光线的亮暗,当然亮暗是个相对的说法,它可以自己设定阈值,今天来聊聊他最简单的使用。

 

  它具有四个引脚,VCC可以连接STM32板的3.3V或者5.0V电压接口。GND可以连接STM32单片机的GND。DO口是开关输出,可以输出1和0,代表高低电平。AO口是模拟量输出,可以利用STM32的ADC来读取他的电压,从而得出需要的数据。

  今天只是简单的认识和使用光敏电阻模块,所以只使用DO接口,AO接口可以不用连接,过几天我会发布AO接口的使用方法。

  按照接线VCC连接单片机3.3V,GND连接单片机的GND,DO接口连接单片机的PA6接口。接法如图(考虑有很多刚入门的兄弟,所以尽量的简单和详细):

连线就是这么简单,光敏电阻自带LED灯,连接好线时,当光线暗的时候,背面只会亮一个灯,当光线足够亮时,背面的两个灯都会亮起来。通过对光线亮暗的控制可以控制DO输出高低电平。可以通过库函数GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6);来读取此时DO输出的状态。为了更好的展示实验结果,当光线暗时,LED0不亮灯,光线足够时LED0亮。

实现通过光线亮暗来控制LED0亮灭的代码为:

 u8 value;
value=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6); 
if(value == 0)
	GPIO_ResetBits(GPIOA,GPIO_Pin_8);    //¹âÏß°µµÆÃð
			
else
	GPIO_SetBits(GPIOA,GPIO_Pin_8);      //¹âÏßÁÁµÆÁÁ

初始化PA6为输入状态:

#ifndef __RED_H
#define __RED_H	 
#include "sys.h"


#define PA6 PAout(6)	

void RED_Init(void);

 				    
#endif
#include "red.h"

void RED_Init()
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);	 	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;				 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 
 GPIO_ResetBits(GPIOA,GPIO_Pin_6);
}
 

还要记得调用正点原子自带的led.h文件里的led_Init()函数,不然LED0是不会亮的,它里面包含了PA8引脚的初始化,单片机内部默认PA8是控制LED0的。

已经写的非常的简单易懂了,还有什么问题的私聊我。

以上是关于STM32与4脚光敏电阻的简单使用——初学的主要内容,如果未能解决你的问题,请参考以下文章

STM32 实现光敏传感器

STM32CubeMX驱动4脚OLED模块

STM32F103RB - 如何知道使用哪个引脚发送触发信号

关于STM32系统构架的一点见解

stm32之入门知识

STM32 为啥不加电阻和电容也能复位啊