Malexis 90640 sensor
Dependencies: mbed
main.cpp
- Committer:
- withboobs
- Date:
- 2018-03-27
- Revision:
- 0:99e98f131071
- Child:
- 1:3f763d28c1be
File content as of revision 0:99e98f131071:
#include "mbed.h" #include <MLX90640_I2C_Driver.h> #include <MLX90640_API.h> #define DEVICE_NUM 1 #define FRAMES_NUM 4 #define TA_SHIFT 8 #define BAUDRATE 115200 Serial pc(SERIAL_TX, SERIAL_RX); int main() { pc.baud(BAUDRATE); MLX90640_I2CFreqSet(1000); paramsMLX90640 mlx90640[2]; uint8_t slaveAddress[2] = {0x33,0x34}; uint16_t *pEE; uint16_t *pFrame; paramsMLX90640 *pParam; static uint16_t eeMLX90640[832]; float mlx90640Vdd; float mlx90640Ta; static uint16_t mlx90640Frame[834]; static float mlx90640To[768]; float emissivity = 1; int status = 0; int frameCnt = 0; float eTa; //Ta for emissivity compensation pParam = mlx90640; pEE = eeMLX90640; pFrame = mlx90640Frame; for(int i = 0; i < DEVICE_NUM; i++) { //status = MLX90640_SetRefreshRate(slaveAddress[i],2); //status = MLX90640_SetResolution(slaveAddress[i],0x03); //status = MLX90640_SetInterleavedMode(slaveAddress[i]); //status = MLX90640_SetChessMode(slaveAddress[i]); //printf("Reading EEPROM for MLX90640 device %d...\r",i+1); MLX90640_I2CFreqSet(400); status = MLX90640_DumpEE(slaveAddress[i], pEE); MLX90640_I2CFreqSet(400); // printf("Extracting parameters for MLX90640 device %d...\r",i+1); status = MLX90640_ExtractParameters(pEE, (pParam+i)); } while (frameCnt < FRAMES_NUM) { for(int i = 0; i < DEVICE_NUM; i++) { // printf("Reading Frame data for MLX90640 device %d... \n",i+1); status = MLX90640_GetFrameData(slaveAddress[i], pFrame); eTa = MLX90640_GetTa(pFrame,(pParam+i)) - TA_SHIFT; MLX90640_CalculateTo(pFrame, (pParam+i), emissivity, eTa, mlx90640To); MLX90640_GetImage(pFrame, (pParam+i), mlx90640To); for(int i = 0; i < 24; i++) { pc.printf("S%2d:",i); for(int j = 0; j < 32; j ++) { int16_t p = 32 * i +j; pc.printf("%06.1f;",mlx90640To[p]); } pc.printf("\n"); } //printf("Calculated To for MLX90640 device %d is ready \r",i+1); } frameCnt++; } }