moon

Dependencies:   Hexi_OLED_SSD1351

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers GYROMETER.cpp Source File

GYROMETER.cpp

00001 
00002 #include "GYROMETER.h"
00003  #include "mbed.h"
00004 
00005 GYROMETER::GYROMETER(PinName sda, PinName scl) : gyroi2c(sda,scl)
00006  {
00007 
00008  }
00009 
00010  void GYROMETER::Config(void)
00011  {
00012    char d[2];
00013    d[0] = GYRO_CTRL_REG1;                       //standby mode
00014    d[1] = 0x08;
00015    gyroi2c.write(GYRO_I2C_ADDRESS, d,2);
00016 
00017 
00018    d[0] = GYRO_CTRL_REG0;
00019    d[1] = 0x00;
00020    gyroi2c.write(GYRO_I2C_ADDRESS, d, 2);
00021 
00022 
00023    d[0] = GYRO_CTRL_REG1;                       // active mode
00024    d[1] = 0x0A;
00025    gyroi2c.write(GYRO_I2C_ADDRESS, d,2);
00026 
00027  }
00028 
00029  void GYROMETER::getData(float * g_data)
00030  {
00031 
00032     char data_bytes[7];
00033    gyroi2c.write(GYRO_I2C_ADDRESS,GYRO_STATUS,1,true);  // Read the 6 data bytes
00034    gyroi2c.read(GYRO_I2C_ADDRESS,data_bytes,7);
00035 
00036    g_data[0] =  (float)((int16_t)((data_bytes[1]*256) + (data_bytes[2]))) * 0.0625;
00037    g_data[1] =  (float)((int16_t)((data_bytes[3]*256) + (data_bytes[4]))) * 0.0625;
00038    g_data[2] =  (float)((int16_t)((data_bytes[5]*256) + (data_bytes[6]))) * 0.0625;
00039 
00040  }
00041 
00042 
00043 
00044 
00045