wemos / WEMOS_SHT3x_Arduino_Library

45 stars 27 forks source link

Wire.requestFrom() library problem #10

Open 877dev opened 5 years ago

877dev commented 5 years ago

I get this compile error, but the sketch uploads fine afterwards and works on the Wemos.

I have two sensor defined in the sketch:

SHT3X indoor(0x45);    //0x45 is the default address with connection not soldered  //0x44 is with soldered blob
SHT3X outdoor(0x44);  // changed address by shorting connections with solder

Any ideas?


In file included from C:\Program Files (x86)\Arduino\libraries\WEMOS_SHT3x_Arduino_Library-master\src\WEMOS_SHT3X.h:12:0,

                 from C:\Program Files (x86)\Arduino\libraries\WEMOS_SHT3x_Arduino_Library-master\src\WEMOS_SHT3X.cpp:1:

C:\Users\877\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\libraries\Wire/Wire.h: In member function 'byte SHT3X::get()':

C:\Users\877\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\libraries\Wire/Wire.h:70:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)

     uint8_t requestFrom(int, int);

             ^

C:\Users\877\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\libraries\Wire/Wire.h:68:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)

     uint8_t requestFrom(uint8_t, uint8_t);

             ^

Sketch uses 329376 bytes (31%) of program storage space. Maximum is 1044464 bytes.
Global variables use 31300 bytes (38%) of dynamic memory, leaving 50620 bytes for local variables. Maximum is 81920 bytes.

I changed the code to:

uint8_t sht30_indoor_address = 0x45; 
SHT3X indoor(sht30_indoor_address);
uint8_t sht30_outdoor_address = 0x44; 
SHT3X outdoor(sht30_outdoor_address);

but still get an error message when compiling:

In file included from C:\Program Files (x86)\Arduino\libraries\WEMOS_SHT3x_Arduino_Library-master\src\WEMOS_SHT3X.h:12:0,

                 from C:\Program Files (x86)\Arduino\libraries\WEMOS_SHT3x_Arduino_Library-master\src\WEMOS_SHT3X.cpp:1:

C:\Users\877\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\libraries\Wire/Wire.h: In member function 'byte SHT3X::get()':

C:\Users\877\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\libraries\Wire/Wire.h:70:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)

     uint8_t requestFrom(int, int);

             ^

C:\Users\877\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\libraries\Wire/Wire.h:68:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)

     uint8_t requestFrom(uint8_t, uint8_t);

             ^

Sketch uses 329396 bytes (31%) of program storage space. Maximum is 1044464 bytes.
Global variables use 31304 bytes (38%) of dynamic memory, leaving 50616 bytes for local variables. Maximum is 81920 bytes.
Koepel commented 5 years ago

This is an internal problem inside the library: Wire.requestFrom(_address, 6); The Wire.requestFrom() parameters should be fixed. The line is here: https://github.com/wemos/WEMOS_SHT3x_Arduino_Library/blob/master/src/WEMOS_SHT3X.cpp#L30

The _address is in the object and is a uint8_t, and the default is an 'int' for a number. That means the Wire.requestFrom(_address, 6) uses Wire.requestFrom(uint8_t, int). That function does not exist, the compiler tells that there are two options:

I think this will fix it: Wire.requestFrom(_address, (uint8_t) 6);

This is the same as https://github.com/wemos/WEMOS_SHT3x_Arduino_Library/issues/7 and this pull request: https://github.com/wemos/WEMOS_SHT3x_Arduino_Library/pull/8/files But the library is not changed.