介绍
BMP280:测量温度、压力和高度
- OLED 显示屏,英制和公制单位。
组件耗材
元件名 | 数量 |
---|---|
OLED 128x32 i2c | 1 |
Arduino | 1 |
BMP280 | 1 |
项目描述
您好,欢迎来到本教程,我在 Arduino UNO 板和 OLED 显示器的帮助下使用 BMP280 测量温度、压力和高度。以下是其数据表中的一些 BMP280 关键参数:
所以对于这个项目,我们将像往常一样使用该模块在公制和英制系统中测量所有这些东西,我不太确定这些单位,但你总是可以通过代码转换它们,这是我们要的组件使用:
Arduino UNO 开发板
BMP280
128x32 OLED 显示屏(可选)
测试和故障排除:
连接模块后,最好测试库示例中的代码,其名称为“BMP280test”,如果未检测到模块,如下图所示:
您可以运行 i²c 扫描仪代码(但拔下任何其他 i²c 设备,如 LCD 或 OLED),如果您的模块没有损坏,或者没有焊接问题,您会看到扫描仪检测到该设备:
现在注意地址并转到您的库 c++ 文件,库通常安装在“Documents/Arduino/Libraries”中:
并用合适的编辑器打开它,我使用的是 Dev c++
然后转到“41”行,_i2caddr 将“a”更改为您在串行监视器上找到的地址:
全部保存并关闭,该库旨在使用具有 0x77 作为 i²c 地址的模块,但我使用的模块具有 0x76。
再次运行测试代码:
测试图片:
我希望它对你有用,如果你有任何问题,请在评论中留言。
电路图
代码
1.测量温度和压力,并将它们与高度一起显示在串行监视器上
/* This code is to use with Adafruit BMP280 (Imperial)
* It measures both temperature and pressure and it displays them on the Serial monitor with the altitude
* It's a modified version of the Adafruit example code
*/
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp; // I2C
void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));
if (!bmp.begin()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
/* Default settings from datasheet. */
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
float f = bmp.readTemperature()*9/5 + 32 ; //Conversion from C to F
Serial.print(F("Temperature = "));
Serial.print(f);
Serial.println(" *F");
float P = bmp