test program for Vishay VCNL4010

Dependencies:   VCNL4010 mbed

Committer:
Rhyme
Date:
Wed Apr 26 09:42:58 2017 +0000
Revision:
1:9d5785057737
Parent:
0:67bba0faae48
Commit before publishing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:67bba0faae48 1 #include "mbed.h"
Rhyme 0:67bba0faae48 2 #include "MSS.h"
Rhyme 0:67bba0faae48 3 #include "VCNL4010.h"
Rhyme 0:67bba0faae48 4
Rhyme 0:67bba0faae48 5 #define VCNL4010_I2C_ADDRESS 0x13
Rhyme 0:67bba0faae48 6 #define ALS_EN 0x04
Rhyme 0:67bba0faae48 7 #define ALS_READY 0x40
Rhyme 0:67bba0faae48 8 #define PROX_EN 0x02
Rhyme 0:67bba0faae48 9 #define PROX_READY 0x20
Rhyme 0:67bba0faae48 10 #define SELFTIMED_EN 0x01
Rhyme 0:67bba0faae48 11
Rhyme 0:67bba0faae48 12 int main() {
Rhyme 0:67bba0faae48 13 uint8_t data8 ;
Rhyme 0:67bba0faae48 14 uint16_t data16 ;
Rhyme 0:67bba0faae48 15 int sample ;
Rhyme 0:67bba0faae48 16
Rhyme 0:67bba0faae48 17 VCNL4010 *vcnl4010 = new VCNL4010(PIN_SDA, PIN_SCL, VCNL4010_I2C_ADDRESS) ;
Rhyme 0:67bba0faae48 18
Rhyme 0:67bba0faae48 19 printf("=== test VCNL4010 for %s (%s) ===\n", BOARD_NAME, __DATE__) ;
Rhyme 0:67bba0faae48 20 data8 = vcnl4010->getProductID() ;
Rhyme 0:67bba0faae48 21 printf("Product ID = %d, Revision = %d\n",
Rhyme 0:67bba0faae48 22 (data8 >> 4)&0xF, data8&0xF ) ;
Rhyme 0:67bba0faae48 23 data8 = vcnl4010->getProxRate() ;
Rhyme 0:67bba0faae48 24 printf("Proximty Rate = %d\n", data8 & 0x7) ;
Rhyme 0:67bba0faae48 25 data8 = vcnl4010->getIrLedCurrent() ;
Rhyme 0:67bba0faae48 26 printf("Fuse Prog ID = %d, IR LED Current Value = %d mA\n",
Rhyme 0:67bba0faae48 27 (data8 >> 6) & 0x3, (data8 & 0x3F) * 10) ;
Rhyme 0:67bba0faae48 28 data8 = vcnl4010->getAlsParam() ;
Rhyme 0:67bba0faae48 29 printf("Continuous conversion mode: %s\n",
Rhyme 0:67bba0faae48 30 (data8 & 0x80) ? "Enabled" : "Disabled" ) ;
Rhyme 0:67bba0faae48 31
Rhyme 0:67bba0faae48 32 switch((data8 >> 4) & 0x7) {
Rhyme 0:67bba0faae48 33 case 0: sample = 1 ; break ;
Rhyme 0:67bba0faae48 34 case 1: sample = 2 ; break ;
Rhyme 0:67bba0faae48 35 case 2: sample = 3 ; break ;
Rhyme 0:67bba0faae48 36 case 3: sample = 4 ; break ;
Rhyme 0:67bba0faae48 37 case 4: sample = 5 ; break ;
Rhyme 0:67bba0faae48 38 case 5: sample = 6 ; break ;
Rhyme 0:67bba0faae48 39 case 6: sample = 8 ; break ;
Rhyme 0:67bba0faae48 40 case 7: sample = 10 ; break ;
Rhyme 0:67bba0faae48 41 }
Rhyme 0:67bba0faae48 42 printf("Ambient light measurement rate = %d samples/s\n",sample) ;
Rhyme 0:67bba0faae48 43 printf("Automatic offset compensation: %s\n",
Rhyme 0:67bba0faae48 44 (data8 & 0x2) ? "Enabled" : "Disabled" ) ;
Rhyme 0:67bba0faae48 45 printf("Averaging function: %d\n", 0x01 << (data8 & 0x7)) ;
Rhyme 0:67bba0faae48 46 vcnl4010->setCommandReg( ALS_EN | PROX_EN | SELFTIMED_EN ) ;
Rhyme 0:67bba0faae48 47 while(1) {
Rhyme 0:67bba0faae48 48 data8 = vcnl4010->getCommandReg() ;
Rhyme 0:67bba0faae48 49 if (data8 & ALS_READY) {
Rhyme 0:67bba0faae48 50 data16 = vcnl4010->getAls() ;
Rhyme 0:67bba0faae48 51 printf("Ambient Light Result = %d\n", data16) ;
Rhyme 0:67bba0faae48 52 }
Rhyme 0:67bba0faae48 53 if (data8 & PROX_READY) {
Rhyme 0:67bba0faae48 54 data16 = vcnl4010->getProx() ;
Rhyme 0:67bba0faae48 55 printf("Proximity Measurement Result = %d\n", data16) ;
Rhyme 0:67bba0faae48 56 }
Rhyme 0:67bba0faae48 57 wait(1) ;
Rhyme 0:67bba0faae48 58 }
Rhyme 0:67bba0faae48 59 }