Basic functions is OK. Lack interrupts function.
Diff: AK9750.h
- Revision:
- 0:4f87d5af61b1
- Child:
- 1:4eefcf1d7351
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AK9750.h Thu Jan 26 03:08:15 2017 +0000 @@ -0,0 +1,41 @@ +#ifndef AK9750_H +#define AK9750_H + +#include "mbed.h" + + +#define AK9750_SLAVE_ADDR 0xC8 // 1100_1000b + + +class AK9750 { +public: + struct Data { + float ir1; // pA + float ir2; + float ir3; + float ir4; + float tmp; // 'C + }; + + static const uint8_t DEVICE_ID = 0x13; + + AK9750(I2C &i2c, PinName int1 = NC); + + void ConfigDevice(); + void GetDeviceID(uint8_t *id); + void GetData(Data *data); + int32_t GetTriggeredAreaNum(Data *data); + +private: + I2C &_i2c; + InterruptIn _int1; + + float ConvertAdcToIr(int16_t adc); + float ConvertAdcToTemperature(int16_t adc); + + void RegWrite(char reg, char val); + void RegRead (char reg, char *val, int len); + void RegReadModifyWrite(char reg, char clr_mask, char set_mask); +}; + +#endif \ No newline at end of file