You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32使用MS5837库调用wire.requestFrom编译报错求助

在ESP32 Nano32上使用双I2C总线驱动MS5837传感器的编译问题

我尝试在Nano32上运行两条I2C总线,代码如下:

#include <Wire.h>
#include "MS5837.h"

// Setup sensor 1
#define I2C_SDA_1_PIN 21
#define I2C_SCL_1_PIN 22
TwoWire I2C_1 = TwoWire(0);
MS5837 sensor_1;

// Setup sensor 2
#define I2C_SDA_2_PIN 17
#define I2C_SCL_2_PIN 16
TwoWire I2C_2 = TwoWire(1);
MS5837 sensor_2;

void setup() {
  
  Serial.begin(115200);
  Serial.println("Starting");
  
  I2C_1.begin(I2C_SDA_1_PIN, I2C_SCL_1_PIN);
  I2C_2.begin(I2C_SDA_2_PIN, I2C_SCL_2_PIN);

  while (!sensor_1.init(I2C_1)) {
    Serial.println("Init sensor 1 failed!");
    delay(5000);
  }

  while (!sensor_2.init(I2C_2)) {
    Serial.println("Init sensor 2 failed!");
    delay(5000);
  }
  
}

void loop() {
}

我使用的MS5837库支持指定TwoWire端口,并非Arduino IDE库管理器中可直接安装的版本(后者不支持自定义I2C总线)。

编译时出现以下错误信息:

In file included from c:\Users\tammo\OneDrive\Documents\Arduino\libraries\BlueRobotics_MS5837_Library\MS5837.h:41,
                 from c:\Users\tammo\OneDrive\Documents\Arduino\libraries\BlueRobotics_MS5837_Library\MS5837.cpp:1:
C:\Users\tammo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\libraries\Wire\src/Wire.h: In member function 'bool MS5837::init(TwoWire&)':
C:\Users\tammo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\libraries\Wire\src/Wire.h:127:13: note: candidate 1: 'uint8_t TwoWire::requestFrom(int, int)'
     uint8_t requestFrom(int address, int size);
             ^~~~~~~~~~~
C:\Users\tammo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\libraries\Wire\src/Wire.h:125:13: note: candidate 2: 'uint8_t TwoWire::requestFrom(uint8_t, uint8_t)'
     uint8_t requestFrom(uint8_t address, uint8_t size);
             ^~~~~~~~~~~
C:\Users\tammo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\libraries\Wire\src/Wire.h: In member function 'void MS5837::read()':
C:\Users\tammo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\libraries\Wire\src/Wire.h:127:13: note: candidate 1: 'uint8_t TwoWire::requestFrom(int, int)'
     uint8_t requestFrom(int address, int size);
             ^~~~~~~~~~~
C:\Users\tammo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\libraries\Wire\src/Wire.h:125:13: note: candidate 2: 'uint8_t TwoWire::requestFrom(uint8_t, uint8_t)'
     uint8_t requestFrom(uint8_t address, uint8_t size);
             ^~~~~~~~~~~
C:\Users\tammo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\libraries\Wire\src/Wire.h:127:13: note: candidate 1: 'uint8_t TwoWire::requestFrom(int, int)'
     uint8_t requestFrom(int address, int size);
             ^~~~~~~~~~~
C:\Users\tammo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.6\libraries\Wire\src/Wire.h:125:13: note: candidate 2: 'uint8_t TwoWire::requestFrom(uint8_t, uint8_t)'
     uint8_t requestFrom(uint8_t address, uint8_t size);
             ^~~~~~~~~~~
Sketch uses 273661 bytes (20%) of program storage space. Maximum is 1310720 bytes.
Global variables use 22672 bytes (6%) of dynamic memory, leaving 305008 bytes for local variables. Maximum is 327680 bytes.

不知该如何解决此问题,希望能得到相关指导。


内容的提问来源于stack exchange,提问作者Tammo Heeren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:50:26