Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@8:c64f76d4deff, 2015-01-10 (annotated)
- Committer:
- mlimbird
- Date:
- Sat Jan 10 03:46:30 2015 +0000
- Revision:
- 8:c64f76d4deff
- Parent:
- 7:4377556c2d5b
- Child:
- 9:331dbf3b341d
Added serial interface. Has some I2C stuff
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mlimbird | 0:80725699690f | 1 | #include "mbed.h" |
mlimbird | 0:80725699690f | 2 | |
mlimbird | 8:c64f76d4deff | 3 | //Accelerometer |
mlimbird | 8:c64f76d4deff | 4 | #define ADXL345_ADDRESS (0xA6 >> 1) |
mlimbird | 8:c64f76d4deff | 5 | #define ADXL345_REGISTER_XLSB (0x32) |
mlimbird | 8:c64f76d4deff | 6 | #define ADXL_REGISTER_PWRCTL (0x2D) |
mlimbird | 8:c64f76d4deff | 7 | #define ADXL_PWRCTL_MEASURE (1 << 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 | 8:c64f76d4deff | 22 | //I2C i2c( p9, p10 ); // sda, scl |
mlimbird | 8:c64f76d4deff | 23 | |
mlimbird | 8:c64f76d4deff | 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 | const int addr = 0x90; |
mlimbird | 8:c64f76d4deff | 29 | Serial pc(USBTX, USBRX); //tx, rx |
mlimbird | 8:c64f76d4deff | 30 | |
mlimbird | 8:c64f76d4deff | 31 | //int adxl345_Data[3]; |
mlimbird | 8:c64f76d4deff | 32 | //int itg3200_Data[3]; |
mlimbird | 8:c64f76d4deff | 33 | //int hmc5843_Data[3]; |
mlimbird | 8:c64f76d4deff | 34 | |
mlimbird | 0:80725699690f | 35 | DigitalOut myled(LED1); |
mlimbird | 0:80725699690f | 36 | |
mlimbird | 0:80725699690f | 37 | int main() { |
mlimbird | 8:c64f76d4deff | 38 | char cmd[2]; |
mlimbird | 8:c64f76d4deff | 39 | |
mlimbird | 8:c64f76d4deff | 40 | //init_adxl345(); |
mlimbird | 8:c64f76d4deff | 41 | //init_hmc5843(); |
mlimbird | 8:c64f76d4deff | 42 | //init_itg3200(); |
mlimbird | 7:4377556c2d5b | 43 | |
mlimbird | 0:80725699690f | 44 | while(1) { |
mlimbird | 8:c64f76d4deff | 45 | cmd[0] = 0x01; |
mlimbird | 8:c64f76d4deff | 46 | cmd[1] = 0x00; |
mlimbird | 8:c64f76d4deff | 47 | //i2c.write(addr, cmd, 2); // i2c.write(address, command, bytes); |
mlimbird | 8:c64f76d4deff | 48 | |
mlimbird | 8:c64f76d4deff | 49 | pc.printf("Hello."); |
mlimbird | 7:4377556c2d5b | 50 | |
mlimbird | 0:80725699690f | 51 | myled = 1; |
m-limbird | 5:42066232dc6f | 52 | wait(0.1333); |
mlimbird | 0:80725699690f | 53 | myled = 0; |
m-limbird | 4:e51fc19119ba | 54 | wait(1.9); |
m-limbird | 6:42acd9884ffc | 55 | //this is an awesome program. |
mlimbird | 0:80725699690f | 56 | } |
mlimbird | 0:80725699690f | 57 | } |
mlimbird | 8:c64f76d4deff | 58 | |
mlimbird | 8:c64f76d4deff | 59 | |
mlimbird | 8:c64f76d4deff | 60 | /* |
mlimbird | 8:c64f76d4deff | 61 | void init_adxl345() { |
mlimbird | 8:c64f76d4deff | 62 | char data = 0; |
mlimbird | 8:c64f76d4deff | 63 | |
mlimbird | 8:c64f76d4deff | 64 | i2c_write(ADXL345_ADDRESS, ADXL_REGISTER_PWRCTL, ADXL_PWRCTL_MEASURE); |
mlimbird | 8:c64f76d4deff | 65 | |
mlimbird | 8:c64f76d4deff | 66 | i2c_read(ADXL345_ADDRESS, ADXL_REGISTER_PWRCTL, 1, &data); |
mlimbird | 8:c64f76d4deff | 67 | Serial.println((unsigned int)data); |
mlimbird | 8:c64f76d4deff | 68 | } |
mlimbird | 8:c64f76d4deff | 69 | |
mlimbird | 8:c64f76d4deff | 70 | void read_adxl345() { |
mlimbird | 8:c64f76d4deff | 71 | bytes bytes[6]; |
mlimbird | 8:c64f76d4deff | 72 | memset(bytes,0,6); |
mlimbird | 8:c64f76d4deff | 73 | |
mlimbird | 8:c64f76d4deff | 74 | i2c_read(ADXL345_ADDRESS, ADXL345_REGISTER_XLSB, 6, bytes); |
mlimbird | 8:c64f76d4deff | 75 | |
mlimbird | 8:c64f76d4deff | 76 | for (int i=0;i<3;++i) { |
mlimbird | 8:c64f76d4deff | 77 | accelerometer_data[i] = (int)bytes[2*i] + (((int)bytes[2*i + 1]) << 8); |
mlimbird | 8:c64f76d4deff | 78 | } |
mlimbird | 8:c64f76d4deff | 79 | } |
mlimbird | 8:c64f76d4deff | 80 | |
mlimbird | 8:c64f76d4deff | 81 | void init_itg3200() { |
mlimbird | 8:c64f76d4deff | 82 | byte data = 0; |
mlimbird | 8:c64f76d4deff | 83 | |
mlimbird | 8:c64f76d4deff | 84 | i2c_write(ITG3200_ADDRESS, ITG3200_REGISTER_DLPF_FS, ITG3200_FULLSCALE | ITG3200_42HZ); |
mlimbird | 8:c64f76d4deff | 85 | |
mlimbird | 8:c64f76d4deff | 86 | i2c_read(ITG3200_ADDRESS, ITG3200_REGISTER_DLPF_FS, 1, &data); |
mlimbird | 8:c64f76d4deff | 87 | |
mlimbird | 8:c64f76d4deff | 88 | Serial.println((unsigned int)data); |
mlimbird | 8:c64f76d4deff | 89 | } |
mlimbird | 8:c64f76d4deff | 90 | |
mlimbird | 8:c64f76d4deff | 91 | void read_itg3200() { |
mlimbird | 8:c64f76d4deff | 92 | bytes bytes[6]; |
mlimbird | 8:c64f76d4deff | 93 | memset(bytes,0,6); |
mlimbird | 8:c64f76d4deff | 94 | |
mlimbird | 8:c64f76d4deff | 95 | i2c_read(ITG3200_ADDRESS, ITG3200_REGISTER_XMSB, 6, bytes); |
mlimbird | 8:c64f76d4deff | 96 | for (int i=0;i<3;++i) { |
mlimbird | 8:c64f76d4deff | 97 | gyro_data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8); |
mlimbird | 8:c64f76d4deff | 98 | } |
mlimbird | 8:c64f76d4deff | 99 | } |
mlimbird | 8:c64f76d4deff | 100 | |
mlimbird | 8:c64f76d4deff | 101 | void init_hmc5843() { |
mlimbird | 8:c64f76d4deff | 102 | bytes data = 0; |
mlimbird | 8:c64f76d4deff | 103 | |
mlimbird | 8:c64f76d4deff | 104 | i2c_write(HMC5843_ADDRESS, HMC5843_REGISTER_MEASMODE, HMC5843_MEASMODE_CONT); |
mlimbird | 8:c64f76d4deff | 105 | |
mlimbird | 8:c64f76d4deff | 106 | i2c_read(HMC5843_ADDRESS, HMC5843_REGISTER_MEASMODE, 1, &data); |
mlimbird | 8:c64f76d4deff | 107 | Serial.println((unsigned int)data); |
mlimbird | 8:c64f76d4deff | 108 | } |
mlimbird | 8:c64f76d4deff | 109 | |
mlimbird | 8:c64f76d4deff | 110 | void read_hmc5843() { |
mlimbird | 8:c64f76d4deff | 111 | bytes bytes[6]; |
mlimbird | 8:c64f76d4deff | 112 | memset(bytes,0,6); |
mlimbird | 8:c64f76d4deff | 113 | |
mlimbird | 8:c64f76d4deff | 114 | i2c_read(HMC5843_ADDRESS, HMC5843_REGISTER_XMSB, 6, bytes); |
mlimbird | 8:c64f76d4deff | 115 | |
mlimbird | 8:c64f76d4deff | 116 | for (int i=0;i<3;++i) { |
mlimbird | 8:c64f76d4deff | 117 | magnetometer_data[i] = (int)bytes[2*i + 1] + (((int)bytes[2*i]) << 8); |
mlimbird | 8:c64f76d4deff | 118 | } |
mlimbird | 8:c64f76d4deff | 119 | } |
mlimbird | 8:c64f76d4deff | 120 | */ |