1 #ifndef LIB_ADAFRUIT_AMG88XX_H 2 #define LIB_ADAFRUIT_AMG88XX_H 10 #include <Adafruit_I2CDevice.h> 15 #define AMG88xx_ADDRESS (0x69) 38 AMG88xx_INT_OFFSET = 0x010,
39 AMG88xx_PIXEL_OFFSET = 0x80
43 AMG88xx_NORMAL_MODE = 0x00,
44 AMG88xx_SLEEP_MODE = 0x01,
45 AMG88xx_STAND_BY_60 = 0x20,
46 AMG88xx_STAND_BY_10 = 0x21
49 enum sw_resets { AMG88xx_FLAG_RESET = 0x30, AMG88xx_INITIAL_RESET = 0x3F };
51 enum frame_rates { AMG88xx_FPS_10 = 0x00, AMG88xx_FPS_1 = 0x01 };
53 enum int_enables { AMG88xx_INT_DISABLED = 0x00, AMG88xx_INT_ENABLED = 0x01 };
55 enum int_modes { AMG88xx_DIFFERENCE = 0x00, AMG88xx_ABSOLUTE_VALUE = 0x01 };
59 #define AMG88xx_PIXEL_ARRAY_SIZE 64 60 #define AMG88xx_PIXEL_TEMP_CONVERSION .25 61 #define AMG88xx_THERMISTOR_CONVERSION .0625 75 bool begin(uint8_t addr = AMG88xx_ADDRESS, TwoWire *theWire = &Wire);
77 void readPixelsRaw(uint8_t *buf, uint8_t pixels = AMG88xx_PIXEL_ARRAY_SIZE);
78 void readPixels(
float *buf, uint8_t pixels = AMG88xx_PIXEL_ARRAY_SIZE);
96 Adafruit_I2CDevice *i2c_dev = NULL;
98 void write8(byte reg, byte value);
99 void write16(byte reg, uint16_t value);
100 uint8_t read8(byte reg);
102 void read(uint8_t reg, uint8_t *buf, uint8_t num);
103 void write(uint8_t reg, uint8_t *buf, uint8_t num);
105 float signedMag12ToFloat(uint16_t val);
106 float int12ToFloat(uint16_t val);
117 uint8_t
get() {
return PCTL; }
129 uint8_t
get() {
return RST; }
140 uint8_t
get() {
return FPS & 0x01; }
155 uint8_t
get() {
return (INTMOD << 1 | INTEN) & 0x03; }
172 return ((OVF_THS << 3) | (OVF_IRS << 2) | (INTF << 1)) & 0x0E;
190 return ((OVT_CLR << 3) | (OVS_CLR << 2) | (INTCLR << 1)) & 0x0E;
202 uint8_t
get() {
return (MAMOD << 5); }
212 uint8_t INT_LVL_H : 8;
214 uint8_t
get() {
return INT_LVL_H; }
219 uint8_t INT_LVL_H : 4;
221 uint8_t
get() {
return INT_LVL_H; }
228 uint8_t INT_LVL_L : 8;
230 uint8_t
get() {
return INT_LVL_L; }
235 uint8_t INT_LVL_L : 4;
237 uint8_t
get() {
return (INT_LVL_L & 0xF); }
246 uint8_t
get() {
return INT_HYS; }
253 uint8_t
get() {
return (INT_HYS & 0xF); }
262 uint8_t
get() {
return TEMP; }
270 uint8_t
get() {
return ((SIGN << 3) | TEMP) & 0xF; }
void getInterrupt(uint8_t *buf, uint8_t size=8)
Read the state of the triggered interrupts on the device. The full interrupt register is 8 bytes in l...
Definition: Adafruit_AMG88xx.cpp:140
void setMovingAverageMode(bool mode)
Set the moving average mode.
Definition: Adafruit_AMG88xx.cpp:50
void readPixelsRaw(uint8_t *buf, uint8_t pixels=AMG88xx_PIXEL_ARRAY_SIZE)
Read Infrared sensor raw values.
Definition: Adafruit_AMG88xx.cpp:180
void readPixels(float *buf, uint8_t pixels=AMG88xx_PIXEL_ARRAY_SIZE)
Read Infrared sensor values.
Definition: Adafruit_AMG88xx.cpp:195
void disableInterrupt()
disable the interrupt pin on the device
Definition: Adafruit_AMG88xx.cpp:114
void setInterruptLevels(float high, float low)
Set the interrupt levels. The hysteresis value defaults to .95 * high.
Definition: Adafruit_AMG88xx.cpp:63
void clearInterrupt()
Clear any triggered interrupts.
Definition: Adafruit_AMG88xx.cpp:151
Class that stores state and functions for interacting with AMG88xx IR sensor chips.
Definition: Adafruit_AMG88xx.h:69
void enableInterrupt()
enable the interrupt pin on the device.
Definition: Adafruit_AMG88xx.cpp:104
bool begin(uint8_t addr=AMG88xx_ADDRESS, TwoWire *theWire=&Wire)
Setups the I2C interface and hardware.
Definition: Adafruit_AMG88xx.cpp:17
float readThermistor()
read the onboard thermistor
Definition: Adafruit_AMG88xx.cpp:162
void setInterruptMode(uint8_t mode)
Set the interrupt to either absolute value or difference mode.
Definition: Adafruit_AMG88xx.cpp:126