TSL2561(照度センサ)のライブラリです

Dependents:   HYBRYD2018_IZU_ROCKET Hybrid_IZU2019

TSL2561.h

Committer:
zebrin1422
Date:
2018-05-02
Revision:
1:4e7b35c8d948
Parent:
0:40ff41e6257e
Child:
2:276a177de00b

File content as of revision 1:4e7b35c8d948:

#ifndef TSL2561
#define TSL2561

#define SLV_ADDR_OPEN   0b01110010
#define SLV_ADDR_LOW    0b01110010
#define SLV_ADDR_HIGH   0b01001010

#define COMMAND         0xA0
#define CONTROL_REG     0x00


#define POWER_UP        0x03
#define POWER_DOWN      0x00
#define RAW_DATA_LOW    0x0C
#define RAW_DATA_HIGH   0x0D
#define CHECK_REG       0x0A
#define TIMING_REG      0x01;

#define ID_NUMBER       0x11
#define TIMING          0x10

class myTSL2561
{
public:

            typedef enum AD0{
                AD0_LOW  = 0,
                AD0_HIGH = 1,
                AD0_OPEN = 2
            } AD0;

            myTSL2561(I2C &i2cBus,AD0 celect = AD0_OPEN);
            
            void begin();
            /*******************************************************************
            TSL2561を起動させる関数
            データをとる前に起動させておく
            *******************************************************************/            
            int connect_check();
            /*******************************************************************
            0が返ってきたらError
            1が返ってきたらOK
            *******************************************************************/            
            float get_luminosity(unsigned int wait_time);
            /*******************************************************************
            照度(Lux)を返してくれる関数
            引数のwait_timeには下のset_rateが返してくる値を入れてください
            @example
            
            int time;
            time = myTSL2561.set_rate(0);
            pc.printf("Lux = %d\r\n",myTSL2561.get_luminosity(time));
            *******************************************************************/
            
            unsigned int set_rate(int channel);
            /*******************************************************************
            channelに入れる値によってデータの変換時間が変わる
            0:  変換時間13.7[ms]
            1: 変換時間101[ms]
            2: 変換時間402[ms]
            この時間が返ってくるので、それをget_luminosityの引数に入れる(@exampleを参照)
            *******************************************************************/
            
            
            
private:

            I2C *i2c;
            char _addr;
            char SLV_WRITE_TSL;
            char SLV_READ_TSL;
            char power_up_cmd[2];
            char power_down_cmd[2];
            char check_cmd;
            char read_cmd;
            char timing_cmd[2];

            char check_read,buff[2];
            int val[2];
            unsigned int sekigai,time;
            float lux;
            
            
};

#endif