一、实物图

二、引脚介绍

VCC:供电正极(3.3 - 5V)
GND:供电负极
DO:数字开关量输出(光线超过设定阈值时输出低电平,否则输出高电平)
AO:模拟量输出
电位器:灵敏度调节 / 阈值设定(逆时针转增加亮度检测阈值,顺时针转减小亮度检测阈值)
开关指示灯:亮度低于设定阈值时熄灭,高于设定阈值时点亮2.原理图

三、程序设计

本程序控制通过光敏传感器控制led灯亮灭,黑暗环境灯亮,白天环境灯

接线(VCC-3.3V,GND-GND,DO-PB14)

(附件程序为ad通道和本程序)

guang.c

 #include "guang.h"

 
void GUANG_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};
  GPIO_InitTypeDef GPIO_InitStruct_IN = {0};
  __HAL_RCC_GPIOB_CLK_ENABLE();

  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);

  /*Configure GPIO pin : PtPin */
  GPIO_InitStruct_IN.Pin = GPIO_PIN_14;
  GPIO_InitStruct_IN.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct_IN.Pull = GPIO_PULLUP;
//  GPIO_InitStruct_IN.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct_IN);

}

guang.h

#ifndef __GUANG_H__
#define __GUANG_H__

#include "main.h"

void GUANG_GPIO_Init(void);

#endif

led.c

//初始化函数
void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);


  /*Configure GPIO pin : PtPin */
  GPIO_InitStruct.Pin = LED_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);

}
/**
  * @brief          控制led1亮灭函数
  * @param[in]      status: 为1时led灯点亮,为0时led灯熄灭
  * @retval         none
  */
void set_led(uint8_t status)
{
  if(status==1)
  {
    HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
  }
  else
  {
    HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
  }
}

led.h

#ifndef __LED_H__
#define __LED_H__

#include "main.h"

void set_led(uint8_t status);

void MX_GPIO_Init(void);
#endif

main.c

void user_init_program(void)
{
  GUANG_GPIO_Init();
  MX_GPIO_Init();
}
/**
  * @brief          初始化函数,相当于Arduino的loop()函数,一直执行该函数
  * @param[in]      none
  * @retval         none
  */
int main(void)
{
   user_init_program();
   while(1)
      {
        if((GPIOB->IDR & (1<<14))==0) 
           { 
                HAL_Delay(10);
                if((GPIOB->IDR & (1<<14))==0)
	           		
				{
                   set_led(0);//灭
	            }
           }
	     else   set_led(1);//亮	

      }	 
	 
}

代码链接:https://pan.baidu.com/s/1Zb-JSzHR_Iq50QI81ZakEA 
提取码:HHHH

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐