Dependencies: BSP_DISCO_F746NG
main.cpp
- Committer:
- villemejane
- Date:
- 2020-01-14
- Revision:
- 5:9663124717ae
- Parent:
- 0:b045ca817e2c
File content as of revision 5:9663124717ae:
#include "mbed.h" #include "LCD_DISCO_F746NG.h" #include "IOGS_LEnsE_GUI.hpp" LCD_DISCO_F746NG lcd; Serial pc(USBTX, USBRX); /* Grid Eye on I2C */ I2C gridEye(I2C_SDA, I2C_SCL); #define AMG8833_ADR 0x68 #define AMG8833_PCTL 0x00 #define AMG8833_RST 0x01 #define AMG8833_FPSC 0x02 #define AMG8833_STAT 0x04 #define AMG8833_THERM 0x0E #define AMG8833_PIX1 0x80 #define AMG8833_NB_PIX 64 void initAMG8833(void){ char data[2] = {AMG8833_PCTL, 0}; // Normal Mode -> PCTL gridEye.write(AMG8833_ADR << 1, data, 2); } char getStatusAMG8833(void){ char data[1] = {AMG8833_STAT}; gridEye.write(AMG8833_ADR << 1, data, 1); gridEye.read(AMG8833_ADR << 1, data, 1); return data[1]; } int getThermAMG8833(void){ char data[2] = {AMG8833_THERM, 0}; gridEye.write(AMG8833_ADR << 1, data, 1); gridEye.read(AMG8833_ADR << 1, data, 2); int k = data[0] + data[1]*256; return k; } void getMatriceTempAMG8833(int *t){ char data[AMG8833_NB_PIX*2] = {0}; data[0] = AMG8833_PIX1; gridEye.write(AMG8833_ADR << 1, data, 1); gridEye.read(AMG8833_ADR << 1, data, AMG8833_NB_PIX*2); for(int i = 0; i < AMG8833_NB_PIX; i++){ t[i] = data[2*i] + data[2*i+1]*256; } } int matriceGridEye[AMG8833_NB_PIX] = {0}; void DrawMatrice(LCD_DISCO_F746NG *lcd){ int x, y, x_max, y_max; int taille_pixel = 30; x_max = 8; y_max = 8; for(y = 0; y < y_max; y++){ for(x = 0; x < x_max; x++){ uint32_t col = matriceGridEye[x + y*x_max] * 0x00000100 + 0xFF000000; lcd->SetTextColor(col); lcd->FillRect(x*taille_pixel, y*taille_pixel, taille_pixel, taille_pixel); } } } static const uint32_t image_data_test[] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FF00, 0x000000FF, 0x0000FF00, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FF00, 0x000000FF, 0x0000FF00, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FF00, 0x000000FF, 0x0000FF00, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FF00, 0x000000FF, 0x0000FF00}; const tImage my_img_test = { image_data_test, 6, 4, 32 }; /* MAIN FUNCTION */ int main() { gridEye.frequency(400000); pc.baud(115200); /* Initialisation Grid Eye */ initAMG8833(); wait_ms(10); pc.printf("STAT = %d \r\n", getStatusAMG8833()); wait_ms(10); pc.printf("STAT = %d \r\n", getThermAMG8833()); wait_ms(100); getMatriceTempAMG8833(matriceGridEye); DrawMatrice(&lcd); /* Initialisation LCD */ lcd.Clear(LCD_COLOR_BLACK); lcd.SetBackColor(LCD_COLOR_BLACK); lcd.SetTextColor(LCD_COLOR_WHITE); lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Grid EYE Sensor / I2C", CENTER_MODE); wait(1); lcd.Clear(LCD_COLOR_WHITE); lcd.SetBackColor(LCD_COLOR_WHITE); // DrawImage(my_logo, &lcd); wait(1); while(1) { getMatriceTempAMG8833(matriceGridEye); DrawMatrice(&lcd); for(int i = 1; i < 65; i++){ pc.printf("%d : %d //", i, matriceGridEye[i-1]); if(i%8 == 0) pc.printf("\r\n"); } pc.printf("\r\n"); wait(2); } }