stm32c8t6光敏传感器检测有光无光(附代码)
电位器:灵敏度调节 / 阈值设定(逆时针转增加亮度检测阈值,顺时针转减小亮度检测阈值)DO:数字开关量输出(光线超过设定阈值时输出低电平,否则输出高电平)开关指示灯:亮度低于设定阈值时熄灭,高于设定阈值时点亮。VCC:供电正极(3.3 - 5V)
·
一、实物图


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
更多推荐



所有评论(0)