python 驱动 歌儿声学气压传感器 SPL06系列

2023-11-08 01:50

本文主要是介绍python 驱动 歌儿声学气压传感器 SPL06系列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、IIC驱动

2、SPL06-001/SPL06-007

3、驱动部分

class SPL06():I2C=I2C(I2c_CLK_PIN,I2c_SDA_PIN)SPL06_SlaveAddr = 0x76# 写单个寄存器def	setReg(self, reg, dat):self.I2C.write(self.SPL06_SlaveAddr,reg, dat)# 读取单个寄存器封装def	getReg(self, reg):self.rb[0]=0self.rb[0]=self.I2C.read(self.SPL06_SlaveAddr,reg)return self.rb[0]# 读取双寄存器数据def	get2Reg(self, reg):return self.getReg(reg) + self.getReg(reg+1) * 256# 传感器初始化def __init__(self):self.rb = bytearray(1)self.C0 = (self.getReg(0x10)<<4)+((self.getReg(0x11)&0xF0)>>4)self.C0 = (0-((0xFFF^self.C0)+1)) if (self.C0 & (1<<11)) else self.C0self.C1 = ((self.getReg(0x11)&0x0F)<<8)+self.getReg(0x12)self.C1 = (0-((0xFFF^self.C1)+1)) if (self.C1 & (1<<11)) else self.C1self.C00 = (self.getReg(0x13)<<12)+(self.getReg(0x14)<<4)+(self.getReg(0x15)>>4)self.C00 = (0-((0xFFFFF^self.C00)+1)) if (self.C00 & (1<<19)) else self.C00self.C10 = ((self.getReg(0x15)&0x0F)<<16)+(self.getReg(0x16)<<8)+self.getReg(0x17)self.C10 = (0-((0xFFFFF^self.C10)+1)) if (self.C10 & (1<<19)) else self.C10self.C01 = (self.getReg(0x18)<<8)+self.getReg(0x19)self.C01 = (0-((0xFFFF^self.C01)+1)) if (self.C01 & (1<<15)) else self.C01self.C11 = (self.getReg(0x1A)<<8)+self.getReg(0x1B)self.C11 = (0-((0xFFFF^self.C11)+1)) if (self.C11 & (1<<15)) else self.C11self.C20 = (self.getReg(0x1C)<<8)+self.getReg(0x1D)self.C20 = (0-((0xFFFF^self.C20)+1)) if (self.C20 & (1<<15)) else self.C20self.C21 = (self.getReg(0x1E)<<8)+self.getReg(0x1F)self.C21 = (0-((0xFFFF^self.C21)+1)) if (self.C21 & (1<<15)) else self.C21self.C30 = (self.getReg(0x20)<<8)+self.getReg(0x21)self.C30 = (0-((0xFFFF^self.C30)+1)) if (self.C30 & (1<<15)) else self.C30self.setReg(0x06,0x25)#气压测量配置   4 measurements   32 timestemp = self.getReg(0x09) #oversampling times>8时必须使用self.setReg(0x09,temp|0x04)self.setReg(0X07,0xa3) #温度测量配置 4 measurements  8 timesself.setReg(0x08,0x07)#测量模式配置 连续测量模式self.T = 0self.P = 0self.Altitude = 0# 读取数据并计算def get(self):adc_P = (self.getReg(0x00)<<16) + (self.getReg(0X01)<<8) + (self.getReg(0X02))adc_P = (0-((adc_P^0xFFFFFF)+1)) if (adc_P & (1<<23))else adc_Padc_T = (self.getReg(0x03)<<16) + (self.getReg(0X04)<<8) + (self.getReg(0X05))adc_T= (0-((adc_T^0xFFFFFF)+1)) if (adc_T & (1<<23))else adc_TTraw_src = adc_T/7864320.0   # 8timesPraw_src = adc_P/516096.0    # 32timesself.T = (0.5*self.C0+Traw_src*self.C1)-4.5 #板子有热源做简单的偏差处理self.P = self.C00+Praw_src*(self.C10+Praw_src*(self.C20+Praw_src*self.C30))+Traw_src*self.C01+Traw_src*Praw_src*(self.C11+Praw_src*self.C21)self.Altitude = 44330*(1-(self.P/101325)**(1/5.255))return [self.T,self.P,self.Altitude]# 获取温度数值:单位℃def getTemp(self):self.get()return self.T# 获取大气压强:单位padef getPress(self):self.get()return self.P# 获取海拔高度:单位米def	getAltitude(self):self.get()return self.Altitude#soft Reset    def reset(self):self.setReg(0x0C, 0x09)def SPL06Chack(self):#检查SPL06连接正常print("ID:",self.getReg(0x0D))if self.getReg(0x0D)==0x10:return 1else:return 0

4、测试部分:

if __name__ == "__main__" :SPL06_obj=SPL06()if SPL06_obj.SPL06Chack()==1:print('SPL06检测OK')for  i in range(1,500):print('Temp:%f ℃  Press:%f Pa  Altitude:%f m'%(SPL06_obj.getTemp(),SPL06_obj.getPress(),SPL06_obj.getAltitude()))time.sleep(1)

5、测试结果:

 6、完整驱动代码请点击:https://download.csdn.net/download/DD_Boy_liang/85721891

7、模拟IIC代码请点击:https://download.csdn.net/download/DD_Boy_liang/85721934

这篇关于python 驱动 歌儿声学气压传感器 SPL06系列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367251

相关文章

Python中局部变量和全局变量举例详解

《Python中局部变量和全局变量举例详解》:本文主要介绍如何通过一个简单的Python代码示例来解释命名空间和作用域的概念,它详细说明了内置名称、全局名称、局部名称以及它们之间的查找顺序,文中通... 目录引入例子拆解源码运行结果如下图代码解析 python3命名空间和作用域命名空间命名空间查找顺序命名空

Python如何将大TXT文件分割成4KB小文件

《Python如何将大TXT文件分割成4KB小文件》处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这... 目录为什么需要分割TXT文件基础版:按行分割进阶版:精确控制文件大小完美解决方案:支持UTF-8编码

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

Python中的魔术方法__new__详解

《Python中的魔术方法__new__详解》:本文主要介绍Python中的魔术方法__new__的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、核心意义与机制1.1 构造过程原理1.2 与 __init__ 对比二、核心功能解析2.1 核心能力2.2

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle