广州科技网站建设,郑州哪家公司做网站好,网站这么做优化,天津造价信息网简介
对前面几篇整合, 做个小小汇总试验, 使用BearPi E53_SC1扩展板主芯片: STM32L431RCT6串口: Usart1扩展板与主板连接: I2C : I2C1 (光照强度传感器#xff1a;BH1750)LED: PB9步骤 创建项目 参考 BearPi Std 板从入门到放弃 - 引气入体篇#xff08;1#xff09;(由零创…简介
对前面几篇整合, 做个小小汇总试验, 使用BearPi E53_SC1扩展板主芯片: STM32L431RCT6串口: Usart1扩展板与主板连接: I2C : I2C1 (光照强度传感器BH1750)LED: PB9步骤 创建项目 参考 BearPi Std 板从入门到放弃 - 引气入体篇1(由零创建工程到点亮LED) 初始化Usart1 参考 BearPi Std 板从入门到放弃 - 引气入体篇4(Usart 中断接收), 但不需要启用中断, 直接添加fputc函数可以使用printf打印信息到串口即可, 参考 BearPi Std 板从入门到放弃 - 引气入体篇5(printf打印到串口) I2C1 初始化 参考 BearPi Std 板从入门到放弃 - 后天篇1(I2C1 读取 光照强度) 初始化 LED灯 PB8 方法如 步骤1, 推挽输出、不上拉下拉、标签名为E53_SC1_LED即可 其电路原理图如下, LED_SW为输入, D1为LED灯 最终创建项目 STM32CubeMX勾选项目生成为按照功能的不同.c/.h, 参考 STM32CubeMX 一些配置 添加用户代码 main.c
typedef enum
{OFF,ON
}Smart_City_Status; #define LUMINOSITY_THRESHOLD 50 // 光照阈值, 小于此亮度则亮灯void BH1750Init(void)
{uint8_t temp 0x11; // 连续 H分辨率模式2HAL_I2C_Master_Transmit(hi2c1, BH1750_ADDRESS, temp, 1, 0xff); HAL_Delay(180); // 数据手册内部写完最长等待180ms才能读
}float ReadBH1750(void)
{float lux 0.0;uint8_t temp[2];HAL_I2C_Master_Receive(hi2c1, BH1750_READ, temp, 2, 0xff); lux (float) ( ((temp[0]8) temp[1]) / 1.2 );return lux;
}void Smart_City_Light_Set(Smart_City_Status status)
{if (ON status){HAL_GPIO_WritePin(E53_SC1_LED_GPIO_Port, E53_SC1_LED_Pin, GPIO_PIN_SET);}else{HAL_GPIO_WritePin(E53_SC1_LED_GPIO_Port, E53_SC1_LED_Pin, GPIO_PIN_RESET);}
}int main(void )
{float lux 0.0;...BH1750Init(); // BH1750 初始化while (1){HAL_Delay(1000); // 1s 延时lux ReadBH1750(); // 读取光照强度值Smart_City_Light_Set(lux LUMINOSITY_THRESHOLD ? ON : OFF); // Smart_City_Light_Set(lux LUMINOSITY_THRESHOLD); printf(current Lux: %f\r\n, lux);}...
}
usart.h
/* USER CODE BEGIN Header */
#include stdio.h
/* USER CODE END Header *//* USER CODE BEGIN 0 */int fputc(int ch, FILE *f)
{uint8_t temp[1] {ch};HAL_UART_Transmit(huart1, temp, 1, 2);return HAL_OK;
}/* USER CODE END 0 */前言后讲
BH1750介绍 1.BH1750 测量步骤 如图所示 (1) 在电路连接正常情况下, 可以直接发送测量指令 (2) 一次测量方式后会自动断电 (3) 连续测试则需要下发指令进行断电
2.BH1750 指令
3.BH1750 测量模式说明
4.BH1750 各种测量时序示例 (1)ADDR 为低电平示例(包含计算)
(2)ADDR 为高电平示例(包含计算) 5. 本次扩展板BH1750电路图 综上: 1. ADDR 是 低电平 2. 写完读模式之后最大等待时间是180ms, 写完或读前需要延时180ms 3. 连续读模式 除非写断电, 否则会进行一次采集… 4. 亮度计算公式 (((高8位)8) (低八位))/1.2
Note: Keil中Download Flash完需要复位才能执行最新的程序, 参考 BearPi Std 板从入门到放弃 - 丹道心得 (问题收集)烧写完直接复位即可
BearPi_Smart_City 完整工程代码