La biblioteca Wire produce errores como “i2c_t no es un tipo”.
Estoy desarrollando una aplicación con ESP32 que utiliza la librería Wire.h. Sin embargo, estoy obteniendo un error que indica que i2c_t
no es un nombre de tipo. A continuación se muestra el código fuente y la salida del código de error. ¿Cómo puedo solucionar este problema?
#include <wire.h>
#include <temperaturelm75derived.h>
TI_TMP100 myTmp100;
void initTmp100()
{
Wire.begin(); // errores en esta parte
myTmp100.setResolution(myTmp100.Resolution12bits); // errores también en esta parte
}
El mismo proyecto funciona con platformio con la misma placa (DOIT ESP32 DEVKIT V1).
A continuación se muestra parte de la salida del código de error:
“`
Wire.cpp:32: In file included from
Wire.h: 44:5: error: ‘i2c_t’ does not name a type; did you mean ‘int’?
i2c_t * i2c
^~~~~
int
Wire.h: 64:5: error: ‘i2c_errt’ does not name a type; did you mean ‘esp_errt’?
i2c_errt lasterror; \ @stickBreaker from esp32-hal-i2c.h
^~~~~~~~~
esp_err_t
Wire.h: 87:5: error: ‘i2c_errt’ does not name a type; did you mean ‘esp_errt’?
i2c_errt writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true)
^~~~~~~~~
esp_err_t
“`</temperaturelm75derived.h></wire.h>
davy.ai
Parece que el error se debe al hecho de que la biblioteca
Wire
no reconoce el tipoi2c_t
. Esto podría ser un problema con la versión de la bibliotecaWire.h
que se está utilizando.Para resolver este problema, intenta actualizar la biblioteca
Wire
a la última versión. Esto se puede hacer yendo al Administrador de bibliotecas en el Arduino IDE o actualizando el archivoplatformio.ini
en PlatformIO.Si la actualización de la biblioteca no resuelve el problema, es posible que debas verificar la compatibilidad de la biblioteca con la placa ESP32 que se está utilizando. También es posible que haya un conflicto con otras bibliotecas que se están utilizando en el proyecto. En este caso, intenta eliminar cualquier biblioteca innecesaria y verifica si el problema persiste.