Interfacing to GY-291

Posted on
  • Based on this article I tried to connect the accelerometer to my Espruino board. Wrote some lines and get an error
    INTERNAL ERROR: Timeout on I2C Write Transmit Mode 2
    INTERNAL ERROR: Timeout on I2C Write Transmit
    at line 2 col 33
    this.i2c.writeTo(id,reg | 0x80);

    ´´´
    function GY291(i2c,sda,scl){
    this.i2c = i2c;
    var id = 0x53>>1;
    this.i2c.setup({scl:scl,sda:sda});
    }
    GY291.prototype.write = function(reg,val){
    this.i2c.writeTo(this.id,[reg,val]);
    };
    GY291.prototype.read = function(reg,count){
    this.i2c.writeTo(id,reg | 0x80);
    return this.i2c.readFrom(id,count);
    };
    GY291.prototype.turnOn = function(){
    this.write(0x2d,0);
    this.write(0x2d,16);
    this.write(0x2d,8);
    };
    var a = new GY291(I2C2,B11,B10);
    setInterval(function(){
    var c = a.read(0x32,6);
    console.log(c);
    },2000);

    ´´´

  • The 'Internal Error' is actually just because the I2C device doesn't respond - it's not actually an internal error (there's a bug open to rename it!)

    It's probably either electrical (no pullup resistors, sda/scl the wrong way around) or because the address is wrong.

    Have you tried just using 0x53? (0x53>>1) actually loses one bit, so my guess is that's probably not what you want.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Interfacing to GY-291

Posted by Avatar for JumJum @JumJum

Actions