I2C sensor test program, derived from testI2C program. Simple test for FXOS8700CQ, HIH6130, MAG3110, MMA8451Q, MMA8452Q, MPL3115A2, MAX44000, MAX44005, MAX44008, MAX30101 included beside simple I2C read/write from testI2C.
Dependencies: FXOS8700CQ HIH6130 IS31SE5000 MAG3110 MAX44000 MAX44005 MAX44008 MMA8451Q MMA8452Q MPL3115A2 VEML6040 VEML6075 mbed vt100 LM75B FXAS21002 MAX30101 VCNL4020 VCNL4100
MSU.cpp@0:d4bbd473a83c, 2016-04-26 (annotated)
- Committer:
- Rhyme
- Date:
- Tue Apr 26 02:38:14 2016 +0000
- Revision:
- 0:d4bbd473a83c
- Child:
- 1:9450e20cf688
Implementing sensor tests, up to FXOS8700CQ added.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 0:d4bbd473a83c | 1 | #include "mbed.h" |
Rhyme | 0:d4bbd473a83c | 2 | #include "vt100.h" |
Rhyme | 0:d4bbd473a83c | 3 | #include "MSS.h" |
Rhyme | 0:d4bbd473a83c | 4 | #include "MSU.h" |
Rhyme | 0:d4bbd473a83c | 5 | #include "MMA8451Q.h" |
Rhyme | 0:d4bbd473a83c | 6 | #include "MMA8452Q.h" |
Rhyme | 0:d4bbd473a83c | 7 | #include "MAG3110.h" |
Rhyme | 0:d4bbd473a83c | 8 | #include "HIH6130.h" |
Rhyme | 0:d4bbd473a83c | 9 | #include "FXOS8700CQ.h" |
Rhyme | 0:d4bbd473a83c | 10 | #include "MAX44000.h" |
Rhyme | 0:d4bbd473a83c | 11 | #include "MAX44005.h" |
Rhyme | 0:d4bbd473a83c | 12 | #include "MAX44008.h" |
Rhyme | 0:d4bbd473a83c | 13 | #include "MPL3115A2.h" |
Rhyme | 0:d4bbd473a83c | 14 | #include "VEML6040.h" |
Rhyme | 0:d4bbd473a83c | 15 | #include "VEML6075.h" |
Rhyme | 0:d4bbd473a83c | 16 | |
Rhyme | 0:d4bbd473a83c | 17 | |
Rhyme | 0:d4bbd473a83c | 18 | extern int test_loop ; |
Rhyme | 0:d4bbd473a83c | 19 | |
Rhyme | 0:d4bbd473a83c | 20 | extern vt100 *tty ; |
Rhyme | 0:d4bbd473a83c | 21 | |
Rhyme | 0:d4bbd473a83c | 22 | i2c_sensor_type i2c_sensor[] = { |
Rhyme | 0:d4bbd473a83c | 23 | {MSU_MMA8451Q_ADDRESS, "MMA8451Q", testMMA8451Q}, |
Rhyme | 0:d4bbd473a83c | 24 | {MSU_MMA8452Q_ADDRESS, "MMA8452Q", testMMA8452Q}, |
Rhyme | 0:d4bbd473a83c | 25 | {MSU_MAG3110_ADDRESS, "MAG3110", testMAG3110}, |
Rhyme | 0:d4bbd473a83c | 26 | {MSU_HIH6130_ADDRESS, "HIH6130", testHIH6130}, |
Rhyme | 0:d4bbd473a83c | 27 | {MSU_FXOS8700CQ_ADDRESS, "FXOS8700CQ", testFXOS8700CQ}, |
Rhyme | 0:d4bbd473a83c | 28 | {MSU_MAX44000_ADDRESS, "MAX44000", testMAX44000}, |
Rhyme | 0:d4bbd473a83c | 29 | {MSU_MAX44005_ADDRESS, "MAX44005", testMAX44005}, |
Rhyme | 0:d4bbd473a83c | 30 | {MSU_MAX44008_ADDRESS, "MAX44008", testMAX44008}, |
Rhyme | 0:d4bbd473a83c | 31 | {MSU_MAX30101_ADDRESS, "MAX30101", testMAX30101}, |
Rhyme | 0:d4bbd473a83c | 32 | {MSU_MPL3115A2_ADDRESS, "MPL3115A2", testMPL3115A2}, |
Rhyme | 0:d4bbd473a83c | 33 | {MSU_IS31SE5000_ADDRESS, "IS31SE5000", testIS31SE5000}, |
Rhyme | 0:d4bbd473a83c | 34 | {MSU_VEML6040A_ADDRESS, "VEML6040A", testVEML6040A}, |
Rhyme | 0:d4bbd473a83c | 35 | {MSU_VEML6075A_ADDRESS, "VEML6075A", testVEML6075A}, |
Rhyme | 0:d4bbd473a83c | 36 | {0x00, 0, 0} |
Rhyme | 0:d4bbd473a83c | 37 | } ; |
Rhyme | 0:d4bbd473a83c | 38 | |
Rhyme | 0:d4bbd473a83c | 39 | void testMMA8451Q(void) |
Rhyme | 0:d4bbd473a83c | 40 | { |
Rhyme | 0:d4bbd473a83c | 41 | uint16_t ix, iy, iz ; |
Rhyme | 0:d4bbd473a83c | 42 | float fx, fy, fz ; |
Rhyme | 0:d4bbd473a83c | 43 | |
Rhyme | 0:d4bbd473a83c | 44 | printf("test MMA8451Q\n") ; |
Rhyme | 0:d4bbd473a83c | 45 | MMA8451Q *acc = new MMA8451Q(PIN_SDA, PIN_SCL, MSU_MMA8451Q_ADDRESS) ; |
Rhyme | 0:d4bbd473a83c | 46 | for(int i = 0 ; i < test_loop ; i++) { |
Rhyme | 0:d4bbd473a83c | 47 | ix = acc->getRawX() ; |
Rhyme | 0:d4bbd473a83c | 48 | iy = acc->getRawY() ; |
Rhyme | 0:d4bbd473a83c | 49 | iz = acc->getRawZ() ; |
Rhyme | 0:d4bbd473a83c | 50 | fx = acc->getAccX() ; |
Rhyme | 0:d4bbd473a83c | 51 | fy = acc->getAccY() ; |
Rhyme | 0:d4bbd473a83c | 52 | fz = acc->getAccZ() ; |
Rhyme | 0:d4bbd473a83c | 53 | printf("X = %d [ %.2f ], Y = %d [ %.2f ], Z = %d [ %.2f ]\n", |
Rhyme | 0:d4bbd473a83c | 54 | ix, fx, iy, fy, iz, fz ) ; |
Rhyme | 0:d4bbd473a83c | 55 | wait(0.2) ; |
Rhyme | 0:d4bbd473a83c | 56 | } |
Rhyme | 0:d4bbd473a83c | 57 | delete acc ; |
Rhyme | 0:d4bbd473a83c | 58 | } |
Rhyme | 0:d4bbd473a83c | 59 | |
Rhyme | 0:d4bbd473a83c | 60 | void testMMA8452Q(void) |
Rhyme | 0:d4bbd473a83c | 61 | { |
Rhyme | 0:d4bbd473a83c | 62 | float x, y, z ; |
Rhyme | 0:d4bbd473a83c | 63 | printf("test MMA8452Q\n") ; |
Rhyme | 0:d4bbd473a83c | 64 | MMA8452Q *acc = new MMA8452Q(PIN_SDA, PIN_SCL, MSU_MMA8452Q_ADDRESS) ; |
Rhyme | 0:d4bbd473a83c | 65 | for(int i = 0 ; i < test_loop ; i++) { |
Rhyme | 0:d4bbd473a83c | 66 | x = acc->getAccX() ; |
Rhyme | 0:d4bbd473a83c | 67 | y = acc->getAccY() ; |
Rhyme | 0:d4bbd473a83c | 68 | z = acc->getAccZ() ; |
Rhyme | 0:d4bbd473a83c | 69 | printf("X[%.2f] Y[%.2f] Z[%.2f]\n",x, y, z) ; |
Rhyme | 0:d4bbd473a83c | 70 | wait(0.1); |
Rhyme | 0:d4bbd473a83c | 71 | } |
Rhyme | 0:d4bbd473a83c | 72 | delete acc ; |
Rhyme | 0:d4bbd473a83c | 73 | } |
Rhyme | 0:d4bbd473a83c | 74 | |
Rhyme | 0:d4bbd473a83c | 75 | void testMAG3110(void) |
Rhyme | 0:d4bbd473a83c | 76 | { |
Rhyme | 0:d4bbd473a83c | 77 | uint8_t status = 0 ; |
Rhyme | 0:d4bbd473a83c | 78 | int16_t mX, mY, mZ ; |
Rhyme | 0:d4bbd473a83c | 79 | float fx, fy, fz ; |
Rhyme | 0:d4bbd473a83c | 80 | int x = 10 ; |
Rhyme | 0:d4bbd473a83c | 81 | int y = 5 ; |
Rhyme | 0:d4bbd473a83c | 82 | MAG3110 *mag = new MAG3110(PIN_SDA, PIN_SCL, MSU_MAG3110_ADDRESS) ; |
Rhyme | 0:d4bbd473a83c | 83 | mag->activate() ; |
Rhyme | 0:d4bbd473a83c | 84 | tty->cls() ; |
Rhyme | 0:d4bbd473a83c | 85 | printf("test MAG3110\n") ; |
Rhyme | 0:d4bbd473a83c | 86 | for (int i = 0 ; i < test_loop ; i++) { |
Rhyme | 0:d4bbd473a83c | 87 | wait(0.01) ; |
Rhyme | 0:d4bbd473a83c | 88 | status = mag->getStatus() ; |
Rhyme | 0:d4bbd473a83c | 89 | while((status & 0x80) == 0) { // wait for ZYXOW |
Rhyme | 0:d4bbd473a83c | 90 | wait(0.01) ; |
Rhyme | 0:d4bbd473a83c | 91 | status = mag->getStatus() ; |
Rhyme | 0:d4bbd473a83c | 92 | } |
Rhyme | 0:d4bbd473a83c | 93 | |
Rhyme | 0:d4bbd473a83c | 94 | tty->locate(x+5, y) ; |
Rhyme | 0:d4bbd473a83c | 95 | printf("--- MAG3110 ---") ; |
Rhyme | 0:d4bbd473a83c | 96 | tty->locate(x, y+4) ; |
Rhyme | 0:d4bbd473a83c | 97 | printf("Temperature: %02X",mag->getTemp()) ; |
Rhyme | 0:d4bbd473a83c | 98 | tty->locate(x, y+5) ; |
Rhyme | 0:d4bbd473a83c | 99 | printf("status: 0x%02X",mag->getStatus()) ; |
Rhyme | 0:d4bbd473a83c | 100 | tty->locate(x, y+6) ; |
Rhyme | 0:d4bbd473a83c | 101 | printf("ctrl reg1: 0x%02X ", mag->getCtrlReg1()) ; |
Rhyme | 0:d4bbd473a83c | 102 | printf("reg2: 0x%02X", mag->getCtrlReg2()) ; |
Rhyme | 0:d4bbd473a83c | 103 | mX = mag->getX() ; // here reset takes place! |
Rhyme | 0:d4bbd473a83c | 104 | mY = mag->getY() ; |
Rhyme | 0:d4bbd473a83c | 105 | mZ = mag->getZ() ; |
Rhyme | 0:d4bbd473a83c | 106 | fx = 10000 * (float)mX / (float)0x7FFF ; |
Rhyme | 0:d4bbd473a83c | 107 | fy = 10000 * (float)mY / (float)0x7FFF ; |
Rhyme | 0:d4bbd473a83c | 108 | fz = 10000 * (float)mZ / (float)0x7FFF ; |
Rhyme | 0:d4bbd473a83c | 109 | tty->locate(x, y+1) ; |
Rhyme | 0:d4bbd473a83c | 110 | printf("X : ") ; |
Rhyme | 0:d4bbd473a83c | 111 | if (fx >= 0) { printf(" ") ; } |
Rhyme | 0:d4bbd473a83c | 112 | printf("%.2f uT : 0x%08X ", fx, mX) ; |
Rhyme | 0:d4bbd473a83c | 113 | |
Rhyme | 0:d4bbd473a83c | 114 | tty->locate(x, y+2) ; |
Rhyme | 0:d4bbd473a83c | 115 | printf("Y : ") ; |
Rhyme | 0:d4bbd473a83c | 116 | if (fy >= 0) { printf(" ") ; } |
Rhyme | 0:d4bbd473a83c | 117 | printf("%.2f uT : 0x%08X ", fy, mY) ; |
Rhyme | 0:d4bbd473a83c | 118 | |
Rhyme | 0:d4bbd473a83c | 119 | tty->locate(x, y+3) ; |
Rhyme | 0:d4bbd473a83c | 120 | printf("Z : ") ; |
Rhyme | 0:d4bbd473a83c | 121 | if (fz >= 0) { printf(" ") ; } |
Rhyme | 0:d4bbd473a83c | 122 | printf("%.2f uT : 0x%08X ", fz, mZ) ; |
Rhyme | 0:d4bbd473a83c | 123 | } |
Rhyme | 0:d4bbd473a83c | 124 | tty->locate(0, 20) ; |
Rhyme | 0:d4bbd473a83c | 125 | mag->standby() ; |
Rhyme | 0:d4bbd473a83c | 126 | delete mag ; |
Rhyme | 0:d4bbd473a83c | 127 | } |
Rhyme | 0:d4bbd473a83c | 128 | |
Rhyme | 0:d4bbd473a83c | 129 | void testHIH6130(void) |
Rhyme | 0:d4bbd473a83c | 130 | { |
Rhyme | 0:d4bbd473a83c | 131 | uint16_t result = 0 ; |
Rhyme | 0:d4bbd473a83c | 132 | float humidity = 0 ; |
Rhyme | 0:d4bbd473a83c | 133 | float temperature = 0 ; |
Rhyme | 0:d4bbd473a83c | 134 | HIH6130 *hih = new HIH6130(PIN_SDA, PIN_SCL, MSU_HIH6130_ADDRESS) ; |
Rhyme | 0:d4bbd473a83c | 135 | printf("test HIH6130\n") ; |
Rhyme | 0:d4bbd473a83c | 136 | for (int i = 0 ; i < test_loop ; i++) { |
Rhyme | 0:d4bbd473a83c | 137 | result = hih->getValue(&humidity, &temperature) ; |
Rhyme | 0:d4bbd473a83c | 138 | printf("Temp %.1f C Humidity %.1f %%\n", temperature, humidity) ; |
Rhyme | 0:d4bbd473a83c | 139 | wait(1) ; |
Rhyme | 0:d4bbd473a83c | 140 | } |
Rhyme | 0:d4bbd473a83c | 141 | } |
Rhyme | 0:d4bbd473a83c | 142 | |
Rhyme | 0:d4bbd473a83c | 143 | void testFXOS8700CQ(void) |
Rhyme | 0:d4bbd473a83c | 144 | { |
Rhyme | 0:d4bbd473a83c | 145 | int16_t accData[3], mgnData[3] ; |
Rhyme | 0:d4bbd473a83c | 146 | |
Rhyme | 0:d4bbd473a83c | 147 | printf("test FXOS8700CQ\n") ; |
Rhyme | 0:d4bbd473a83c | 148 | FXOS8700CQ *fxos = new FXOS8700CQ(PIN_SDA, PIN_SCL, MSU_FXOS8700CQ_ADDRESS) ; |
Rhyme | 0:d4bbd473a83c | 149 | fxos->init() ; |
Rhyme | 0:d4bbd473a83c | 150 | |
Rhyme | 0:d4bbd473a83c | 151 | for (int i = 0 ; i < test_loop ; i++) { |
Rhyme | 0:d4bbd473a83c | 152 | fxos->readAccMgnData(accData, mgnData) ; |
Rhyme | 0:d4bbd473a83c | 153 | printf("ACC X[%d], Y[%d], Z[%d], MGN X[%d], Y[%d], Z[%d]\n", |
Rhyme | 0:d4bbd473a83c | 154 | accData[0], accData[1], accData[2], |
Rhyme | 0:d4bbd473a83c | 155 | mgnData[0], mgnData[1], mgnData[2]) ; |
Rhyme | 0:d4bbd473a83c | 156 | wait(0.2) ; |
Rhyme | 0:d4bbd473a83c | 157 | } |
Rhyme | 0:d4bbd473a83c | 158 | delete fxos ; |
Rhyme | 0:d4bbd473a83c | 159 | } |
Rhyme | 0:d4bbd473a83c | 160 | |
Rhyme | 0:d4bbd473a83c | 161 | void testMAX44000(void) {printf("test MAX44000\n") ; } |
Rhyme | 0:d4bbd473a83c | 162 | void testMAX44005(void) {printf("test MAX44005\n") ; } |
Rhyme | 0:d4bbd473a83c | 163 | void testMAX44008(void) {printf("test MAX44008\n") ; } |
Rhyme | 0:d4bbd473a83c | 164 | void testMAX30101(void) {printf("test MAX30101\n") ; } |
Rhyme | 0:d4bbd473a83c | 165 | void testMPL3115A2(void) {printf("test MPL3115A2\n") ; } |
Rhyme | 0:d4bbd473a83c | 166 | void testIS31SE5000(void) {printf("test ISI31SE5000\n") ; } |
Rhyme | 0:d4bbd473a83c | 167 | void testVEML6040A(void) {printf("test VEML6040A\n") ; } |
Rhyme | 0:d4bbd473a83c | 168 | void testVEML6075A(void) {printf("test VEML6075A\n") ; } |