Lol ... so working on that theory, I changed the logIt function to look like this
logIt() {
this.i2c.writeTo(this.MMA8451_ADDR, this.MMA8451_REG_OUT_X_MSB);
let buffer = this.i2c.readFrom(this.MMA8451_ADDR, 7);
let x = buffer[1];
x <<= 8;
x |= buffer[2];
x >>= 2;
let y = buffer[3];
y <<= 8;
y |= buffer[4];
y >>= 2;
let z = buffer[5];
z <<= 8;
z |= buffer[6];
z >>= 2;
const divider = 2048;
let x_g = x / divider;
let y_g = y / divider;
let z_g = z / divider;
console.log('x_g', x_g, 'y_g', y_g, 'z_g', z_g);
console.log('buffer', buffer);
}
Essentially I'm just ignoring the first byte of data and grabbing 1 extra, and now the data at least seems relatively stable, though I think it's the tilt of the sensor, but for some reason in a range between 0 and 8 o_0, but it really doesn't fit with how I've understood I2C to work.
From what I understand you send a write, telling what you want from the device, when you call read the first data you get back is the data you requested. I am rather confused ... xD
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Lol ... so working on that theory, I changed the logIt function to look like this
Essentially I'm just ignoring the first byte of data and grabbing 1 extra, and now the data at least seems relatively stable, though I think it's the tilt of the sensor, but for some reason in a range between 0 and 8 o_0, but it really doesn't fit with how I've understood I2C to work.
From what I understand you send a write, telling what you want from the device, when you call read the first data you get back is the data you requested. I am rather confused ... xD