TSL2561(照度センサ)のライブラリです
Dependents: HYBRYD2018_IZU_ROCKET Hybrid_IZU2019
TSL2561.cpp@0:40ff41e6257e, 2017-11-16 (annotated)
- Committer:
- zebrin1422
- Date:
- Thu Nov 16 08:23:57 2017 +0000
- Revision:
- 0:40ff41e6257e
- Child:
- 1:4e7b35c8d948
TSL2561_Library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zebrin1422 | 0:40ff41e6257e | 1 | #include "mbed.h" |
zebrin1422 | 0:40ff41e6257e | 2 | #include "TSL2561.h" |
zebrin1422 | 0:40ff41e6257e | 3 | |
zebrin1422 | 0:40ff41e6257e | 4 | Serial DEBUG(USBTX,USBRX); |
zebrin1422 | 0:40ff41e6257e | 5 | |
zebrin1422 | 0:40ff41e6257e | 6 | myTSL2561::myTSL2561(I2C &i2cBus) |
zebrin1422 | 0:40ff41e6257e | 7 | { |
zebrin1422 | 0:40ff41e6257e | 8 | i2c = &i2cBus; |
zebrin1422 | 0:40ff41e6257e | 9 | i2c->frequency(400000); |
zebrin1422 | 0:40ff41e6257e | 10 | } |
zebrin1422 | 0:40ff41e6257e | 11 | |
zebrin1422 | 0:40ff41e6257e | 12 | |
zebrin1422 | 0:40ff41e6257e | 13 | void myTSL2561::begin() |
zebrin1422 | 0:40ff41e6257e | 14 | { |
zebrin1422 | 0:40ff41e6257e | 15 | power_up_cmd[0] = COMMAND | CONTROL_REG; |
zebrin1422 | 0:40ff41e6257e | 16 | power_up_cmd[1] = POWER_UP; |
zebrin1422 | 0:40ff41e6257e | 17 | |
zebrin1422 | 0:40ff41e6257e | 18 | i2c->write(SLV_WRITE, power_up_cmd, 2); |
zebrin1422 | 0:40ff41e6257e | 19 | |
zebrin1422 | 0:40ff41e6257e | 20 | read_cmd = COMMAND | CHECK_REG; |
zebrin1422 | 0:40ff41e6257e | 21 | |
zebrin1422 | 0:40ff41e6257e | 22 | i2c->write(SLV_WRITE, &read_cmd, 1); |
zebrin1422 | 0:40ff41e6257e | 23 | i2c->read(SLV_READ, &check_read, 1); |
zebrin1422 | 0:40ff41e6257e | 24 | |
zebrin1422 | 0:40ff41e6257e | 25 | } |
zebrin1422 | 0:40ff41e6257e | 26 | |
zebrin1422 | 0:40ff41e6257e | 27 | int myTSL2561::connect_check() |
zebrin1422 | 0:40ff41e6257e | 28 | { |
zebrin1422 | 0:40ff41e6257e | 29 | check_cmd = COMMAND | CHECK_REG; |
zebrin1422 | 0:40ff41e6257e | 30 | |
zebrin1422 | 0:40ff41e6257e | 31 | i2c->write(SLV_WRITE, &check_cmd, 1); |
zebrin1422 | 0:40ff41e6257e | 32 | i2c->read(SLV_READ, &check_read, 1); |
zebrin1422 | 0:40ff41e6257e | 33 | |
zebrin1422 | 0:40ff41e6257e | 34 | DEBUG.printf("CHECK_REG read = %x\r\n",check_read); |
zebrin1422 | 0:40ff41e6257e | 35 | |
zebrin1422 | 0:40ff41e6257e | 36 | if(check_read == ID_NUMBER){ return 1;} |
zebrin1422 | 0:40ff41e6257e | 37 | else{ return 0;} |
zebrin1422 | 0:40ff41e6257e | 38 | } |
zebrin1422 | 0:40ff41e6257e | 39 | |
zebrin1422 | 0:40ff41e6257e | 40 | unsigned int myTSL2561::get_luminosity(unsigned int wait_time) |
zebrin1422 | 0:40ff41e6257e | 41 | { |
zebrin1422 | 0:40ff41e6257e | 42 | read_cmd = COMMAND | RAW_DATA_LOW; |
zebrin1422 | 0:40ff41e6257e | 43 | |
zebrin1422 | 0:40ff41e6257e | 44 | i2c->write(SLV_WRITE, &read_cmd, 1); |
zebrin1422 | 0:40ff41e6257e | 45 | wait_ms(wait_time); |
zebrin1422 | 0:40ff41e6257e | 46 | i2c->read(SLV_READ, buff, 2); |
zebrin1422 | 0:40ff41e6257e | 47 | |
zebrin1422 | 0:40ff41e6257e | 48 | val[0] = (int)buff[0]; |
zebrin1422 | 0:40ff41e6257e | 49 | val[1] = (int)buff[1] << 8; |
zebrin1422 | 0:40ff41e6257e | 50 | |
zebrin1422 | 0:40ff41e6257e | 51 | lux = (unsigned int)(val[1] | val[0]); |
zebrin1422 | 0:40ff41e6257e | 52 | |
zebrin1422 | 0:40ff41e6257e | 53 | return lux; |
zebrin1422 | 0:40ff41e6257e | 54 | } |
zebrin1422 | 0:40ff41e6257e | 55 | |
zebrin1422 | 0:40ff41e6257e | 56 | unsigned int myTSL2561::set_rate(int channel) |
zebrin1422 | 0:40ff41e6257e | 57 | { |
zebrin1422 | 0:40ff41e6257e | 58 | timing_cmd[0] = COMMAND | TIMING_REG; |
zebrin1422 | 0:40ff41e6257e | 59 | |
zebrin1422 | 0:40ff41e6257e | 60 | if(channel == 0){ |
zebrin1422 | 0:40ff41e6257e | 61 | time = 14; |
zebrin1422 | 0:40ff41e6257e | 62 | timing_cmd[1] = TIMING | 0x00; |
zebrin1422 | 0:40ff41e6257e | 63 | i2c->write(SLV_WRITE, timing_cmd, 2); |
zebrin1422 | 0:40ff41e6257e | 64 | } |
zebrin1422 | 0:40ff41e6257e | 65 | else if(channel == 1){ |
zebrin1422 | 0:40ff41e6257e | 66 | time = 105; |
zebrin1422 | 0:40ff41e6257e | 67 | timing_cmd[1] = TIMING | 0x01; |
zebrin1422 | 0:40ff41e6257e | 68 | i2c->write(SLV_WRITE, timing_cmd, 2); |
zebrin1422 | 0:40ff41e6257e | 69 | } |
zebrin1422 | 0:40ff41e6257e | 70 | else if(channel == 2){ |
zebrin1422 | 0:40ff41e6257e | 71 | time = 405; |
zebrin1422 | 0:40ff41e6257e | 72 | timing_cmd[1] = TIMING | 0x02; |
zebrin1422 | 0:40ff41e6257e | 73 | i2c->write(SLV_WRITE, timing_cmd, 2); |
zebrin1422 | 0:40ff41e6257e | 74 | } |
zebrin1422 | 0:40ff41e6257e | 75 | |
zebrin1422 | 0:40ff41e6257e | 76 | return time; |
zebrin1422 | 0:40ff41e6257e | 77 | } |
zebrin1422 | 0:40ff41e6257e | 78 | |
zebrin1422 | 0:40ff41e6257e | 79 | |
zebrin1422 | 0:40ff41e6257e | 80 |