#ifndef BMA150_H #define BMA150_H #include "i2c.h" class BMA150 { private: I2C& i2c; public: int16_t x, y, z; BMA150(I2C& i2c_bus) : i2c(i2c_bus) { } void init() { uint8_t temp; i2c.read_reg(0x38, 0x14, 1, &temp); i2c.write_reg(0x38, 0x14, (temp & 0xe0) | 0x00 | 0x00); // 2g range, 25 Hz bandwidth } void update() { uint8_t buf[6]; i2c.read_reg(0x38, 0x02, 6, buf); x = (buf[1] << 8 | buf[0]) - 0; y = (buf[3] << 8 | buf[2]) - 0; z = (buf[5] << 8 | buf[4]) - 0; } }; #endif