Michael Limbird / Mbed 2 deprecated VideoOutput

Dependencies:   mbed

Committer:
m-limbird
Date:
Sun Jan 11 14:04:58 2015 -0500
Revision:
22:dbd5c4af83d6
Child:
23:0baaa24e04d8
Moved pdfs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
m-limbird 22:dbd5c4af83d6 1 #ifndef __9DOF_H_
m-limbird 22:dbd5c4af83d6 2 #define __9DOF_H_
m-limbird 22:dbd5c4af83d6 3
m-limbird 22:dbd5c4af83d6 4 #include "mbed.h"
m-limbird 22:dbd5c4af83d6 5
m-limbird 22:dbd5c4af83d6 6 //Accelerometer addresses
m-limbird 22:dbd5c4af83d6 7 #define ADXL345_ADDRESS_W (0xA6)
m-limbird 22:dbd5c4af83d6 8 #define ADXL345_ADDRESS_R (0xA7)
m-limbird 22:dbd5c4af83d6 9 #define ADXL345_REGISTER_XLSB (0x32)
m-limbird 22:dbd5c4af83d6 10 #define ADXL_REGISTER_PWRCTL (0x2D)
m-limbird 22:dbd5c4af83d6 11 #define ADXL_PWRCTL_MEASURE (0x01 << 3)
m-limbird 22:dbd5c4af83d6 12
m-limbird 22:dbd5c4af83d6 13 //Gyroscope addresses
m-limbird 22:dbd5c4af83d6 14 #define ITG3200_ADDRESS_W (0xD0)
m-limbird 22:dbd5c4af83d6 15 #define ITG3200_ADDRESS_R (0xD1)
m-limbird 22:dbd5c4af83d6 16 #define ITG3200_REGISTER_XMSB (0x1D)
m-limbird 22:dbd5c4af83d6 17 #define ITG3200_REGISTER_DLPF_FS (0x16)
m-limbird 22:dbd5c4af83d6 18 #define ITG3200_FULLSCALE (0x03 << 3)
m-limbird 22:dbd5c4af83d6 19 #define ITG3200_42HZ (0x03)
m-limbird 22:dbd5c4af83d6 20
m-limbird 22:dbd5c4af83d6 21 //3-Axis Digital Compass IC addresses
m-limbird 22:dbd5c4af83d6 22 #define HMC5883_ADDRESS_W (0x3C)
m-limbird 22:dbd5c4af83d6 23 #define HMC5883_ADDRESS_R (0x3D)
m-limbird 22:dbd5c4af83d6 24 #define HMC5883_REGISTER_XMSB (0x03)
m-limbird 22:dbd5c4af83d6 25 #define HMC5883_REGISTER_MEASMODE (0x02)
m-limbird 22:dbd5c4af83d6 26 #define HMC5883_MEASMODE_CONT (0x00)
m-limbird 22:dbd5c4af83d6 27
m-limbird 22:dbd5c4af83d6 28 //Declare functions
m-limbird 22:dbd5c4af83d6 29 void init_adxl345(I2C i2c);
m-limbird 22:dbd5c4af83d6 30 void read_adxl345(I2C i2c);
m-limbird 22:dbd5c4af83d6 31 void init_itg3200(I2C i2c);
m-limbird 22:dbd5c4af83d6 32 void read_itg3200(I2C i2c);
m-limbird 22:dbd5c4af83d6 33 void init_hmc5883(I2C i2c);
m-limbird 22:dbd5c4af83d6 34 void read_hmc5883(I2C i2c);
m-limbird 22:dbd5c4af83d6 35
m-limbird 22:dbd5c4af83d6 36 //This function initializes the Digital Accelerometer ADXL345
m-limbird 22:dbd5c4af83d6 37 char* init_adxl345(I2C i2c) {
m-limbird 22:dbd5c4af83d6 38 char data[2];
m-limbird 22:dbd5c4af83d6 39 data[0] = ADXL_REGISTER_PWRCTL;
m-limbird 22:dbd5c4af83d6 40 data[1] = ADXL_PWRCTL_MEASURE;
m-limbird 22:dbd5c4af83d6 41
m-limbird 22:dbd5c4af83d6 42 i2c.write(ADXL345_ADDRESS_W, data, 2); // first part of data is the register
m-limbird 22:dbd5c4af83d6 43
m-limbird 22:dbd5c4af83d6 44 i2c.write(ADXL345_ADDRESS_W, data, 1);
m-limbird 22:dbd5c4af83d6 45 i2c.read(ADXL345_ADDRESS_R, data, 2);
m-limbird 22:dbd5c4af83d6 46 }
m-limbird 22:dbd5c4af83d6 47
m-limbird 22:dbd5c4af83d6 48 void read_adxl345(I2C i2c, int[] data) {
m-limbird 22:dbd5c4af83d6 49 char bytes[6];
m-limbird 22:dbd5c4af83d6 50 memset(bytes,0,6);
m-limbird 22:dbd5c4af83d6 51 bytes[0] = ADXL345_REGISTER_XLSB;
m-limbird 22:dbd5c4af83d6 52
m-limbird 22:dbd5c4af83d6 53 i2c.write(ADXL345_ADDRESS_W, bytes, 1);
m-limbird 22:dbd5c4af83d6 54 i2c.read(ADXL345_ADDRESS_R, bytes, 6);
m-limbird 22:dbd5c4af83d6 55
m-limbird 22:dbd5c4af83d6 56 for (int i=0;i<3;++i) {
m-limbird 22:dbd5c4af83d6 57 data[i] = (int)bytes[2*i] + (((int)bytes[2*i + 1]) << 8);
m-limbird 22:dbd5c4af83d6 58 }
m-limbird 22:dbd5c4af83d6 59 }
m-limbird 22:dbd5c4af83d6 60
m-limbird 22:dbd5c4af83d6 61
m-limbird 22:dbd5c4af83d6 62 void init_itg3200(I2C i2c) {
m-limbird 22:dbd5c4af83d6 63 char data[2];
m-limbird 22:dbd5c4af83d6 64 data[0] = ITG3200_REGISTER_DLPF_FS;
m-limbird 22:dbd5c4af83d6 65 data[1] = ITG3200_FULLSCALE | ITG3200_42HZ; //bitwise or
m-limbird 22:dbd5c4af83d6 66
m-limbird 22:dbd5c4af83d6 67 i2c.write(ITG3200_ADDRESS_W, data,2);
m-limbird 22:dbd5c4af83d6 68
m-limbird 22:dbd5c4af83d6 69 i2c.write(ITG3200_ADDRESS_W, data,1);
m-limbird 22:dbd5c4af83d6 70 i2c.read(ITG3200_ADDRESS_R, data, 2);
m-limbird 22:dbd5c4af83d6 71 }
m-limbird 22:dbd5c4af83d6 72
m-limbird 22:dbd5c4af83d6 73 void read_itg3200(I2C i2c, int[] data) {
m-limbird 22:dbd5c4af83d6 74 char bytes[6];
m-limbird 22:dbd5c4af83d6 75 memset(bytes,0,6);
m-limbird 22:dbd5c4af83d6 76 bytes[0] = ITG3200_REGISTER_XMSB;
m-limbird 22:dbd5c4af83d6 77
m-limbird 22:dbd5c4af83d6 78 i2c.write(ITG3200_ADDRESS_W, bytes, 1);
m-limbird 22:dbd5c4af83d6 79 i2c.read(ITG3200_ADDRESS_R, bytes, 6);
m-limbird 22:dbd5c4af83d6 80
m-limbird 22:dbd5c4af83d6 81 for (int i=0;i<3;++i) {
m-limbird 22:dbd5c4af83d6 82 data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8);
m-limbird 22:dbd5c4af83d6 83 }
m-limbird 22:dbd5c4af83d6 84 }
m-limbird 22:dbd5c4af83d6 85
m-limbird 22:dbd5c4af83d6 86 void init_hmc5883(I2C i2c) {
m-limbird 22:dbd5c4af83d6 87 char data[2];
m-limbird 22:dbd5c4af83d6 88 data[0] = HMC5883_REGISTER_MEASMODE;
m-limbird 22:dbd5c4af83d6 89 data[1] = HMC5883_MEASMODE_CONT;
m-limbird 22:dbd5c4af83d6 90
m-limbird 22:dbd5c4af83d6 91 i2c.write(HMC5883_ADDRESS_W, data, 2);
m-limbird 22:dbd5c4af83d6 92 i2c.read(HMC5883_ADDRESS_R, data, 1);
m-limbird 22:dbd5c4af83d6 93 }
m-limbird 22:dbd5c4af83d6 94
m-limbird 22:dbd5c4af83d6 95 void read_hmc5883(I2C i2c, int[] data) {
m-limbird 22:dbd5c4af83d6 96 char bytes[6];
m-limbird 22:dbd5c4af83d6 97 memset(bytes,0,6);
m-limbird 22:dbd5c4af83d6 98 bytes[0] = HMC5883_REGISTER_XMSB;
m-limbird 22:dbd5c4af83d6 99
m-limbird 22:dbd5c4af83d6 100 i2c.write(HMC5883_ADDRESS_W, bytes, 1);
m-limbird 22:dbd5c4af83d6 101 i2c.read(HMC5883_ADDRESS_R, bytes, 6);
m-limbird 22:dbd5c4af83d6 102
m-limbird 22:dbd5c4af83d6 103 for (int i=0;i<3;++i) {
m-limbird 22:dbd5c4af83d6 104 data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8);
m-limbird 22:dbd5c4af83d6 105 }
m-limbird 22:dbd5c4af83d6 106 }
m-limbird 22:dbd5c4af83d6 107
m-limbird 22:dbd5c4af83d6 108 #endif