Comments (11)
When I called the begin() method using I2C and passing the correct address, it returned false and a subsequent call to the sensorID() method returned 0xFF
Hmmm. A false return from a call to begin()
means something happened and you can't really expect any subsequent calls, like to sensorID()
, to actually work. Basically you just have to stop and figure out what's wrong.
Looks like the example even has some commentary about this?
Adafruit_BME280_Library/examples/bme280test/bme280test.ino
Lines 47 to 53 in 616c729
from adafruit_bme280_library.
from adafruit_bme280_library.
In general, it's up to you to check the return from begin()
. If it's false
, then your code should act accordingly, i.e. stop and not call anything else. But if you do make additional calls, you should expect unknown results. So for example, here:
When I called the begin() method using I2C and passing the correct address, it returned false and a subsequent call to the sensorID() method returned 0xFF.
You should have investigated why begin()
returned false and generally ignored the return from sensorID()
.
Your original issue was from using this library with a different sensor. If you use it with the correct sensor, do you still have issues? If the auto-switching to alternate address does not work as expected with that arrangement, then that's something that could be investigated.
from adafruit_bme280_library.
from adafruit_bme280_library.
greg, with two sensors you would check both returns. we have no plans to add a check per function.
if you submit a lightweight PR we'll look at merging it!
from adafruit_bme280_library.
@ladyada my example above is checking both returns and I'm not really sure what you're saying about not adding a check per function, but I submitted a PR with my changes. My first PR so I hope I did it right. Thanks!
from adafruit_bme280_library.
The two BME280 sensor case, one good + one bad, does seem more interesting. The good one will mask the bad one and the code will run, just not as expected. I could see how that would be confusing.
@ladyada Do you know the history for this "try the alternate address" logic? Why not just keep it simple and only try the address provided?
from adafruit_bme280_library.
im p. sure it was a 'well meaning' PR, because folks use non-adafruit sensors and get confused when they 'dont work' - we should revert it, tho
from adafruit_bme280_library.
So revert to simple? No fancy "try the alternate address" logic?
from adafruit_bme280_library.
yeah!
from adafruit_bme280_library.
@gt500sc Do you want to try changing your PR to make that happen? This is essentially much simpler. There's no logic needed at all. Just try to init with the supplied address and return status. If no address is specified, just use a default (that would be handled via the overloaded c-tors).
from adafruit_bme280_library.
Related Issues (20)
- Sorry, if this is obvious, but I can't locate the doxygen documentation and theres no link to it in the readme as in other libs HOT 1
- advancedsettings.ino example link URL incorrect HOT 1
- I2C to USB HOT 1
- Adafruit BME280 library does not work on Raspberry Pi Pico - runtime crashes HOT 3
- using in Jetson Nano HOT 2
- bme280test example typo errors HOT 1
- BME280.begin() for I2C allways calls BME280.begin() resetting the I2C interface to default state HOT 1
- To high delay in init() method HOT 3
- Isn't while(1); dangerous ? HOT 3
- Version 2.0.1: Examples do not work any more (i2c) HOT 3
- BME280_ADDRESS_ALTERNATE does nothing HOT 1
- Possible hang when using Adafruit_BME280::takeForcedMeasurement() HOT 2
- Compensation algorithm causes high spikes in measures HOT 24
- Software Wire / I2C HOT 3
- Custom Temperature Adjustments HOT 2
- Inaccessible class member functions HOT 5
- Temperature conversion functions HOT 1
- Convert to BusIO usage HOT 1
- sensor_t is not always a valid name when compiling this against ESP8266/ESP32
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from adafruit_bme280_library.