BearPi Std 板从入门到放弃 - 后天篇(1)(I2C1 读取 光照强度)

简介

基于 BearPi Std 板从入门到放弃 - 引气入体篇(5)(printf打印到串口), 通过I2C接口,读取光照强度并打印到串口;
开发板 : Bearpi Std(小熊派标准板)
主芯片: STM32L431RCT6
LED : PC13 \ 推挽输出即可 \ 高电平点亮
串口: Usart1
I2C : I2C1
光照强度传感器:BH1750

步骤

  1. 基于上一篇BearPi Std 板从入门到放弃 - 引气入体篇(5)(printf打印到串口) 所讲工程新增I2C1配置
  2. I2C1配置
    保持默认设置即可在这里插入图片描述
  3. 生成项目工程 BearPi_I2C1
  4. Keil打开项目, 加入用户代码
float ReadBH1750(void);int main(void)
{float lux = 0.0;...while (1){HAL_Delay(1000);lux = ReadBH1750();printf("current lux : %0.3f\r\n", lux);}
}/* USER CODE BEGIN 4 */
float ReadBH1750(void)
{uint8_t temp[1]={0x11};float lux=0;uint8_t ReadData[2]={0};HAL_I2C_Master_Transmit(&hi2c1, 0x46, temp, 1, 0xff);HAL_Delay(180);HAL_I2C_Master_Receive(&hi2c1, 0x47,ReadData, 2, 0xff);lux = (float)((ReadData[0]<<8)|ReadData[1]);lux /= 1.2;return lux;
}
/* USER CODE END 4 */

小扩展

简单加上一个范围判定, 大于此范围则LED自动亮起, 否则LED熄灭
/*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 */float lux = 0.0;uint32_t threshold = 3500;uint32_t luxTemp = 0;/* USER CODE END 1 */.../* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_Delay(1000);lux = ReadBH1750();luxTemp = (uint32_t)(lux * 100);printf ("current lux : %0.3f\r\n", lux);if (luxTemp <= threshold){if (HAL_GPIO_ReadPin(USER_LED_GPIO_Port, USER_LED_Pin) == GPIO_PIN_RESET){printf ("led's on!\r\n");HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, GPIO_PIN_SET);}}else{if (HAL_GPIO_ReadPin(USER_LED_GPIO_Port, USER_LED_Pin) == GPIO_PIN_SET){printf ("led's off!\r\n");HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, GPIO_PIN_RESET);}}}/* USER CODE END 3 */
}

前言后说

  1. I2C发送接收函数
    HAL_I2C_Master_Transmit(I2C_HandleTypeDef hi2c, uint16_t DevAddress, uint8_tpData,uint16_t Size, uint32_t Timeout);
    HAL_I2C_Master_Receive(I2C_HandleTypeDef hi2c, uint16_t DevAddress, uint8_tpData,uint16_t Size, uint32_t Timeout);

  2. 光照传感器说明
    a. 读地址为0X47,写地址为0X46;
    b. 连续高分辨率模式 : 精度1lux/指令 0x10 / 测量时间 120ms ~ 180ms
    连续高分辨率模式2 : 精度 0.5lux /指令 0x11 / 测量时间120ms ~ 180ms
    低分辨率模式 : 精度4lux / 指令 0x13/ 测量时间 16ms ~ 24ms
    c. 数据手册记录光照强度计算公式 = (Vhi << 8 | Vlo)/1.2
    d. 本次采用 连续高分辨率模式2

BearPi_I2C1 完整项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合RocketMQ

SpringBoot整合RocketMQ 文章目录 SpringBoot整合RocketMQ下载安装SpringBoot整合RocketMQ导坐标改配置实现消息生产与消费 下载安装 教程地址&#xff1a;https://www.bilibili.com/video/BV15b4y1a7yG/?p132&spm_id_from333.1007.top_right_bar_window_history.content.…

11. 哈希冲突

上一节提到&#xff0c;通常情况下哈希函数的输入空间远大于输出空间&#xff0c;因此理论上哈希冲突是不可避免的。比如&#xff0c;输入空间为全体整数&#xff0c;输出空间为数组容量大小&#xff0c;则必然有多个整数映射至同一桶索引。 哈希冲突会导致查询结果错误&#…

大数据技术学习笔记(四)—— HDFS

目录 1 HDFS 概述1.1 HDFS 背景与定义1.2 HDFS 优缺点1.3 HDFS 组成架构1.4 HDFS 文件块大小 2 HDFS的shell操作2.1 上传2.2 下载2.3 HDFS直接操作 3 HDFS的客户端操作3.1 Windows 环境准备3.2 获取 HDFS 的客户端连接对象3.3 HDFS文件上传3.4 HDFS文件下载3.5 HDFS删除文件和目…

最强AI之风袭来,你爱了吗?

2017年&#xff0c;柯洁同阿尔法狗人机大战&#xff0c;AlphaGo以3比0大获全胜&#xff0c;一代英才泪洒当场...... 2019年&#xff0c;换脸哥视频“杨幂换朱茵”轰动全网&#xff0c;时至今日AI换脸仍热度只增不减&#xff1b; 2022年&#xff0c;ChatGPT一经发布便轰动全球&a…

代码随想录训练营第五十五天392.判断子序列115.不同的子序列

392.判断子序列 题目链接 392. 判断子序列 - 力扣&#xff08;LeetCode&#xff09; 讲解链接 代码随想录 (programmercarl.com) 应用动态规划方法解决判断子序列的问题&#xff0c;本人认为最重要的就是递归函数的推导&#xff1a;dp[i][j]表示以i-1结尾s序列和以j-1结尾t序列…

【hacker送书第8期】Java从入门到精通(第7版)

第8期图书推荐 内容简介编辑推荐作者简介图书目录参与方式 内容简介 《Java从入门到精通&#xff08;第7版&#xff09;》从初学者角度出发&#xff0c;通过通俗易懂的语言、丰富多彩的实例&#xff0c;详细讲解了使用Java语言进行程序开发需要掌握的知识。全书分为4篇共24章&a…

nginx对多个服务器的高可用,容易出现鉴权失败

高可用简单测试正常&#xff0c;但是出现高概率401鉴权错误 抓包发现&#xff0c;确实是401 &#xff0c; 而鉴权是两次交互&#xff1a; 抓包发现鉴权到不同服务器上了&#xff0c;导致鉴权没有完成。 此时就需要我们的ip_hash,把同一IP地址的请求,都分配给同一台后端服务器&…

231204 刷题日报

21. 合并两个有序链表 单调栈没看懂&#xff0c;晚上回家再说吧 380. O(1) 时间插入、删除和获取随机元素 今天被接雨水钉在耻辱柱&#xff0c;找时间再看吧

Leetcode 2953. Count Complete Substrings

Leetcode 2953. Count Complete Substrings 1. 解题思路2. 代码实现 题目链接&#xff1a;2953. Count Complete Substrings 1. 解题思路 这一题麻烦的点就在于说有两个限制条件&#xff0c;但是好的点在于说这两个限制条件事实上是相互独立的。 因此&#xff0c;我们可以通…

波奇C++11:智能指针(三)特殊类的设计和单例模式

智能指针除了创建普通对象还有以下用法 std::shared_ptr<Test> sp1(new Test[2]); // 数组 std::shared_ptr<Test> sp2((Test*)malloc(sizeof(Test))); //malloc开辟空间 std::shared_ptr<FILE> sp3(fopen("源.cpp", "r")); // 文件管理…

【UE5】使用场系统炸毁一堵墙

效果 步骤 1. 新建一个空白项目 2. 新建一个Basic关卡&#xff0c;然后添加一个第三人称游戏和初学者内容包到内容浏览器 3. 在场景中添加一堵墙 4. 选项模式选择“破裂” 点击新建 新建一个文件夹用于存储几何体集 点击“统一” 最小和最大Voronoi点数都设置为100 点击“破…

【组合数学】排列组合

目录 1. 加法乘法原理加法原理乘法原理 2. 排列&组合集合排列集合组合 3. 多重集合的排列 & 组合多重集合的排列多重集合的组合 4. 二项式定理5. 集合的划分&#xff08;Stirling&#xff09; 1. 加法乘法原理 加法原理 计算在一系列互斥事件中任意一个事件发生的总数…

cmd查看进程信息 终止进程

cmd查看进程信息 终止进程 1、cmd查看进程信息2、终止进程 1、cmd查看进程信息 tasklist命令 描述: 该工具显示在本地或远程机器上当前运行的进程列表。 tasklist /?查看本机所有进程列表 tasklist /V根据进程名 查看jmeter进程 tasklist /V |findstr /i jmeter2、终止进程…

1+x网络系统建设与运维(中级)-练习3

一.设备命名 AR1 [Huawei]sysn AR1 [AR1] 同理可得&#xff0c;所有设备的命名如上图所示 二.VLAN LSW1 [LSW1]vlan 10 [LSW1-vlan10]q [LSW1]int g0/0/1 [LSW1-GigabitEthernet0/0/1]port link-type access [LSW1-GigabitEthernet0/0/1]port default vlan 10 [LSW1-GigabitEt…

【自用数据结构】—将链表中的奇数全部移动到偶数前面

void move(LNode*& L){ LNode* pL; while(p!null){ if((p->next->data)%21) //判断该元素是否为奇函数 LNode *s p->next; p->nexts->next; s->nextL->next; L->nexts; else pp->next; } }

避免20种常见Selenium自动化测试异常,让你的测试更加稳定和可靠!

常见的Selenium异常 以下是所有Selenium WebDriver代码中可能发生的一些常见Selenium异常。 1、ElementClickInterceptedException 由于以某种方式隐藏了接收到click命令的元素&#xff0c;因此无法正确执行Element Click命令。 2、ElementNotInteractableException 即使目…

【Qt开发流程】之事件过滤器及sendEvent和postEvent

描述 事件过滤器(Event Filter)是Qt中一个强大的事件处理机制&#xff0c;它可以在对象接收到事件之前截获事件&#xff0c;并进行自定义处理。事件过滤器可以在不修改对象自身代码的前提下&#xff0c;对其进行事件处理和拦截。 事件过滤器的使用过程如下&#xff1a; 创建一…

Spring常用注解

1、给容器中注入组件-交由spring管理 Component&#xff1a;泛指各种组件&#xff0c;用于将当前类对象存入Spring容器中 Controller&#xff1a;用在控制层 Service&#xff1a;用在业务层 Repository&#xff1a;用在数据访问层 Bean&#xff1a;导入第三方包里面的注解…

C++ 文件操作之配置文件读取

C 文件操作之配置文件读取 在项目应用时常常会涉及一些调参工作&#xff0c;如果项目封装成了.exe或者.dll&#xff0c;那么频繁调参多次编译是一件十分低效的事情&#xff0c;如果代码算法或者逻辑是一定的&#xff0c;那么参数完全可以通过读入配置文件来获取之前在用C - op…

界面组件DevExpress Reporting v23.1新版亮点 - UX功能增强

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v23.1已于前段时间…