Malexis 90640 sensor
Dependencies: mbed
main.cpp
- Committer:
- withboobs
- Date:
- 2018-04-19
- Revision:
- 1:3f763d28c1be
- Parent:
- 0:99e98f131071
- Child:
- 2:44869d695501
File content as of revision 1:3f763d28c1be:
#include "mbed.h" #include <MLX90640_I2C_Driver.h> #include <MLX90640_API.h> #define FRAMES_NUM 15 #define TA_SHIFT 8 Timer timer; Serial pc(USBTX, USBRX); // tx, rx, Virtual serial port over USB void PrintEEPROM(uint16_t *p); void PrintRawData(uint16_t *p); void PrintToF(float *p); void PrintToU(float *p); DigitalOut led_green(LED2); int main() { MLX90640_I2CFreqSet(1000); pc.baud(230400); paramsMLX90640 mlx90640; uint8_t slaveAddress = 0x33; uint16_t *pEE; uint16_t *pFrame; 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 pEE = eeMLX90640; pFrame = mlx90640Frame; status = MLX90640_SetRefreshRate(slaveAddress,1); //status = MLX90640_SetResolution(slaveAddress[i],0x03); //status = MLX90640_SetInterleavedMode(slaveAddress[i]); status = MLX90640_SetChessMode(slaveAddress); //printf("Reading EEPROM for MLX90640 device %d...\r\n",i+1); MLX90640_I2CFreqSet(400); status = MLX90640_DumpEE(slaveAddress, pEE); MLX90640_I2CFreqSet(1000); //printf("Extracting parameters for MLX90640 device %d...\r\n",i+1); status = MLX90640_ExtractParameters(pEE, &mlx90640 ); while (1) { led_green = 1; // turn on LED until initialization is complete status = MLX90640_GetFrameData(slaveAddress, pFrame); led_green = 0; // turn on LED until initialization is complete eTa = MLX90640_GetTa(pFrame, &mlx90640) - TA_SHIFT; MLX90640_CalculateTo(pFrame, &mlx90640, emissivity, eTa, mlx90640To); PrintToU(mlx90640To); } } void PrintToU(float *p) { uint16_t d; pc.printf("S",d); for(int i=0; i<768; i++) { d = 10 * *p++; pc.printf("%04x",d); } pc.printf("E\n"); } void PrintToF(float *p) { for(int i=0; i<768; i++) { pc.printf("%0.3f,",*p++); } pc.printf("\n"); } void PrintRawData(uint16_t *p) { for(int i=0; i<832; i++) { pc.printf("%04X,",*p++); } pc.printf("\r\n"); }