ESP32使用I2C总线来实现气压的测量(BMP280)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6637|回复: 11

[未解决] ESP32使用I2C总线来实现气压的测量(BMP280)

[复制链接]
发表于 2021-5-24 22:48 | 显示全部楼层 |阅读模式
ESP32使用I2C总线来实现气压的测量(BMP280),我用了ARDUINO自带的示例代码,但是不行,如下图,有大佬可以解惑吗?
可以确定BMP280模块没有问题。

代码

代码

错误

错误
 楼主| 发表于 2021-5-24 22:49 | 显示全部楼层
拜托大家了
发表于 2021-5-24 22:59 | 显示全部楼层
本帖最后由 topdog 于 2021-5-25 00:00 编辑

此示例需要https://github.com/adafruit/Adafruit_BMP280_Libraryhttps://github.com/adafruit/Adafruit_Sensor配合一起使用。

[pre]#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>

#define BMP_SDA 21
#define BMP_SCL 22

Adafruit_BMP280 bme;

void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));

if (!bme.begin()) {
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1);
}
}

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

Serial.print("Pressure = ");
Serial.print(bme.readPressure());
Serial.println(" Pa");

Serial.print("Approx altitude = ");
Serial.print(bme.readAltitude(1013.25));
Serial.println(" m");

Serial.println();
delay(2000);
}[/pre]




 楼主| 发表于 2021-5-24 23:06 来自手机 | 显示全部楼层
topdog 发表于 2021-5-24 22:59
此示例需要https://github.com/adafruit/Adafruit_BMP280_Library和https://github.com/adafruit/Adafruit_ ...

我很好奇问一下wire库有什么用吗
发表于 2021-5-24 23:09 | 显示全部楼层
kaiforme 发表于 2021-5-24 23:06
我很好奇问一下wire库有什么用吗

i2c的Arduino库就是wire。
 楼主| 发表于 2021-5-24 23:22 | 显示全部楼层
topdog 发表于 2021-5-24 23:09
i2c的Arduino库就是wire。

我按你说的试了一下,还是不行
 楼主| 发表于 2021-5-24 23:25 来自手机 | 显示全部楼层
kaiforme 发表于 2021-5-24 23:22
我按你说的试了一下,还是不行

还是原来那个问题
发表于 2021-5-25 00:01 | 显示全部楼层
kaiforme 发表于 2021-5-24 23:25
还是原来那个问题

接线:
BMP_SDA  21
BMP_SCL   22
发表于 2021-5-25 14:25 | 显示全部楼层
我的样例



#include <Wire.h>

#include <SPI.h>

#include <Adafruit_Sensor.h>  

#include <Adafruit_BMP280.h>



#define BMP_SCK 13  

#define BMP_MISO 12

#define BMP_MOSI 11

#define BMP_CS 10



Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);  



void setup() {

  Serial.begin(9600);

  Serial.println(F("BMP280 测试"));

  

  if (!bmp.begin()) {  

    Serial.println(F("找不到对应的传感器"));

    while (1);

  }

}



void loop() {

    Serial.print(F("温度 = "));

    Serial.print(bmp.readTemperature());

    Serial.println(" *C");

   

    Serial.print(F("气压 = "));

    Serial.print(bmp.readPressure());

    Serial.println(" Pa");



    Serial.print(F("海拔 = "));

    Serial.print(bmp.readAltitude(1013.25));

    Serial.println(" m");

   

    Serial.println();

    delay(2000);

}
 楼主| 发表于 2021-5-25 21:48 | 显示全部楼层

请问不能单纯使用I2C来实现测量功能吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 05:45 , Processed in 0.079970 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表