AKM AK9752 Ultra-small IR Sensor IC with I2C I/F
AK9752.h@0:d177a32f8f36, 2017-12-27 (annotated)
- Committer:
- Rhyme
- Date:
- Wed Dec 27 06:26:33 2017 +0000
- Revision:
- 0:d177a32f8f36
First working version, no documents in place
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 0:d177a32f8f36 | 1 | /************************************* |
Rhyme | 0:d177a32f8f36 | 2 | * AK9752 |
Rhyme | 0:d177a32f8f36 | 3 | * AKM Ultra-small IR Sensor IC with I2C I/F |
Rhyme | 0:d177a32f8f36 | 4 | **/ |
Rhyme | 0:d177a32f8f36 | 5 | #ifndef _AK9752_H_ |
Rhyme | 0:d177a32f8f36 | 6 | #define _AK9752_H_ |
Rhyme | 0:d177a32f8f36 | 7 | #include "mbed.h" |
Rhyme | 0:d177a32f8f36 | 8 | |
Rhyme | 0:d177a32f8f36 | 9 | class AK9752 |
Rhyme | 0:d177a32f8f36 | 10 | { |
Rhyme | 0:d177a32f8f36 | 11 | public: |
Rhyme | 0:d177a32f8f36 | 12 | /** |
Rhyme | 0:d177a32f8f36 | 13 | * AK9752 constructor |
Rhyme | 0:d177a32f8f36 | 14 | * |
Rhyme | 0:d177a32f8f36 | 15 | * @param sda SDA pin |
Rhyme | 0:d177a32f8f36 | 16 | * @param sdl SCL pin |
Rhyme | 0:d177a32f8f36 | 17 | * @param addr addr of the I2C peripheral |
Rhyme | 0:d177a32f8f36 | 18 | */ |
Rhyme | 0:d177a32f8f36 | 19 | AK9752(PinName sda, PinName scl, int addr); |
Rhyme | 0:d177a32f8f36 | 20 | |
Rhyme | 0:d177a32f8f36 | 21 | /** |
Rhyme | 0:d177a32f8f36 | 22 | * AK9752 destructor |
Rhyme | 0:d177a32f8f36 | 23 | */ |
Rhyme | 0:d177a32f8f36 | 24 | ~AK9752(); |
Rhyme | 0:d177a32f8f36 | 25 | |
Rhyme | 0:d177a32f8f36 | 26 | uint8_t getCompanyCode(void) ; /* 0x48 expected */ |
Rhyme | 0:d177a32f8f36 | 27 | uint8_t getDeviceID(void) ; /* 0x14 expected */ |
Rhyme | 0:d177a32f8f36 | 28 | bool dataReady(void) ; /* returns ST1[0], read ST2 to clear */ |
Rhyme | 0:d177a32f8f36 | 29 | uint8_t getIntcause(void) ; /* get REG_INTCAUSE (0x05) */ |
Rhyme | 0:d177a32f8f36 | 30 | int16_t getRawIR(void) ; /* raw data, must be mulitplied by 0.4578 for pA */ |
Rhyme | 0:d177a32f8f36 | 31 | float getIR(void) ; |
Rhyme | 0:d177a32f8f36 | 32 | int16_t getRawTMP(void) ; /* raw data, must be multiplied by 0.0019837 and + 25 */ |
Rhyme | 0:d177a32f8f36 | 33 | float getTMP(void) ; |
Rhyme | 0:d177a32f8f36 | 34 | bool dataOverRun(void) ; /* check data over run and clear data ready */ |
Rhyme | 0:d177a32f8f36 | 35 | void getTHIR(int16_t *high, int16_t *low) ; |
Rhyme | 0:d177a32f8f36 | 36 | void setTHIR(int16_t high, int16_t low) ; |
Rhyme | 0:d177a32f8f36 | 37 | void getTHTMP(int16_t *high, int16_t *low) ; |
Rhyme | 0:d177a32f8f36 | 38 | void setTHTMP(int16_t high, int16_t low) ; |
Rhyme | 0:d177a32f8f36 | 39 | uint8_t getINTEN(void) ; |
Rhyme | 0:d177a32f8f36 | 40 | void setINTEN(uint8_t value) ; |
Rhyme | 0:d177a32f8f36 | 41 | uint8_t getCNTL1(void) ; |
Rhyme | 0:d177a32f8f36 | 42 | void setCNTL1(uint8_t value) ; |
Rhyme | 0:d177a32f8f36 | 43 | uint8_t getCNTL2(void) ; |
Rhyme | 0:d177a32f8f36 | 44 | void setCNTL2(uint8_t value) ; |
Rhyme | 0:d177a32f8f36 | 45 | void software_reset(void) ; |
Rhyme | 0:d177a32f8f36 | 46 | |
Rhyme | 0:d177a32f8f36 | 47 | private: |
Rhyme | 0:d177a32f8f36 | 48 | I2C m_i2c; |
Rhyme | 0:d177a32f8f36 | 49 | int m_addr; |
Rhyme | 0:d177a32f8f36 | 50 | int readRegs(int addr, uint8_t * data, int len); |
Rhyme | 0:d177a32f8f36 | 51 | int writeRegs(uint8_t * data, int len); |
Rhyme | 0:d177a32f8f36 | 52 | }; |
Rhyme | 0:d177a32f8f36 | 53 | |
Rhyme | 0:d177a32f8f36 | 54 | #endif /* _AK9752_H_ */ |