乐鑫技术交流
直播中

123

11年用户 889经验值
擅长:可编程逻辑
私信 关注
[问答]

BMP/BME280异常行为求解

我有一个 Aliexpress 模块,一侧标记为 BMP/BME280,另一侧标记为 GYBMEP。传感器上的孔位于一侧而不是拐角处。芯片 ID 报告 0x60(我在 Adafruit_BME280.cpp 文件中放置了一些 Serial.prints)。我必须将 Adafruit_BME280.h 文件中的 I2C 地址从 0x77 更改为 0x76。
我的代码:
代码:全选#include
#include
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
float Pressure;
float BMETemp, BMEAltitude;

void setup() {
  Serial.begin(115200);
  boolean status = bme.begin(0x76);
}

void loop() {
  printValues();
}

void printValues() {
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");

  Serial.print("Pressure = ");

  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Humidity = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();
}

printValues() 例程产生以下结果:
Temperature = nan *C
Pressure = nan hPa
Approx. Altitude = nan m
Humidity = nan %
当我运行 bme280test 示例时,我得到这个:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v60000318
~ld
此外,当我在开始例程的 Adafruit_BME280.cpp 文件中插入 Serial.prints 时,我得到 ChipID = 0xFF。如果我将它们放在 delay(100) 之前,我会得到 ChipID = 0x60(正确!)。
    读取系数();// 读取微调参数,见 DS 4.2.2
    setSampling(); // 使用默认
    延迟(100);
    Serial.print("芯片ID=");
    Serial.println (read8(BME280_REGISTER_CHIPID));
    返回真;

               


                        

更多回帖

发帖
×
20
完善资料,
赚取积分