Files
Smart-granary-code/components/bh1750/include/bh1750.h
Wang Beihong ffdb7065e3 功能:集成SU-03T语音模块,完善UI代码文档
- 在CMakeLists.txt中添加SU-03T语音模块依赖。
- 在main.cpp中实现SU-03T接收回调函数,处理接收消息。
- 完善各UI源文件文档,包括动作、屏幕和字体,明确模块作用与数据流向。
- 更新主应用逻辑,初始化并启动SU-03T接收器。
- 修改过程中确保兼容性,保留原有接口。
2026-04-22 01:06:10 +08:00

146 lines
4.3 KiB
C

/*
* 文件: components/bh1750/include/bh1750.h
* 角色: BH1750 光照传感器驱动封装
* 说明:
* - 本文件用于实现当前模块的核心功能或接口定义。
* - 修改前请先确认该模块与其它任务/外设之间的数据流关系。
* - 涉及协议与硬件时,优先保持现有接口兼容,避免联调回归。
*/
/*
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief BH1750 driver
*/
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include "driver/i2c_types.h"
#include "esp_err.h"
typedef enum {
BH1750_CONTINUE_1LX_RES = 0x10, /*!< Command to set measure mode as Continuously H-Resolution mode*/
BH1750_CONTINUE_HALFLX_RES = 0x11, /*!< Command to set measure mode as Continuously H-Resolution mode2*/
BH1750_CONTINUE_4LX_RES = 0x13, /*!< Command to set measure mode as Continuously L-Resolution mode*/
BH1750_ONETIME_1LX_RES = 0x20, /*!< Command to set measure mode as One Time H-Resolution mode*/
BH1750_ONETIME_HALFLX_RES = 0x21, /*!< Command to set measure mode as One Time H-Resolution mode2*/
BH1750_ONETIME_4LX_RES = 0x23, /*!< Command to set measure mode as One Time L-Resolution mode*/
} bh1750_measure_mode_t;
#define BH1750_I2C_ADDRESS_DEFAULT (0x23)
typedef void *bh1750_handle_t;
/**
* @brief Set bh1750 as power down mode (low current)
*
* @param sensor object handle of bh1750
*
* @return
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t bh1750_power_down(bh1750_handle_t sensor);
/**
* @brief Set bh1750 as power on mode
*
* @param sensor object handle of bh1750
*
* @return
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t bh1750_power_on(bh1750_handle_t sensor);
/**
* @brief Get light intensity from bh1750
*
* @param sensor object handle of bh1750
* @param[in] cmd_measure the instruction to set measurement mode
*
* @note
* You should call this funtion to set measurement mode before call bh1750_get_data() to acquire data.
* If you set onetime mode, you just can get one measurement result.
* If you set continuous mode, you can call bh1750_get_data() to acquire data repeatedly.
*
* @return
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t bh1750_set_measure_mode(bh1750_handle_t sensor, const bh1750_measure_mode_t cmd_measure);
/**
* @brief Get light intensity from BH1750
*
* Returns light intensity in [lx] corrected by typical BH1750 Measurement Accuracy (= 1.2).
*
* @see BH1750 datasheet Rev. D page 2
*
* @note
* You should acquire data from the sensor after the measurement time is over,
* so take care of measurement time in different modes.
*
* @param sensor object handle of bh1750
* @param[out] data light intensity value got from bh1750 in [lx]
*
* @return
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t bh1750_get_data(bh1750_handle_t sensor, float *const data);
/**
* @brief Set measurement time
*
* This function is used to adjust BH1750 sensitivity, i.e. compensating influence from optical window.
*
* @see BH1750 datasheet Rev. D page 11
*
* @param sensor object handle of bh1750
* @param[in] measure_time measurement time
*
* @return
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t bh1750_set_measure_time(bh1750_handle_t sensor, const uint8_t measure_time);
/**
* @brief Create and init sensor object and return a sensor handle
*
* @param[in] i2c_bus I2C bus handle. Obtained from i2c_new_master_bus().s
* @param[in] dev_addr I2C device address of sensor. Use BH1750_I2C_ADDRESS_DEFAULT for default address.
* @param[out] handle_ret Handle to created BH1750 driver object.
*
* @return
* - ESP_OK Success
* - ESP_ERR_NO_MEM Not enough memory for the driver
* - ESP_ERR_NOT_FOUND Sensor not found on the I2C bus
* - Others Error from underlying I2C driver
*/
esp_err_t bh1750_create(i2c_master_bus_handle_t i2c_bus, const uint8_t dev_addr, bh1750_handle_t *handle_ret);
/**
* @brief Delete and release a sensor object
*
* @param sensor object handle of bh1750
*
* @return
* - ESP_OK Success
* - ESP_FAIL Fail
*/
esp_err_t bh1750_delete(bh1750_handle_t sensor);
#ifdef __cplusplus
}
#endif