Michael Limbird / Mbed 2 deprecated VideoOutput

Dependencies:   mbed

Committer:
mlimbird
Date:
Sun Jan 11 06:15:22 2015 +0000
Revision:
16:1121b66ef27b
Parent:
14:762baad15486
Child:
18:7066655957b3
Gyroscope now transmits info.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mlimbird 0:80725699690f 1 #include "mbed.h"
mlimbird 0:80725699690f 2
mlimbird 8:c64f76d4deff 3 //Accelerometer
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 8:c64f76d4deff 10 //Gyroscope
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 8:c64f76d4deff 18 //3-Axis Digital Compass IC
mlimbird 8:c64f76d4deff 19 #define HMC5843_ADDRESS (0x3C >> 1)
mlimbird 8:c64f76d4deff 20 #define HMC5843_REGISTER_XMSB (0x03)
mlimbird 8:c64f76d4deff 21 #define HMC5843_REGISTER_MEASMODE (0x02)
mlimbird 8:c64f76d4deff 22 #define HMC5843_MEASMODE_CONT (0x00)
mlimbird 8:c64f76d4deff 23
mlimbird 11:65ae1cf6f7d9 24 I2C i2c( p9, p10 ); // sda, scl
mlimbird 8:c64f76d4deff 25
mlimbird 11:65ae1cf6f7d9 26 void init_adxl345();
mlimbird 13:83bea035c658 27 void read_adxl345();
mlimbird 16:1121b66ef27b 28 void init_itg3200();
mlimbird 16:1121b66ef27b 29 void read_itg3200();
mlimbird 8:c64f76d4deff 30 //void init_hmc5843();
mlimbird 8:c64f76d4deff 31
mlimbird 8:c64f76d4deff 32 Serial pc(USBTX, USBRX); //tx, rx
mlimbird 8:c64f76d4deff 33
mlimbird 12:509ed716bd58 34 int accelerometer_data[3];
mlimbird 16:1121b66ef27b 35 int gyro_data[3];
mlimbird 12:509ed716bd58 36 //int magnetometer_data[3];
mlimbird 8:c64f76d4deff 37
mlimbird 9:331dbf3b341d 38 PwmOut led(LED1);
mlimbird 9:331dbf3b341d 39
mlimbird 9:331dbf3b341d 40 float brightness = 0.0;
mlimbird 0:80725699690f 41
mlimbird 0:80725699690f 42 int main() {
mlimbird 8:c64f76d4deff 43
mlimbird 11:65ae1cf6f7d9 44 init_adxl345();
mlimbird 8:c64f76d4deff 45 //init_hmc5843();
mlimbird 16:1121b66ef27b 46 init_itg3200();
mlimbird 7:4377556c2d5b 47
mlimbird 12:509ed716bd58 48 //pc.printf("Press 'u' to turn LED1 brightness up, 'd' to turn it down.\n");
mlimbird 9:331dbf3b341d 49
mlimbird 12:509ed716bd58 50 while(1) {
mlimbird 12:509ed716bd58 51 /*
mlimbird 9:331dbf3b341d 52 char c = pc.getc();
mlimbird 9:331dbf3b341d 53 if((c == 'u') && (brightness < 0.5)) {
mlimbird 9:331dbf3b341d 54 brightness += 0.01;
mlimbird 9:331dbf3b341d 55 led = brightness;
mlimbird 9:331dbf3b341d 56 }
mlimbird 9:331dbf3b341d 57 if((c == 'd') && (brightness > 0.0)) {
mlimbird 9:331dbf3b341d 58 brightness -= 0.01;
mlimbird 9:331dbf3b341d 59 led = brightness;
mlimbird 9:331dbf3b341d 60 }
mlimbird 12:509ed716bd58 61 */
mlimbird 16:1121b66ef27b 62 //read_adxl345();
mlimbird 16:1121b66ef27b 63 read_itg3200();
mlimbird 7:4377556c2d5b 64
mlimbird 0:80725699690f 65 }
mlimbird 0:80725699690f 66 }
mlimbird 8:c64f76d4deff 67
mlimbird 8:c64f76d4deff 68 void init_adxl345() {
mlimbird 11:65ae1cf6f7d9 69 char data[2];
mlimbird 11:65ae1cf6f7d9 70 data[0] = ADXL_REGISTER_PWRCTL;
mlimbird 11:65ae1cf6f7d9 71 data[1] = ADXL_PWRCTL_MEASURE;
mlimbird 8:c64f76d4deff 72
mlimbird 14:762baad15486 73 i2c.write(ADXL345_ADDRESS_W, data, 2); // first part of data is the register
mlimbird 11:65ae1cf6f7d9 74
mlimbird 11:65ae1cf6f7d9 75 wait(0.5);
mlimbird 8:c64f76d4deff 76
mlimbird 14:762baad15486 77 i2c.write(ADXL345_ADDRESS_W, data, 1);
mlimbird 14:762baad15486 78 i2c.read(ADXL345_ADDRESS_R, data, 2);
mlimbird 12:509ed716bd58 79 pc.printf("%i\n",(unsigned int)data);
mlimbird 8:c64f76d4deff 80 }
mlimbird 8:c64f76d4deff 81
mlimbird 8:c64f76d4deff 82 void read_adxl345() {
mlimbird 12:509ed716bd58 83 char bytes[6];
mlimbird 8:c64f76d4deff 84 memset(bytes,0,6);
mlimbird 12:509ed716bd58 85 bytes[0] = ADXL345_REGISTER_XLSB;
mlimbird 12:509ed716bd58 86
mlimbird 14:762baad15486 87 i2c.write(ADXL345_ADDRESS_W, bytes, 1);
mlimbird 14:762baad15486 88 i2c.read(ADXL345_ADDRESS_R, bytes, 6);
mlimbird 8:c64f76d4deff 89
mlimbird 8:c64f76d4deff 90 for (int i=0;i<3;++i) {
mlimbird 8:c64f76d4deff 91 accelerometer_data[i] = (int)bytes[2*i] + (((int)bytes[2*i + 1]) << 8);
mlimbird 8:c64f76d4deff 92 }
mlimbird 13:83bea035c658 93
mlimbird 13:83bea035c658 94 pc.printf("ACCEL: %i\t%i\t%i", accelerometer_data[0], accelerometer_data[1], accelerometer_data[2]);
mlimbird 8:c64f76d4deff 95 }
mlimbird 8:c64f76d4deff 96
mlimbird 16:1121b66ef27b 97
mlimbird 8:c64f76d4deff 98 void init_itg3200() {
mlimbird 16:1121b66ef27b 99 char data[2];
mlimbird 16:1121b66ef27b 100 data[0] = ITG3200_REGISTER_DLPF_FS;
mlimbird 16:1121b66ef27b 101 data[1] = ITG3200_FULLSCALE | ITG3200_42HZ;
mlimbird 8:c64f76d4deff 102
mlimbird 16:1121b66ef27b 103 i2c.write(ITG3200_ADDRESS_W, data,2);
mlimbird 8:c64f76d4deff 104
mlimbird 16:1121b66ef27b 105 i2c.read(ITG3200_ADDRESS_R, data, 1);
mlimbird 8:c64f76d4deff 106
mlimbird 16:1121b66ef27b 107 pc.printf("%i\n",(unsigned int)data);
mlimbird 8:c64f76d4deff 108 }
mlimbird 8:c64f76d4deff 109
mlimbird 8:c64f76d4deff 110 void read_itg3200() {
mlimbird 16:1121b66ef27b 111 char bytes[6];
mlimbird 8:c64f76d4deff 112 memset(bytes,0,6);
mlimbird 16:1121b66ef27b 113 bytes[0] = ITG3200_REGISTER_XMSB;
mlimbird 8:c64f76d4deff 114
mlimbird 16:1121b66ef27b 115 i2c.write(ITG3200_ADDRESS_W, bytes, 1);
mlimbird 16:1121b66ef27b 116 i2c.read(ITG3200_ADDRESS_R, bytes, 6);
mlimbird 16:1121b66ef27b 117
mlimbird 8:c64f76d4deff 118 for (int i=0;i<3;++i) {
mlimbird 8:c64f76d4deff 119 gyro_data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8);
mlimbird 8:c64f76d4deff 120 }
mlimbird 16:1121b66ef27b 121
mlimbird 16:1121b66ef27b 122 pc.printf("GYRO: %i\t%i\t%i", gyro_data[0], gyro_data[1], gyro_data[2]);
mlimbird 8:c64f76d4deff 123 }
mlimbird 16:1121b66ef27b 124 /*
mlimbird 8:c64f76d4deff 125 void init_hmc5843() {
mlimbird 8:c64f76d4deff 126 bytes data = 0;
mlimbird 8:c64f76d4deff 127
mlimbird 8:c64f76d4deff 128 i2c_write(HMC5843_ADDRESS, HMC5843_REGISTER_MEASMODE, HMC5843_MEASMODE_CONT);
mlimbird 8:c64f76d4deff 129
mlimbird 8:c64f76d4deff 130 i2c_read(HMC5843_ADDRESS, HMC5843_REGISTER_MEASMODE, 1, &data);
mlimbird 8:c64f76d4deff 131 Serial.println((unsigned int)data);
mlimbird 8:c64f76d4deff 132 }
mlimbird 8:c64f76d4deff 133
mlimbird 8:c64f76d4deff 134 void read_hmc5843() {
mlimbird 8:c64f76d4deff 135 bytes bytes[6];
mlimbird 8:c64f76d4deff 136 memset(bytes,0,6);
mlimbird 8:c64f76d4deff 137
mlimbird 8:c64f76d4deff 138 i2c_read(HMC5843_ADDRESS, HMC5843_REGISTER_XMSB, 6, bytes);
mlimbird 8:c64f76d4deff 139
mlimbird 8:c64f76d4deff 140 for (int i=0;i<3;++i) {
mlimbird 8:c64f76d4deff 141 magnetometer_data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8);
mlimbird 8:c64f76d4deff 142 }
mlimbird 8:c64f76d4deff 143 }
mlimbird 8:c64f76d4deff 144 */