Motoo Tanaka
/
test_VCNL4010
test program for Vishay VCNL4010
test_VCNL4010.cpp@1:9d5785057737, 2017-04-26 (annotated)
- 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?
User | Revision | Line number | New 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 | } |