Code Monkey home page Code Monkey logo

Comments (11)

caternuson avatar caternuson commented on July 4, 2024

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?

if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n");
Serial.print(" ID of 0x60 represents a BME 280.\n");
Serial.print(" ID of 0x61 represents a BME 680.\n");

from adafruit_bme280_library.

gt500sc avatar gt500sc commented on July 4, 2024

from adafruit_bme280_library.

caternuson avatar caternuson commented on July 4, 2024

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.

gt500sc avatar gt500sc commented on July 4, 2024

from adafruit_bme280_library.

ladyada avatar ladyada commented on July 4, 2024

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.

gt500sc avatar gt500sc commented on July 4, 2024

@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.

caternuson avatar caternuson commented on July 4, 2024

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.

ladyada avatar ladyada commented on July 4, 2024

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.

caternuson avatar caternuson commented on July 4, 2024

So revert to simple? No fancy "try the alternate address" logic?

from adafruit_bme280_library.

ladyada avatar ladyada commented on July 4, 2024

yeah!

from adafruit_bme280_library.

caternuson avatar caternuson commented on July 4, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.