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
相关产品推荐
相关产品推荐

