MS5611气压计数据采集(模拟IIC)/温度采集/相对高度求解

2023-05-16

MS5611气压计数据采集(模拟IIC)/温度采集/相对高度求解

1、 MS5611气压计属性

1.1 基础属性

MS5611使用24位ADC,可以采集温度和气压,并且温度可以用来补偿气压,MS5611在出厂时进行了校准,校准的6个系数存储在PROM寄存器中, PROM寄存器起始地址0XA0, 从0xA0到0XAE, 一共16字节, 一共16*8 = 128位,其中每两个字节为一个系数:
第一个系数: 制造商定的,我们不用在意
第二到第七个系数:我们需要读取,后面用于气压计算
第八个系数:CRC
在这里插入图片描述

1.2 5个命令(COMMANDS)

在这里插入图片描述
分别是:
1、复位
2、读取PROM
3、D1转换, 其实就是设置读取气压的一些参数,然后MS5611会返回24字节(下文会说明)
4、D2转换,其实就是设置读取温度的一些参数
5、读取ADC中的数据

1.3 SPI和IIC接口

IIC模式:PS拉高
SPI模式:PS拉低
本实验用的是模拟IIC读取数据在里插入图片描述
IIC模式中CSB拉低时, IIC从设备地址为0111 0111, CSB拉高时,IIC设备地址为0111 0110

2、 温度气压读取

IIC开始、结束、等待ack、读取发送函数等(参考匿名)

#define MS5611_ADDR             0x77   //0xee //
#define CMD_RESET               0x1E // ADC reset command
#define CMD_ADC_READ            0x00 // ADC read command
#define CMD_ADC_CONV            0x40 // ADC conversion command
#define CMD_ADC_D1              0x00 // ADC D1 conversion
#define CMD_ADC_D2              0x10 // ADC D2 conversion
#define CMD_ADC_256             0x00 // ADC OSR=256
#define CMD_ADC_512             0x02 // ADC OSR=512
#define CMD_ADC_1024            0x04 // ADC OSR=1024
#define CMD_ADC_2048            0x06 // ADC OSR=2048
#define CMD_ADC_4096            0x08 // ADC OSR=4096
#define CMD_PROM_RD             0xA0 // Prom read command
#define PROM_NB                 8
#define MS5611_OSR				0x08	//CMD_ADC_4096

//开始信号
int I2c_Soft_Start()
{
	MS5611_IIC_SDA = 1;
	MS5611_IIC_SCL = 1;
	delay_us(4);
	if(!MS5611_READ_SDA)return 0;	//SDA线为低电平则总线忙,退出
	MS5611_IIC_SDA = 0;
	delay_us(4);
	if(MS5611_READ_SDA) return 0;	//SDA线为高电平则总线出错,退出
	MS5611_IIC_SDA = 0;
	delay_us(4);
	return 1;	

}
//结束信号
void I2c_Soft_Stop()
{
	MS5611_IIC_SCL = 0;
	delay_us(4);
	MS5611_IIC_SDA = 0;
	delay_us(4);
	MS5611_IIC_SCL = 1;
	delay_us(4);
	MS5611_IIC_SDA = 1;
	delay_us(4);
}
//应答
void I2c_Soft_Ask()
{
	MS5611_IIC_SCL = 0;
	delay_us(4);
	MS5611_IIC_SDA = 0;
	delay_us(4);
	MS5611_IIC_SCL = 1;
	delay_us(4);
	MS5611_IIC_SCL = 0;
	delay_us(4);
}
//非应答
void I2c_Soft_NoAsk()
{
	MS5611_IIC_SCL = 0;
	delay_us(4);
	MS5611_IIC_SDA = 1;
	delay_us(4);
	MS5611_IIC_SCL = 1;
	delay_us(4);
	MS5611_IIC_SCL = 0;
	delay_us(4);
}
// 等待回复
int I2c_Soft_WaitAsk(void) 	 //返回为:=1无ASK,=0有ASK
{
    u8 ErrTime = 0;
	MS5611_IIC_SCL = 0;
	delay_us(4);
	MS5611_IIC_SDA = 1;			
	delay_us(4);
	MS5611_IIC_SCL = 1;
	delay_us(4);
	while(MS5611_READ_SDA)
	{
		ErrTime++;
		if(ErrTime>50)
		{
			I2c_Soft_Stop();
			return 1;
		}
	}
	MS5611_IIC_SCL = 0;
	delay_us(4);
	return 0;
}

// IIC发送一个字节
void I2c_Soft_SendByte(u8 SendByte) //数据从高位到低位//
{
    u8 i=8;
    while(i--)
    {
        MS5611_IIC_SCL = 0;
        delay_us(4);
		if(SendByte&0x80)
			MS5611_IIC_SDA = 1;  
		else 
			MS5611_IIC_SDA = 0;   
        SendByte<<=1;
        delay_us(4);
		MS5611_IIC_SCL = 1;
		delay_us(4);
    }
    MS5611_IIC_SCL = 0;
}  

//读1个字节,ack=1时,发送ACK,ack=0,发送NACK
u8 I2c_Soft_ReadByte(u8 ask)  //数据从高位到低位//
{ 
    u8 i=8;
    u8 ReceiveByte=0;

    MS5611_IIC_SDA = 1;				
    while(i--)
    {
		ReceiveByte<<=1;      
		MS5611_IIC_SCL = 0;
		delay_us(4);
		MS5611_IIC_SCL = 1;
		delay_us(4);	
		if(MS5611_READ_SDA)
		{
			ReceiveByte|=0x01;
		}
    }
    MS5611_IIC_SCL = 0;

	if (ask)
		I2c_Soft_Ask();
	else
		I2c_Soft_NoAsk();  
    return ReceiveByte;
} 


// IIC写一个字节数据
u8 IIC_Write_1Byte(u8 SlaveAddress,u8 REG_Address,u8 REG_data)
{
	I2c_Soft_Start();
	I2c_Soft_SendByte(SlaveAddress<<1);   
	if(I2c_Soft_WaitAsk())
	{
		I2c_Soft_Stop();
		return 1;
	}
	I2c_Soft_SendByte(REG_Address);       
	I2c_Soft_WaitAsk();	
	I2c_Soft_SendByte(REG_data);
	I2c_Soft_WaitAsk();   
	I2c_Soft_Stop(); 
	return 0;
}

// IIC读1字节数据
u8 IIC_Read_1Byte(u8 SlaveAddress,u8 REG_Address,u8 *REG_data)
{      		
	I2c_Soft_Start();
	I2c_Soft_SendByte(SlaveAddress<<1); 
	if(I2c_Soft_WaitAsk())
	{
		I2c_Soft_Stop();
		return 1;
	}
	I2c_Soft_SendByte(REG_Address);     
	I2c_Soft_WaitAsk();
	I2c_Soft_Start();
	I2c_Soft_SendByte(SlaveAddress<<1 | 0x01);
	I2c_Soft_WaitAsk();
	*REG_data= I2c_Soft_ReadByte(0);
	I2c_Soft_Stop();
	return 0;
}	


2.1 第一步:初始化MS5611

初始化包括:
1、复位
2、读取PROM中的6个关键系数

// 复位
void MS5611_Reset(void)
{
	// MS5611_ADDR:0x77    CMD_RESET:0x1E
    IIC_Write_1Byte(MS5611_ADDR, CMD_RESET, 1);
}
u8 MS5611_Read_Prom(void)
{
	uint8_t rxbuf[2] = { 0, 0 };
	u8 check = 0;
	u8 i;

	for (i = 0; i < PROM_NB; i++)
	{
		check += IIC_Read_nByte(MS5611_ADDR, CMD_PROM_RD + i * 2, 2, rxbuf); // send PROM READ command
		ms5611_prom[i] = rxbuf[0] << 8 | rxbuf[1];
	}
	if(check == PROM_NB)
		return 1;
	else
		return 0;
}

2.2 第二步:获取温度数据

在这里插入图片描述
首先发送Convert D1命令,进行相应的配置,再发送ADC Read命令,然后MS5611会返回24位的温度数据, 这时候再去读取这些温度数据。

// 写入数据
void MS5611_Start_T(void)
{
	//CMD_ADC_CONV + CMD_ADC_D2 + MS5611_OSR = 0x48
	IIC_Write_1Byte(MS5611_ADDR, CMD_ADC_CONV + CMD_ADC_D2 + MS5611_OSR, 1); // D2 (temperature) conversion start!
}
// 读取24位温度数据
void MS5611_Read_Adc_T(void)
{
	IIC_Read_nByte( MS5611_ADDR, CMD_ADC_READ, 3, t_rxbuf ); // read ADC
}

2.3 第三步:获取气压数据

在这里插入图片描述
首先发送Convert D2命令,进行相应的配置,然后再发送ADC Read命令, 然后MS5611会返回24位的气压数据, 这时候再去读取这些气压数据。

// 写入数据
void MS5611_Start_P(void)
{
	CMD_ADC_CONV + CMD_ADC_D1 + MS5611_OSR = 0x58
  IIC_Write_1Byte(MS5611_ADDR, CMD_ADC_CONV + CMD_ADC_D1 + MS5611_OSR, 1); // D1 (pressure) conversion start!
}
// 读取24位气压数据
void MS5611_Read_Adc_P(void)
{
	IIC_Read_nByte(MS5611_ADDR, CMD_ADC_READ, 3, p_rxbuf); // read ADC
}

3、温度补偿气压

在这里插入图片描述

在这里插入图片描述
绝对高度(海拔)的求解公式:
H= 44300*(1- (P/P0)^(1/5.256) )
H为高度
P0为标准大气压(≈101Kpa)
P为读取的气压 (注意单位得和P0相同)

相对高度(例如飞机起飞前和飞行中的高度差)的求解
这里提供一个思路:
MS5611开机上电一段时间后,读取静止100组数据并转换成海拔,取个平均,这个海拔高度就相当于基准海拔,如果你把MS5611拿高或者拿低, 此时的海拔与基准海拔相见就是相对高度。
ps:求相对高度的时候,可以对此时的海拔高度数据进行一个滑动窗滤波,这样求出的相对高度比较平滑。

void MS5611_BaroAltCalculate(void)
{
	float height = 0;
	int64_t off2 = 0, sens2 = 0, delt = 0, f = 0, f2 = 0;
	int32_t temperature = 0, pressure = 0, T2 = 0;
	int32_t dT = 0;
	int64_t off =0, sens =0;
	static int num = 0;
	static int cnt = 0;
	double ms5611SumDat = 0.0;
	
	ms5611_ut = (t_rxbuf[0] << 16) | (t_rxbuf[1] << 8) | t_rxbuf[2]; // 读取的原始温度值
	ms5611_up = (p_rxbuf[0] << 16) | (p_rxbuf[1] << 8) | p_rxbuf[2]; // 读取的原始气压值
		
    dT = ms5611_ut - ((uint32_t)ms5611_prom[5] << 8);
    off = ((uint64_t)ms5611_prom[2] << 16) + (((int64_t)dT * ms5611_prom[4]) >> 7);
    sens = ((uint64_t)ms5611_prom[1] << 15) + (((int64_t)dT * ms5611_prom[3]) >> 8);
	// 实际温度: 2007:20.07 ℃
    temperature = 2000 + (((int64_t)dT * ms5611_prom[6]) >> 23); 
	
    if (temperature < 2000) 
	{ 
		T2 = (dT*dT)>>31;
		delt = temperature - 2000;
		delt = delt * delt;
		off2 = (5 * delt) >> 1;
		sens2 = (5 * delt) >> 2;
        if (temperature < -1500) 
		{ 
            delt = temperature + 1500;
            delt = delt * delt;
            off2  += 7 * delt;
            sens2 += (11 * delt) >> 1;
        }
    }
	temperature -= T2;
    off  -= off2; 
    sens -= sens2;
	
	ms5611Data.temperature = (double)temperature / 100.0;  // ℃
	// 温度补偿后的气压  100009 = 1000.09 mbar = 100009 Pa
    pressure = (((ms5611_up * sens ) >> 21) - off) >> 15; // mbar
	ms5611Data.pressure = (double)pressure / 100.0;
	
	height = (double)((1.0f - pow((double)pressure / 101325.0f, 0.190295f)) * 44330.0f); // meter
	ms5611Data.height = height;
		
	// 求相对高度
	// 上电100个数据后
	if(num > 100) 
	{
		if(cnt < MS5611_WIN_FILTER)
		{
			alt[cnt] = ms5611Data.height;
			cnt++;
		}
		else
		{
			ms5611SumDat = 0.0;
			for(int i=0; i<MS5611_WIN_FILTER-1; i++)
			{
				alt[i] = alt[i+1];
				ms5611SumDat += alt[i];
			}
			alt[cnt-1] = ms5611Data.height;
			ms5611SumDat += alt[cnt-1];
			ms5611CurAlt = ms5611SumDat/MS5611_WIN_FILTER; // 当前100组数据的高度平均
			if(baroCalOk == true)
			{
				ms5611CurAlt -= ms5611StartAlt; // 当前相对高度
			}
		}
		num = 100;
	}
	num++;
}

4、总结

MS5611主要是用于计算高度,比如可以用于四旋翼的定高等。
MS5611求海拔高度的时候,由于受温度,气流等各种因素的影响,最终的结果并不理想,
例如下面是我静止采集的30分钟左右的数据,可以明显看到高度是飘的。在这里插入图片描述
最后30分钟左右是我把ms5611拿上拿下来测试的, 所以出现了上图中的波动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MS5611气压计数据采集(模拟IIC)/温度采集/相对高度求解 的相关文章

  • Ubuntu系统安装、并解决Ubuntu系统网络连接激活失败问题

    Ubuntu系统安装 并解决Ubuntu系统网络连接激活失败问题 前言 1 Ubuntu安装过程中要保证网络连接稳定 2 Ubuntu安装过程要保证U盘不离开插槽 3 第一次安装请先浏览整个过程 xff0c 再进行操作 4 卸载Ubuntu
  • 激光雷达运动畸变去除方法

    文章目录 一 激光雷达运动畸变产生的原因二 为什么需要解决这个问题 xff1f 三 去除运动畸变的原理四 运动去畸变的方法1 纯估计方法 xff08 ICP VICP xff09 2 传感器辅助的方法 xff08 odom xff0c IM
  • curl下载文件的命令

    curl文件下载 curl将下载文件输出到stdout xff0c 将进度信息输出到stderr xff0c 不显示进度信息使用 silent 选项 1 curl URL silent 这条命令是将下载文件输出到终端 xff0c 所有下载的
  • 倍福ADS通讯(一)——ADS通讯简介

    ADS通讯简介 xff08 一 xff09 简介 xff08 二 xff09 ADS通讯协议概述 xff08 三 xff09 ADS通讯协议的设备标识 xff08 四 xff09 使用TwinCAT Ads中间件 xff08 一 xff09
  • 使用select的TCP服务器

    select函数详解 span class token macro property span class token directive hash span span class token directive keyword inclu
  • undefined symbol问题的查找、定位与解决方法

    今天被客户测出来一个问题 xff1a 程序执行中报错 xff0c 报错内容如下 XXXX xff1a symbol lookup error xff1a home libpdfium so xff1a undefined symbol xf
  • PRD-审批流BPM(结合企微审批引擎和结合flowable方案选择)

    前言 流程设计历来都是比较繁琐之事 xff0c 由于公司急需上线流程化的平台 xff0c 内部系统迫切需要升级 xff0c 在无产品经理的情况下 xff0c 我迎难而上 xff0c 正如 人人都是产品经理 所言 不是每个人都能以产品经理为业
  • VS Code用久了后,启动速度变慢

    目录 前提发现过程解决方法方法一方法二方法三 前提 不是因为电脑性能或者插件装太多导致的 是在使用一段时间后 xff0c 逐渐变慢 看结论直接跳转到解决方法 发现过程 困扰了很久 xff0c 这次一鼓作气找出问题 xff0c 太激动了 xf
  • ROS基础——话题、服务、动作编程

    文章目录 工作空间功能包ROS通信编程1 话题编程2 服务编程3 动作编程 参考资料 工作空间 存放工程开发相关文件的文件夹 xff0c 其中主要包括src xff0c build xff0c devel xff0c install文件夹
  • 一、ROS的五个特点

    一 ROS的五个特点 xff1a 1 点对点设计 点对点的设计通俗的讲就是一个大的工程项目 xff0c 每个动能相互是独立的 xff0c 或者耦合比较低 有一个大脑负责总的任务调度 xff0c 为服务和客户建立连接充当媒介 各个功能之间可以
  • LINK1104 无法打开文件“libboost_atomic-vc142-mt-gd-x64-1_76.lib”

    问题描述 LNK1104 无法打开文件 libboost atomic vc142 mt gd x64 1 76 lib 可能原因 xff1a 相应的包没有安装 xff0c 可以再电脑上搜一下 xff0c 是否搜索到 xff0c 如果搜索到
  • 2021-08-10

    LEGO loam第一次测试运行数据包nsh indoor outdoor成功 xff1a 记录以下 xff0c 以免自己忘记步骤 在第一个终端里 xff1a 1 source catkin ws devel setup bash xff0
  • 趣味GPS

    简介 GPS的全称是全球定位系统 the Global Positioning System 它属于美国政府 xff0c 并由洛杉矶的联合项目办公室 JPO Joint Program Office 管理 1957年 xff0c 苏联发射第
  • 如何访问西门子S1500PLC的IO系统

    提示 xff1a 本文仅代表个人在项目中的使用看法 xff0c 不参与任何真理的辩驳 文章目录 前言一 硬件配置二 访问方式1 S1500与ET200MP1 ET200MP的组态2 ET200MP的IO调用 2 S1500与ET200AL1
  • CubeMX配合PlatformIO开发STM32(STorM32),配置双MPU6050(板载与外置),并使用gui显示数据

    本人使用的设备 驱动 xff1a Windows10串口助手 4 3 25 其实啥都行 桃饱随处可买的usb ttl xff08 ch340G xff09 桃饱随处可买的stlinkmpu6050 xff08 一个板载 xff0c 一个通过
  • ros学习心得(九)ros之Topic通讯机制及发送与接收节点的编码与调试

    节点间需要有数据交互 xff0c 而ros所要解决的问题就是数据该如何交互 一 通讯原理图 ros在设计Node间通讯机制的时候 xff0c 考虑的是很周全的 Publisher 发送消息的 xff0c Subscriber 接收消息的 T
  • 硬石开发板STM32F407IGT6 (HAL库)学习笔记

    硬石开发板STM32F407IGT6 xff08 HAL库 xff09 学习笔记 2020 06 21 2020 06 22 2020 06 23 2020 06 24 该笔记为学习时遇到的问题与解决方法等内容的记录 xff0c 可能有错
  • Ubuntu20/视觉SLAM十四讲踩坑记录

    Ubuntu 视觉SLAM十四讲踩坑记录 Ubuntu xff08 20 xff09 视觉SLAM十四讲踩坑记录 xff1a 共性问题 xff1a 1 安装OpenCV后 xff0c 例程仍无法找到OpenCV文件 ch3 visualiz
  • AMESim2020.1仿真编译失败解决方法之一

    AMESim2020 1仿真编译失败解决方法之一 问题描述 xff1a 软件安装正确 xff0c 在准备和matlab联合仿真时 xff0c 换用VC2015以上版本编译器编译失败 解决方法 xff1a 到AMESim安装路径下 xff0c
  • Linux/Ubuntu20.04下载安装Geant4及B1示例测试

    Linux Ubuntu20 04下载安装Geant4及B1示例测试 0 参考内容1 下载geant4软件包2 geant4安装准备内容3 geant4文件编译4 安装数据包4 1 安装方式14 2安装方式2 5 添加文件路径6 B1示例测

随机推荐

  • Ubuntu20.04进行CUDA11.0及对应CUDNN安装

    Ubuntu20 04进行CUDA11 0及对应CUDNN安装 xff1a 基本步骤 xff1a 1 安装nvidia显卡驱动 可直接通过 xff1a 软件和更新 gt 附加驱动 选择满足CUDA版本的nvidia专有驱动 gt 应用更改
  • git分离头指针处理

    文章目录 1 什么是git分离头指针2 将git 分离头指针所指向的代码 xff08 commit id xff09 保存下来总结 本文将主要介绍一下git分离头指针状态 xff0c 并记录如何将分离头指针状态的代码合并到分支中 1 什么是
  • Docker使用系列——Docker安装(Ubuntu20.04)

    Docker使用系列 Docker安装 xff08 Ubuntu20 04 xff09 卸载安装测试问题 直接按官方安装教程即可 xff1a Install Docker Engine on Ubuntu 卸载 安装过老版本的Docker则
  • Docker使用系列——生成一个Ubuntu20.04+Pyqt5的容器

    由于在自己的电脑中安装Pyqt5不成功 xff0c 原因是与其他环境中的qt版本不兼容 因此 xff0c 了解到了docker xff0c 这里记录一下在docker中安装pyqt5过程 1 安装Docker并从官方仓库拉取Ubuntu 2
  • C语言实现链表(链式存储结构)

    链表 xff08 链式存储结构 xff09 及创建 链表 xff0c 别名链式存储结构或单链表 xff0c 用于存储逻辑关系为 一对一 的数据 与顺序表不同 xff0c 链表不限制数据的物理存储状态 xff0c 换句话说 xff0c 使用链
  • cmake与make的区别及CMakeLists.txt文件编写

    一 cmake与make的区别 make工具是一个自动化编译工具 xff0c 它会根据Makefile中的规则进行批处理编译 当需要编译的文件较多时 xff0c 使用make工具会大大提高效率 但是 xff0c 当项目较大时 xff0c 编
  • 接口测试学习必看 - 实现简易接口测试

    前言 终于整理到了接口测试部分的内容 xff0c 接口测试可以说是软件测试入门到初级软件测试的一个必备进阶技巧 很多挂着 灰盒测试 的标识 xff0c 其实就是对接口测试的另外一层理解 何为 灰盒 xff0c 能够看到一部分本质的东西 xf
  • roscpp 底层通讯协议更改

    ROS为机器人开发者们提供了不同语言的编程接口 xff0c 其中C 43 43 接口叫做roscpp xff0c 用来创建topic service param xff0c 实现ROS的通信功能 roscpp is a C 43 43 im
  • c++学习心得:STL初学(基础篇)

    标准函数库 xff08 STL xff09 学习心得 基础篇 STL主要由两种组件构成 xff1a 一是容器 xff0c 包括vector list set map等类 xff1b 另一种组件是用以操作这些容器的所谓的泛型算法包括find
  • STM32 LoRa无线数传模块 PC通过串口传输数据到单片机

    STM32 PC通过串口助手无线传输数据到单片机 之前学习了STM32单片机 xff0c 使用正点原子的精英板 两个TTL 转LoRa 半双工无线数传模块 xff0c 通过PC机串口助手 xff0c 向32单片机传输数据 xff0c 接收数
  • 如何使用 datax 将 mysql 中的数据拉取到 hive ?

    需求 使用datax将mysql中的数据拉取到hive的ods层 步骤 首先在mysql中确定好需要拉取的表user extend xff0c 然后对应在hive中创建好空表 xff0c 等待拉取 这里对应创建的hive表格如下 CREAT
  • C语言实现TCP客户端、服务器

    服务器 include lt stdio h gt include lt sys socket h gt include lt netinet in h gt include lt arpa inet h gt include 34 str
  • 树莓派控制无人机实现定点降落(概述目录)

    最近在做一个无人机与车协同的项目 xff0c 无人机需要比较准确地落到车的平台上 xff0c 而且因为经费较少只能用树莓派 xff0c 我的思路以及在调试过程中遇到的问题 xff0c 将公布在我接下来的博文里 这里列个目录 xff1a 树莓
  • C语言字符串常用函数总结(持续更新)

    最近在重温C语言的一些基础知识 xff0c 感觉C语言字符串操作还是比较难的 xff0c 在学习的过程中总结了一些常用的字符串相关函数 xff0c 包括C语言字符串输入 字符串输入 计算字符串长度 字符串赋值 字符串分割 字符串拼接 字符串
  • git tag和branch的关系

    tag类似于从commit发展出来的一个可写的玩具分支 它和branch很像 xff0c 但是可以快速取消所有修改 更多是用于快照查看的 如果它基于的commit被ammend变化了 xff0c 他俩的commit id 就会不一样了 xf
  • git命令之分支管理和Tag标签

    x1f4dd 个人简介 个人主页 xff1a 我是段段 x1f64b x1f34a 博客领域 xff1a 编程基础 前端 x1f4bb x1f345 写作风格 xff1a 干货 xff01 干货 xff01 都是干货 xff01 x1f35
  • 4个方面轻松搞定进度条

    不管是在APP还是PC xff0c 不管是Loading页 xff0c 还是在音乐播放器中 xff0c 进度条的运用都非常广泛 xff0c 形式也多种多样 xff0c 让人眼花缭乱 做为一个交互设计新手 xff0c 项目中也经常碰到进度条设
  • Ubuntu18.04安装ROS初始化rosdep阶段报错的解决方案

    在运行rosdep update时出现 reading in sources list data from etc ros rosdep sources list d ERROR unable to process source https
  • 菜鸡的ROS学习笔记(image_transport)

    菜鸡的ROS学习笔记 xff08 image transport xff09 image transport 这一部分是搬运的ROS wiki中的介绍 xff0c 主要是image transport这个包的用法 xff0c 之后我会把它尽
  • MS5611气压计数据采集(模拟IIC)/温度采集/相对高度求解

    MS5611气压计数据采集 模拟IIC 温度采集 相对高度求解 1 MS5611气压计属性 1 1 基础属性 MS5611使用24位ADC 可以采集温度和气压 xff0c 并且温度可以用来补偿气压 xff0c MS5611在出厂时进行了校准