Hello,
As the Topic suggests, I'm trying to compile BMP085 using adafruit's own library and sample program only to get the following errors on NodeMCU platform: (funny thing is that it used to work many years ago and I'm using IDE 2.3.6)
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\nadir\AppData\Local\arduino\sketches\D5C5863019F8B34D6E4451AB020E5AAE\libraries\Adafruit_BMP085_Library\Adafruit_BMP085.cpp.o:(.text._ZN15Adafruit_BMP0855read8Eh+0x0): undefined reference to `_ZN18Adafruit_I2CDevice15write_then_readEPKhjPhjb'
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\nadir\AppData\Local\arduino\sketches\D5C5863019F8B34D6E4451AB020E5AAE\libraries\Adafruit_BMP085_Library\Adafruit_BMP085.cpp.o: in function `_ZN15Adafruit_BMP0855read8Eh':
c:\Users\nadir\Documents\Arduino\libraries\Adafruit_BMP085_Library/Adafruit_BMP085.cpp:288: undefined reference to `_ZN18Adafruit_I2CDevice15write_then_readEPKhjPhjb'
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\nadir\AppData\Local\arduino\sketches\D5C5863019F8B34D6E4451AB020E5AAE\libraries\Adafruit_BMP085_Library\Adafruit_BMP085.cpp.o: in function `_ZN15Adafruit_BMP0856read16Eh':
c:\Users\nadir\Documents\Arduino\libraries\Adafruit_BMP085_Library/Adafruit_BMP085.cpp:300: undefined reference to `_ZN18Adafruit_I2CDevice15write_then_readEPKhjPhjb'
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: c:\Users\nadir\Documents\Arduino\libraries\Adafruit_BMP085_Library/Adafruit_BMP085.cpp:306: undefined reference to `_ZN18Adafruit_I2CDeviceC1EhP7TwoWire'
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\nadir\AppData\Local\arduino\sketches\D5C5863019F8B34D6E4451AB020E5AAE\libraries\Adafruit_BMP085_Library\Adafruit_BMP085.cpp.o:(.text._ZN15Adafruit_BMP0855beginEhP7TwoWire+0x4): undefined reference to `_ZN18Adafruit_I2CDevice5beginEb'
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\nadir\AppData\Local\arduino\sketches\D5C5863019F8B34D6E4451AB020E5AAE\libraries\Adafruit_BMP085_Library\Adafruit_BMP085.cpp.o:(.text._ZN15Adafruit_BMP0855beginEhP7TwoWire+0x3f): undefined reference to `_ZN18Adafruit_I2CDeviceC1EhP7TwoWire'
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\nadir\AppData\Local\arduino\sketches\D5C5863019F8B34D6E4451AB020E5AAE\libraries\Adafruit_BMP085_Library\Adafruit_BMP085.cpp.o: in function `_ZN15Adafruit_BMP0855beginEhP7TwoWire':
c:\Users\nadir\Documents\Arduino\libraries\Adafruit_BMP085_Library/Adafruit_BMP085.cpp:36: undefined reference to `_ZN18Adafruit_I2CDevice5beginEb'
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: c:\Users\nadir\Documents\Arduino\libraries\Adafruit_BMP085_Library/Adafruit_BMP085.cpp:60: undefined reference to `_ZN18Adafruit_I2CDevice5writeEPKhjbS1_j'
c:/users/nadir/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\nadir\AppData\Local\arduino\sketches\D5C5863019F8B34D6E4451AB020E5AAE\libraries\Adafruit_BMP085_Library\Adafruit_BMP085.cpp.o: in function `_ZN15Adafruit_BMP0856write8Ehh':
c:\Users\nadir\Documents\Arduino\libraries\Adafruit_BMP085_Library/Adafruit_BMP085.cpp:63: undefined reference to `_ZN18Adafruit_I2CDevice5writeEPKhjbS1_j'
collect2.exe: error: ld returned 1 exit status
Multiple libraries were found for "Adafruit_I2CDevice.h"
Used: C:\Users\nadir\Documents\Arduino\libraries\Adafruit_I2CDevice
Not used: C:\Users\nadir\Documents\Arduino\libraries\Adafruit_BusIO
exit status 1
Compilation error: exit status 1
The sample code is as follows:
#include <Adafruit_BMP085.h>
/***************************************************
This is an example for the BMP085 Barometric Pressure & Temp Sensor
Designed specifically to work with the Adafruit BMP085 Breakout
----> https://www.adafruit.com/products/391
These pressure and temperature sensors use I2C to communicate, 2 pins
are required to interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
// Calculate altitude assuming 'standard' barometric
// pressure of 1013.25 millibar = 101325 Pascal
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
// you can get a more precise measurement of altitude
// if you know the current sea level pressure which will
// vary with weather and such. If it is 1015 millibars
// that is equal to 101500 Pascals.
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(101500));
Serial.println(" meters");
Serial.println();
delay(500);
}
Appreciate any ideas as this is a part of my weather station project.