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

news2024/9/30 13:33:09

简介

基于 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.coloradmin.cn/o/1283407.html

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

相关文章

chrome overrides 怎么用?

在network里找到你想替换的文件 右键选择override content 他会提示你选择文件夹 你选择本地的一个 紧接着他会提示你 点允许 再去你创建的那个目录里查看 会发现 他自动帮你创建了目录 他会把线上的被替换目标文件放在里面 你直接修改他就可以了

【面试经典150 | 二叉树】二叉树的最大深度

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;递归方法二&#xff1a;迭代 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的…

ssm社区医院儿童预防接种管理系统源码

ssm社区医院儿童预防接种管理系统源码709 开发技术&#xff1a;后端 ssm 后台管理 vue 用户端 vue.jshtml 一、课题研究目的和意义 为了方便家长用户更全面的掌握孩子的疫苗接种情况&#xff0c;系统提供便利的疫苗接种服务&#xff0c;同时也旨在推广疫苗接种知识&#xff…

数据库更换版本

目录 0.前言 1.官网下载MySQL 2.配置初始化文件my.ini 3.初始化MySQL 4.安装mysql服务并启动修改密码 5.配置环境变量​编辑 0.前言 心累&#xff0c;为了完成实验&#xff0c;必须使用8.0版本导致我更新版本的时候&#xff0c;把sqlyog干崩溃了&#xff0c;什么版本不兼…

全球与中国仿制药市场:增长趋势、竞争格局与前景展望

仿制药是指在剂型、功效、给药方法、品质、性能特征、用途等方面与原厂药相似并已获得原厂药上市许可的药品。仿制药的价格低于品牌药。糖尿病、癌症和心血管疾病等慢性疾病的快速成长推动了仿制药市场的成长。此外&#xff0c;仿制药的实惠价格以及最新产品的批准和推出也有助…

面试必会-JAVA基础篇-02

文章目录 11. ArrayList 和 LinkedList 的区别是什么&#xff1f;12. 说一下HashMap的实现原理&#xff1f;13. HashMap的put方法的具体流程&#xff1f;14. 讲一讲HashMap的扩容机制15. ConcurrentHashMap 底层具体实现知道吗&#xff1f;16. 创建线程的四种方式17. runnable …

Educational Codeforces Round 159 (Rated for Div. 2)(A~F)(LCA + 线性基)

A - Binary Imbalance 题意&#xff1a;给定一个01串&#xff0c;你能够在相邻相同字符中插入‘1’,在相邻不同字符中插入‘0’&#xff0c;求最终能否使得0的数量严格大于1的数量。 思路&#xff1a;可以发现&#xff0c;当出现了‘01’或者‘10’子序列时&#xff0c;能够无…

shopee主营店铺链接怎么填,shopee店铺url在哪里找——站斧浏览器

要设置Shopee主营店铺链接&#xff0c;在设置页面中填写自己想要推广的其他店铺的链接地址&#xff0c;并进行测试和提交审核。通过设置主营店铺链接&#xff0c;卖家可以增加销售量和曝光率。 shopee主营店铺链接怎么填&#xff1f; Shopee主营店铺链接是指卖家在Shopee平台…

[ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup

前言 由于懒我直接把上交的wp稍加修改拉上来了&#xff0c;凑活看 文章目录 前言Pwntest_ncnc_shell ReverseCreakmeEasyRebabyReeasy_z3mix_reeasy_flower_tea Webwhere_is_the_flag圣杯战争!!!绕进你的心里easy_websitewafrez_ini1z_Ssqldouble_picklewebincludefuzz!恐怖G…

拼多多股价为什么可以创下两年新高并一举超越阿里巴巴?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 拼多多再次证明了它是全球电商领域中不可忽视的力量 过去两年&#xff0c;由于某些众所周知的原因&#xff0c;很多中概股的股价都很疲软&#xff0c;甚至半死不活的&#xff0c;很多投资中概股的朋友也一直承受着很大的…

交通强国添力量 无人机巡航为何备受期待?

在高速建设交通强国的过程中&#xff0c;交通运输部海事局计划完善“陆海空天”一体化水上交通运输安全保障体系。无人机巡航系统将在提升海事船舶监管和水上搜救能力方面发挥关键作用&#xff0c;以构建更为全面的监管体系。尽管已初步建立了海事监管体系&#xff0c;但仍存在…

APP逆向工具环境安装

环境安装及配置&#xff1a; 1.JDK安装及配置链接&#xff1a;https://pan.baidu.com/s/146I4vDJdz8YeR0OEqLS8xw 提取码&#xff1a;7h00 2.SDK环境配置链接&#xff1a;https://pan.baidu.com/s/1A8rwqyw8Nn7p93Axqpll3A 提取码&#xff1a;cwv43.NDK环境配置链接&#xff1…

深度学习在工业自动化领域的简析

原创 | 文 BFT机器人 在机器视觉和工业自动化领域&#xff0c;很少有比“深度学习”更引人注目的词汇。大约七年前左右&#xff0c;这个词随着一波庞大的营销炒作而出现&#xff0c;附带着“革命性”和“颠覆性”等形容词。几年后&#xff0c;尘埃落定&#xff0c;深度学习在自…

销售人员一定要知道的6种获取电话号码的方法

对于销售来说&#xff0c;电话销售是必须要知道的销售方法&#xff0c;也是销售生涯中的必经之路。最开始我们并不清楚这么电话是从哪里来的&#xff0c;也不清楚是通过哪些方法渠道获取。那么今天就来分享给各位销售人员获取客户电话号码的方法。 1.打印自己的名片&#xff0…

[ 蓝桥杯Web真题 ]-视频弹幕

目录 介绍 准备 目标 效果 规定 思路 解答参考 扩展功能 介绍 弹幕指直接显现在视频上的评论&#xff0c;可以以滚动、停留甚至更多动作特效方式出现在视频上&#xff0c;是观看视频的人发送的简短评论。通过发送弹幕可以给观众一种“实时互动”的错觉&#xff0c;弹幕…

大数据 - MapReduce:从原理到实战的全面指南

本文深入探讨了MapReduce的各个方面&#xff0c;从基础概念和工作原理到编程模型和实际应用场景&#xff0c;最后专注于性能优化的最佳实践。 一、引言 1.1 数据的价值与挑战 在信息爆炸的时代&#xff0c;数据被视为新的石油。每天都有数以百万计的数据被生成、存储和处理&…

GUI库pyqt5的中线程通信问题

背景 在使用pyqt5编写GUI程序时&#xff0c;我们可能有时会需要使用多线程来处理问题&#xff0c;这就可能会涉及到线程之间相互通信的问题。比如接下来要解决的进度条问题。 解决思路 我们可以通过pyqt5的信号与槽机制来完成线程之间的通信。 代码编写 # Copyright (C) 2…

如何写好亚马逊listing页面?助你提高转化率!(下)

一、产品长描述 产品长描述位于listing页面的中部&#xff0c;是产品信息的重要组成部分。卖家可以描述产品的特点、功能和使用方法&#xff0c;有助于解决买家可能存在的疑虑&#xff0c;从而增加销售、提高转化率和品牌形象。 在亚马逊上&#xff0c;有两种长描述方式——有…

Canvas鼠标画线

鼠标按下开始画线,鼠标移动根据鼠标的轨迹去画,鼠标抬起停止画线 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…