【Arduino 连接BMP280:测量温度、压力和高度】

Arduino 连接BMP280:测量温度、压力和高度

介绍

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.readPressure(
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要将BMP280Arduino连接BMP280有四个引脚,分别是VIN、GND、SCL和SDA。VIN接5V电源,GND接地,SCL和SDA分别连接Arduino的I2C引脚A5和A4上。 接下来,需要安装并使用Adafruit_BMP280库来读取BMP280传感器的数据。可以通过Sketch -> Include Library -> Manage Libraries菜单打开库管理器并搜索Adafruit_BMP280来安装该库。 然后,需要连接OLED屏幕到Arduino。OLED屏幕有四个引脚,分别是VCC、GND、SCL和SDA。VCC接5V电源,GND接地,SCL和SDA分别连接Arduino的I2C引脚A5和A4上。 最后,可以使用Adafruit_SSD1306库来控制OLED屏幕并显示BMP280传感器的数据。可以通过Sketch -> Include Library -> Manage Libraries菜单打开库管理器并搜索Adafruit_SSD1306来安装该库。 以下是示例代码: ```c++ #include <Wire.h> #include <Adafruit_BMP280.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 32 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); Adafruit_BMP280 bmp; void setup() { Serial.begin(9600); if (!bmp.begin(0x76)) { Serial.println("Could not find a valid BMP280 sensor, check wiring!"); while (1); } if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(;;); } display.display(); delay(2000); display.clearDisplay(); } void loop() { float temperature = bmp.readTemperature(); float pressure = bmp.readPressure() / 100.0F; float altitude = bmp.readAltitude(1013.25); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.print("Temperature: "); display.print(temperature); display.println(" C"); display.print("Pressure: "); display.print(pressure); display.println(" hPa"); display.print("Altitude: "); display.print(altitude); display.println(" m"); display.display(); delay(1000); } ``` 这个代码将读取BMP280传感器的温度、气压和高度数据,并使用OLED屏幕显示这些数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值