Michael Limbird / Mbed 2 deprecated VideoOutput

Dependencies:   mbed

Committer:
mlimbird
Date:
Sun Jan 11 18:07:15 2015 +0000
Revision:
20:03a3357de805
Parent:
19:76632ff3e9fc
Child:
22:dbd5c4af83d6
About to add header files for talking to the 9DOF chip to allow for easy implementation.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mlimbird 0:80725699690f 1 #include "mbed.h"
mlimbird 0:80725699690f 2
mlimbird 20:03a3357de805 3 //Accelerometer addresses
mlimbird 14:762baad15486 4 #define ADXL345_ADDRESS_W (0xA6)
mlimbird 14:762baad15486 5 #define ADXL345_ADDRESS_R (0xA7)
mlimbird 8:c64f76d4deff 6 #define ADXL345_REGISTER_XLSB (0x32)
mlimbird 8:c64f76d4deff 7 #define ADXL_REGISTER_PWRCTL (0x2D)
mlimbird 11:65ae1cf6f7d9 8 #define ADXL_PWRCTL_MEASURE (0x01 << 3)
mlimbird 8:c64f76d4deff 9
mlimbird 20:03a3357de805 10 //Gyroscope addresses
mlimbird 16:1121b66ef27b 11 #define ITG3200_ADDRESS_W (0xD0)
mlimbird 16:1121b66ef27b 12 #define ITG3200_ADDRESS_R (0xD1)
mlimbird 8:c64f76d4deff 13 #define ITG3200_REGISTER_XMSB (0x1D)
mlimbird 8:c64f76d4deff 14 #define ITG3200_REGISTER_DLPF_FS (0x16)
mlimbird 8:c64f76d4deff 15 #define ITG3200_FULLSCALE (0x03 << 3)
mlimbird 8:c64f76d4deff 16 #define ITG3200_42HZ (0x03)
mlimbird 8:c64f76d4deff 17
mlimbird 20:03a3357de805 18 //3-Axis Digital Compass IC addresses
mlimbird 19:76632ff3e9fc 19 #define HMC5883_ADDRESS_W (0x3C)
mlimbird 19:76632ff3e9fc 20 #define HMC5883_ADDRESS_R (0x3D)
mlimbird 19:76632ff3e9fc 21 #define HMC5883_REGISTER_XMSB (0x03)
mlimbird 19:76632ff3e9fc 22 #define HMC5883_REGISTER_MEASMODE (0x02)
mlimbird 19:76632ff3e9fc 23 #define HMC5883_MEASMODE_CONT (0x00)
mlimbird 8:c64f76d4deff 24
mlimbird 20:03a3357de805 25 //establish I2C connections
mlimbird 11:65ae1cf6f7d9 26 I2C i2c( p9, p10 ); // sda, scl
mlimbird 8:c64f76d4deff 27
mlimbird 20:03a3357de805 28 //Declare functions
mlimbird 11:65ae1cf6f7d9 29 void init_adxl345();
mlimbird 13:83bea035c658 30 void read_adxl345();
mlimbird 16:1121b66ef27b 31 void init_itg3200();
mlimbird 16:1121b66ef27b 32 void read_itg3200();
mlimbird 19:76632ff3e9fc 33 void init_hmc5883();
mlimbird 19:76632ff3e9fc 34 void read_hmc5883();
mlimbird 8:c64f76d4deff 35
mlimbird 20:03a3357de805 36 //establish serial communications with computer via usb
mlimbird 8:c64f76d4deff 37 Serial pc(USBTX, USBRX); //tx, rx
mlimbird 8:c64f76d4deff 38
mlimbird 20:03a3357de805 39 //arrays to store data from 9DOF
mlimbird 12:509ed716bd58 40 int accelerometer_data[3];
mlimbird 16:1121b66ef27b 41 int gyro_data[3];
mlimbird 19:76632ff3e9fc 42 int magnetometer_data[3];
mlimbird 8:c64f76d4deff 43
mlimbird 0:80725699690f 44 int main() {
mlimbird 8:c64f76d4deff 45
mlimbird 20:03a3357de805 46 //initialize each IC
mlimbird 20:03a3357de805 47 //init_adxl345();
mlimbird 16:1121b66ef27b 48 init_itg3200();
mlimbird 20:03a3357de805 49 //init_hmc5883();
mlimbird 9:331dbf3b341d 50
mlimbird 12:509ed716bd58 51 while(1) {
mlimbird 20:03a3357de805 52 //read from each IC
mlimbird 16:1121b66ef27b 53 //read_adxl345();
mlimbird 20:03a3357de805 54 read_itg3200();
mlimbird 20:03a3357de805 55 //read_hmc5883();
mlimbird 0:80725699690f 56 }
mlimbird 0:80725699690f 57 }
mlimbird 8:c64f76d4deff 58
mlimbird 20:03a3357de805 59 //This function initializes the Digital Accelerometer ADXL345
mlimbird 8:c64f76d4deff 60 void init_adxl345() {
mlimbird 11:65ae1cf6f7d9 61 char data[2];
mlimbird 11:65ae1cf6f7d9 62 data[0] = ADXL_REGISTER_PWRCTL;
mlimbird 11:65ae1cf6f7d9 63 data[1] = ADXL_PWRCTL_MEASURE;
mlimbird 8:c64f76d4deff 64
mlimbird 14:762baad15486 65 i2c.write(ADXL345_ADDRESS_W, data, 2); // first part of data is the register
mlimbird 8:c64f76d4deff 66
mlimbird 14:762baad15486 67 i2c.write(ADXL345_ADDRESS_W, data, 1);
mlimbird 14:762baad15486 68 i2c.read(ADXL345_ADDRESS_R, data, 2);
mlimbird 20:03a3357de805 69
mlimbird 12:509ed716bd58 70 pc.printf("%i\n",(unsigned int)data);
mlimbird 8:c64f76d4deff 71 }
mlimbird 8:c64f76d4deff 72
mlimbird 8:c64f76d4deff 73 void read_adxl345() {
mlimbird 12:509ed716bd58 74 char bytes[6];
mlimbird 8:c64f76d4deff 75 memset(bytes,0,6);
mlimbird 12:509ed716bd58 76 bytes[0] = ADXL345_REGISTER_XLSB;
mlimbird 12:509ed716bd58 77
mlimbird 14:762baad15486 78 i2c.write(ADXL345_ADDRESS_W, bytes, 1);
mlimbird 14:762baad15486 79 i2c.read(ADXL345_ADDRESS_R, bytes, 6);
mlimbird 8:c64f76d4deff 80
mlimbird 8:c64f76d4deff 81 for (int i=0;i<3;++i) {
mlimbird 8:c64f76d4deff 82 accelerometer_data[i] = (int)bytes[2*i] + (((int)bytes[2*i + 1]) << 8);
mlimbird 8:c64f76d4deff 83 }
mlimbird 13:83bea035c658 84
mlimbird 13:83bea035c658 85 pc.printf("ACCEL: %i\t%i\t%i", accelerometer_data[0], accelerometer_data[1], accelerometer_data[2]);
mlimbird 8:c64f76d4deff 86 }
mlimbird 8:c64f76d4deff 87
mlimbird 16:1121b66ef27b 88
mlimbird 8:c64f76d4deff 89 void init_itg3200() {
mlimbird 16:1121b66ef27b 90 char data[2];
mlimbird 16:1121b66ef27b 91 data[0] = ITG3200_REGISTER_DLPF_FS;
mlimbird 18:7066655957b3 92 data[1] = ITG3200_FULLSCALE | ITG3200_42HZ; //bitwise or
mlimbird 8:c64f76d4deff 93
mlimbird 18:7066655957b3 94 pc.printf("Fullscale : %i, 42HZ : %i\n", ITG3200_FULLSCALE, ITG3200_42HZ);
mlimbird 18:7066655957b3 95 pc.printf("Bitwise Or : %i\n", (unsigned int)data[1]);
mlimbird 18:7066655957b3 96
mlimbird 16:1121b66ef27b 97 i2c.write(ITG3200_ADDRESS_W, data,2);
mlimbird 20:03a3357de805 98
mlimbird 20:03a3357de805 99 i2c.write(ITG3200_ADDRESS_W, data,1);
mlimbird 20:03a3357de805 100 i2c.read(ITG3200_ADDRESS_R, data, 2);
mlimbird 8:c64f76d4deff 101
mlimbird 16:1121b66ef27b 102 pc.printf("%i\n",(unsigned int)data);
mlimbird 8:c64f76d4deff 103 }
mlimbird 8:c64f76d4deff 104
mlimbird 8:c64f76d4deff 105 void read_itg3200() {
mlimbird 16:1121b66ef27b 106 char bytes[6];
mlimbird 8:c64f76d4deff 107 memset(bytes,0,6);
mlimbird 16:1121b66ef27b 108 bytes[0] = ITG3200_REGISTER_XMSB;
mlimbird 8:c64f76d4deff 109
mlimbird 16:1121b66ef27b 110 i2c.write(ITG3200_ADDRESS_W, bytes, 1);
mlimbird 16:1121b66ef27b 111 i2c.read(ITG3200_ADDRESS_R, bytes, 6);
mlimbird 16:1121b66ef27b 112
mlimbird 8:c64f76d4deff 113 for (int i=0;i<3;++i) {
mlimbird 8:c64f76d4deff 114 gyro_data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8);
mlimbird 8:c64f76d4deff 115 }
mlimbird 16:1121b66ef27b 116
mlimbird 16:1121b66ef27b 117 pc.printf("GYRO: %i\t%i\t%i", gyro_data[0], gyro_data[1], gyro_data[2]);
mlimbird 8:c64f76d4deff 118 }
mlimbird 19:76632ff3e9fc 119
mlimbird 19:76632ff3e9fc 120 void init_hmc5883() {
mlimbird 19:76632ff3e9fc 121 char data[2];
mlimbird 19:76632ff3e9fc 122 data[0] = HMC5883_REGISTER_MEASMODE;
mlimbird 19:76632ff3e9fc 123 data[1] = HMC5883_MEASMODE_CONT;
mlimbird 8:c64f76d4deff 124
mlimbird 19:76632ff3e9fc 125 i2c.write(HMC5883_ADDRESS_W, data, 2);
mlimbird 19:76632ff3e9fc 126 i2c.read(HMC5883_ADDRESS_R, data, 1);
mlimbird 19:76632ff3e9fc 127
mlimbird 19:76632ff3e9fc 128 pc.printf("%i\n",(unsigned int)data);
mlimbird 8:c64f76d4deff 129 }
mlimbird 8:c64f76d4deff 130
mlimbird 19:76632ff3e9fc 131 void read_hmc5883() {
mlimbird 19:76632ff3e9fc 132 char bytes[6];
mlimbird 8:c64f76d4deff 133 memset(bytes,0,6);
mlimbird 19:76632ff3e9fc 134 bytes[0] = HMC5883_REGISTER_XMSB;
mlimbird 8:c64f76d4deff 135
mlimbird 19:76632ff3e9fc 136 i2c.write(HMC5883_ADDRESS_W, bytes, 1);
mlimbird 19:76632ff3e9fc 137 i2c.read(HMC5883_ADDRESS_R, bytes, 6);
mlimbird 8:c64f76d4deff 138
mlimbird 8:c64f76d4deff 139 for (int i=0;i<3;++i) {
mlimbird 8:c64f76d4deff 140 magnetometer_data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8);
mlimbird 8:c64f76d4deff 141 }
mlimbird 19:76632ff3e9fc 142
mlimbird 19:76632ff3e9fc 143 pc.printf("Magnet: %i\t%i\t%i", magnetometer_data[0], magnetometer_data[1], magnetometer_data[2]);
mlimbird 19:76632ff3e9fc 144 }