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

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?

UserRevisionLine numberNew 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") ; }