Michael Limbird / Mbed 2 deprecated VideoOutput

Dependencies:   mbed

Committer:
mlimbird
Date:
Sat Jan 10 18:54:57 2015 +0000
Revision:
11:65ae1cf6f7d9
Parent:
10:7bdbc8eb0d69
Child:
12:509ed716bd58
Added i2c with initialization of adxl.

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 11:65ae1cf6f7d9 4 #define ADXL345_ADDRESS (0xA6 >> 1) //I2C uses 7 bits, must shift it by 1 to use
mlimbird 8:c64f76d4deff 5 #define ADXL345_REGISTER_XLSB (0x32)
mlimbird 8:c64f76d4deff 6 #define ADXL_REGISTER_PWRCTL (0x2D)
mlimbird 11:65ae1cf6f7d9 7 #define ADXL_PWRCTL_MEASURE (0x01 << 3)
mlimbird 8:c64f76d4deff 8
mlimbird 8:c64f76d4deff 9 //Gyroscope
mlimbird 8:c64f76d4deff 10 #define ITG3200_ADDRESS (0xD0 >> 1)
mlimbird 8:c64f76d4deff 11 #define ITG3200_REGISTER_XMSB (0x1D)
mlimbird 8:c64f76d4deff 12 #define ITG3200_REGISTER_DLPF_FS (0x16)
mlimbird 8:c64f76d4deff 13 #define ITG3200_FULLSCALE (0x03 << 3)
mlimbird 8:c64f76d4deff 14 #define ITG3200_42HZ (0x03)
mlimbird 8:c64f76d4deff 15
mlimbird 8:c64f76d4deff 16 //3-Axis Digital Compass IC
mlimbird 8:c64f76d4deff 17 #define HMC5843_ADDRESS (0x3C >> 1)
mlimbird 8:c64f76d4deff 18 #define HMC5843_REGISTER_XMSB (0x03)
mlimbird 8:c64f76d4deff 19 #define HMC5843_REGISTER_MEASMODE (0x02)
mlimbird 8:c64f76d4deff 20 #define HMC5843_MEASMODE_CONT (0x00)
mlimbird 8:c64f76d4deff 21
mlimbird 11:65ae1cf6f7d9 22 I2C i2c( p9, p10 ); // sda, scl
mlimbird 8:c64f76d4deff 23
mlimbird 11:65ae1cf6f7d9 24 void init_adxl345();
mlimbird 8:c64f76d4deff 25 //void init_itg3200();
mlimbird 8:c64f76d4deff 26 //void init_hmc5843();
mlimbird 8:c64f76d4deff 27
mlimbird 8:c64f76d4deff 28 Serial pc(USBTX, USBRX); //tx, rx
mlimbird 8:c64f76d4deff 29
mlimbird 10:7bdbc8eb0d69 30 //int adxl345_Data[3];
mlimbird 8:c64f76d4deff 31 //int itg3200_Data[3];
mlimbird 8:c64f76d4deff 32 //int hmc5843_Data[3];
mlimbird 8:c64f76d4deff 33
mlimbird 9:331dbf3b341d 34 PwmOut led(LED1);
mlimbird 9:331dbf3b341d 35
mlimbird 9:331dbf3b341d 36 float brightness = 0.0;
mlimbird 0:80725699690f 37
mlimbird 0:80725699690f 38 int main() {
mlimbird 9:331dbf3b341d 39 //char cmd[2];
mlimbird 8:c64f76d4deff 40
mlimbird 11:65ae1cf6f7d9 41 init_adxl345();
mlimbird 8:c64f76d4deff 42 //init_hmc5843();
mlimbird 8:c64f76d4deff 43 //init_itg3200();
mlimbird 7:4377556c2d5b 44
mlimbird 9:331dbf3b341d 45 pc.printf("Press 'u' to turn LED1 brightness up, 'd' to turn it down.\n");
mlimbird 9:331dbf3b341d 46
mlimbird 0:80725699690f 47 while(1) {
mlimbird 9:331dbf3b341d 48 //cmd[0] = 0x01;
mlimbird 9:331dbf3b341d 49 //cmd[1] = 0x00;
mlimbird 8:c64f76d4deff 50 //i2c.write(addr, cmd, 2); // i2c.write(address, command, bytes);
mlimbird 8:c64f76d4deff 51
mlimbird 11:65ae1cf6f7d9 52 pc.printf("ADXL345_Address %d", ADXL345_ADDRESS);
mlimbird 11:65ae1cf6f7d9 53
mlimbird 9:331dbf3b341d 54 char c = pc.getc();
mlimbird 9:331dbf3b341d 55 if((c == 'u') && (brightness < 0.5)) {
mlimbird 9:331dbf3b341d 56 brightness += 0.01;
mlimbird 9:331dbf3b341d 57 led = brightness;
mlimbird 9:331dbf3b341d 58 }
mlimbird 9:331dbf3b341d 59 if((c == 'd') && (brightness > 0.0)) {
mlimbird 9:331dbf3b341d 60 brightness -= 0.01;
mlimbird 9:331dbf3b341d 61 led = brightness;
mlimbird 9:331dbf3b341d 62 }
mlimbird 7:4377556c2d5b 63
mlimbird 0:80725699690f 64 }
mlimbird 0:80725699690f 65 }
mlimbird 8:c64f76d4deff 66
mlimbird 8:c64f76d4deff 67
mlimbird 11:65ae1cf6f7d9 68
mlimbird 8:c64f76d4deff 69 void init_adxl345() {
mlimbird 11:65ae1cf6f7d9 70 char data[2];
mlimbird 11:65ae1cf6f7d9 71 data[0] = ADXL_REGISTER_PWRCTL;
mlimbird 11:65ae1cf6f7d9 72 data[1] = ADXL_PWRCTL_MEASURE;
mlimbird 8:c64f76d4deff 73
mlimbird 11:65ae1cf6f7d9 74 i2c.write(ADXL345_ADDRESS, data, 2); // first part of data is the register
mlimbird 11:65ae1cf6f7d9 75
mlimbird 11:65ae1cf6f7d9 76 wait(0.5);
mlimbird 8:c64f76d4deff 77
mlimbird 11:65ae1cf6f7d9 78 i2c.write(ADXL345_ADDRESS, data, 1);
mlimbird 11:65ae1cf6f7d9 79 i2c.read(ADXL345_ADDRESS, data, 2);
mlimbird 11:65ae1cf6f7d9 80 pc.printf("%c",(char)data);
mlimbird 8:c64f76d4deff 81 }
mlimbird 8:c64f76d4deff 82
mlimbird 11:65ae1cf6f7d9 83 /*
mlimbird 8:c64f76d4deff 84 void read_adxl345() {
mlimbird 8:c64f76d4deff 85 bytes bytes[6];
mlimbird 8:c64f76d4deff 86 memset(bytes,0,6);
mlimbird 8:c64f76d4deff 87
mlimbird 8:c64f76d4deff 88 i2c_read(ADXL345_ADDRESS, ADXL345_REGISTER_XLSB, 6, bytes);
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 8:c64f76d4deff 93 }
mlimbird 8:c64f76d4deff 94
mlimbird 8:c64f76d4deff 95 void init_itg3200() {
mlimbird 8:c64f76d4deff 96 byte data = 0;
mlimbird 8:c64f76d4deff 97
mlimbird 8:c64f76d4deff 98 i2c_write(ITG3200_ADDRESS, ITG3200_REGISTER_DLPF_FS, ITG3200_FULLSCALE | ITG3200_42HZ);
mlimbird 8:c64f76d4deff 99
mlimbird 8:c64f76d4deff 100 i2c_read(ITG3200_ADDRESS, ITG3200_REGISTER_DLPF_FS, 1, &data);
mlimbird 8:c64f76d4deff 101
mlimbird 8:c64f76d4deff 102 Serial.println((unsigned int)data);
mlimbird 8:c64f76d4deff 103 }
mlimbird 8:c64f76d4deff 104
mlimbird 8:c64f76d4deff 105 void read_itg3200() {
mlimbird 8:c64f76d4deff 106 bytes bytes[6];
mlimbird 8:c64f76d4deff 107 memset(bytes,0,6);
mlimbird 8:c64f76d4deff 108
mlimbird 8:c64f76d4deff 109 i2c_read(ITG3200_ADDRESS, ITG3200_REGISTER_XMSB, 6, bytes);
mlimbird 8:c64f76d4deff 110 for (int i=0;i<3;++i) {
mlimbird 8:c64f76d4deff 111 gyro_data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8);
mlimbird 8:c64f76d4deff 112 }
mlimbird 8:c64f76d4deff 113 }
mlimbird 8:c64f76d4deff 114
mlimbird 8:c64f76d4deff 115 void init_hmc5843() {
mlimbird 8:c64f76d4deff 116 bytes data = 0;
mlimbird 8:c64f76d4deff 117
mlimbird 8:c64f76d4deff 118 i2c_write(HMC5843_ADDRESS, HMC5843_REGISTER_MEASMODE, HMC5843_MEASMODE_CONT);
mlimbird 8:c64f76d4deff 119
mlimbird 8:c64f76d4deff 120 i2c_read(HMC5843_ADDRESS, HMC5843_REGISTER_MEASMODE, 1, &data);
mlimbird 8:c64f76d4deff 121 Serial.println((unsigned int)data);
mlimbird 8:c64f76d4deff 122 }
mlimbird 8:c64f76d4deff 123
mlimbird 8:c64f76d4deff 124 void read_hmc5843() {
mlimbird 8:c64f76d4deff 125 bytes bytes[6];
mlimbird 8:c64f76d4deff 126 memset(bytes,0,6);
mlimbird 8:c64f76d4deff 127
mlimbird 8:c64f76d4deff 128 i2c_read(HMC5843_ADDRESS, HMC5843_REGISTER_XMSB, 6, bytes);
mlimbird 8:c64f76d4deff 129
mlimbird 8:c64f76d4deff 130 for (int i=0;i<3;++i) {
mlimbird 8:c64f76d4deff 131 magnetometer_data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8);
mlimbird 8:c64f76d4deff 132 }
mlimbird 8:c64f76d4deff 133 }
mlimbird 8:c64f76d4deff 134 */