• Hi.

    I'm trying to get a BME280 working using I2C.

    I can't seem to get it to work on my Pixl.js

    Using the hardware I2C like this:

    var BME = require("BME280");
    I2C1.setup({scl:A5,sda:A4});
    var bme = BME.connect(I2C1, { addr: 0x76 });
    console.log(bme.getData());
    

    I'm getting this error

    Uncaught InternalError: I2C Write Error 33281
     atUncaught InternalError: I2C Write Error 33281
     at line 1 col 18
    a.writeTo(c,[d,g])
                   line 1 col 18
    a.writeTo(c,[d,g])
                     ^
    in function "write" called from line 1 col 4   ^
    

    When i try to use software I2C, it kinda works, but only the first measurement and the humidity is wrong.

    var BME = require("BME280");
    var i2c = new I2C();
    i2c.setup({scl:A5,sda:A4});
    var bme = BME.connect(i2c, { addr: 0x76 });
    console.log(bme.getData()); // logs { "temp": 24.00835012295, "pressure": 961.35353842504, "humidity": 84.1865234375 }
    
    setInterval(function() {
      console.log(bme.getData()); // logs { "temp": -143.48718913660, "pressure": 1126.77476317288, "humidity": 0 }
    }, 1000);
    

    Thing is, it does work on my Espruino Pico using this code:

    var BME = require("BME280");
    I2C1.setup({scl:B8,sda:B9});
    var bme = BME.connect(I2C1, { addr: 0x76 });
    console.log(bme.getData());
    

    This logs the correct humidity, works with hardware I2C and continues to work (in a setInterval for example).

    I don't know what to do at this point. Is I2C just broken on (my) pixl.js?

About

Avatar for user117186 @user117186 started