Dependencies:   BSP_DISCO_F746NG

Committer:
villemejane
Date:
Tue Jan 14 09:07:37 2020 +0000
Revision:
5:9663124717ae
Parent:
0:b045ca817e2c
LEnsE - IHM for Disco-F746NG

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:b045ca817e2c 1 #include "mbed.h"
bcostm 0:b045ca817e2c 2 #include "LCD_DISCO_F746NG.h"
villemejane 5:9663124717ae 3 #include "IOGS_LEnsE_GUI.hpp"
bcostm 0:b045ca817e2c 4
bcostm 0:b045ca817e2c 5 LCD_DISCO_F746NG lcd;
bcostm 0:b045ca817e2c 6
villemejane 5:9663124717ae 7 Serial pc(USBTX, USBRX);
villemejane 5:9663124717ae 8
villemejane 5:9663124717ae 9 /* Grid Eye on I2C */
villemejane 5:9663124717ae 10 I2C gridEye(I2C_SDA, I2C_SCL);
villemejane 5:9663124717ae 11
villemejane 5:9663124717ae 12 #define AMG8833_ADR 0x68
villemejane 5:9663124717ae 13 #define AMG8833_PCTL 0x00
villemejane 5:9663124717ae 14 #define AMG8833_RST 0x01
villemejane 5:9663124717ae 15 #define AMG8833_FPSC 0x02
villemejane 5:9663124717ae 16 #define AMG8833_STAT 0x04
villemejane 5:9663124717ae 17 #define AMG8833_THERM 0x0E
villemejane 5:9663124717ae 18 #define AMG8833_PIX1 0x80
villemejane 5:9663124717ae 19 #define AMG8833_NB_PIX 64
bcostm 0:b045ca817e2c 20
villemejane 5:9663124717ae 21 void initAMG8833(void){
villemejane 5:9663124717ae 22 char data[2] = {AMG8833_PCTL, 0}; // Normal Mode -> PCTL
villemejane 5:9663124717ae 23 gridEye.write(AMG8833_ADR << 1, data, 2);
villemejane 5:9663124717ae 24 }
villemejane 5:9663124717ae 25 char getStatusAMG8833(void){
villemejane 5:9663124717ae 26 char data[1] = {AMG8833_STAT};
villemejane 5:9663124717ae 27 gridEye.write(AMG8833_ADR << 1, data, 1);
villemejane 5:9663124717ae 28 gridEye.read(AMG8833_ADR << 1, data, 1);
villemejane 5:9663124717ae 29 return data[1];
villemejane 5:9663124717ae 30 }
villemejane 5:9663124717ae 31 int getThermAMG8833(void){
villemejane 5:9663124717ae 32 char data[2] = {AMG8833_THERM, 0};
villemejane 5:9663124717ae 33 gridEye.write(AMG8833_ADR << 1, data, 1);
villemejane 5:9663124717ae 34 gridEye.read(AMG8833_ADR << 1, data, 2);
villemejane 5:9663124717ae 35 int k = data[0] + data[1]*256;
villemejane 5:9663124717ae 36 return k;
villemejane 5:9663124717ae 37 }
villemejane 5:9663124717ae 38 void getMatriceTempAMG8833(int *t){
villemejane 5:9663124717ae 39 char data[AMG8833_NB_PIX*2] = {0};
villemejane 5:9663124717ae 40 data[0] = AMG8833_PIX1;
villemejane 5:9663124717ae 41 gridEye.write(AMG8833_ADR << 1, data, 1);
villemejane 5:9663124717ae 42 gridEye.read(AMG8833_ADR << 1, data, AMG8833_NB_PIX*2);
villemejane 5:9663124717ae 43 for(int i = 0; i < AMG8833_NB_PIX; i++){
villemejane 5:9663124717ae 44 t[i] = data[2*i] + data[2*i+1]*256;
villemejane 5:9663124717ae 45 }
villemejane 5:9663124717ae 46 }
villemejane 5:9663124717ae 47
villemejane 5:9663124717ae 48 int matriceGridEye[AMG8833_NB_PIX] = {0};
villemejane 5:9663124717ae 49
villemejane 5:9663124717ae 50 void DrawMatrice(LCD_DISCO_F746NG *lcd){
villemejane 5:9663124717ae 51 int x, y, x_max, y_max;
villemejane 5:9663124717ae 52 int taille_pixel = 30;
villemejane 5:9663124717ae 53 x_max = 8;
villemejane 5:9663124717ae 54 y_max = 8;
villemejane 5:9663124717ae 55 for(y = 0; y < y_max; y++){
villemejane 5:9663124717ae 56 for(x = 0; x < x_max; x++){
villemejane 5:9663124717ae 57 uint32_t col = matriceGridEye[x + y*x_max] * 0x00000100 + 0xFF000000;
villemejane 5:9663124717ae 58 lcd->SetTextColor(col);
villemejane 5:9663124717ae 59 lcd->FillRect(x*taille_pixel, y*taille_pixel, taille_pixel, taille_pixel);
villemejane 5:9663124717ae 60 }
villemejane 5:9663124717ae 61 }
villemejane 5:9663124717ae 62 }
villemejane 5:9663124717ae 63
villemejane 5:9663124717ae 64 static const uint32_t image_data_test[] = {
villemejane 5:9663124717ae 65 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FF00, 0x000000FF, 0x0000FF00,
villemejane 5:9663124717ae 66 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FF00, 0x000000FF, 0x0000FF00,
villemejane 5:9663124717ae 67 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FF00, 0x000000FF, 0x0000FF00,
villemejane 5:9663124717ae 68 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FF00, 0x000000FF, 0x0000FF00};
villemejane 5:9663124717ae 69 const tImage my_img_test = { image_data_test, 6, 4, 32 };
villemejane 5:9663124717ae 70
villemejane 5:9663124717ae 71 /* MAIN FUNCTION */
bcostm 0:b045ca817e2c 72 int main()
villemejane 5:9663124717ae 73 {
villemejane 5:9663124717ae 74 gridEye.frequency(400000);
villemejane 5:9663124717ae 75 pc.baud(115200);
villemejane 5:9663124717ae 76 /* Initialisation Grid Eye */
villemejane 5:9663124717ae 77 initAMG8833();
villemejane 5:9663124717ae 78 wait_ms(10);
villemejane 5:9663124717ae 79 pc.printf("STAT = %d \r\n", getStatusAMG8833());
villemejane 5:9663124717ae 80 wait_ms(10);
villemejane 5:9663124717ae 81 pc.printf("STAT = %d \r\n", getThermAMG8833());
villemejane 5:9663124717ae 82 wait_ms(100);
villemejane 5:9663124717ae 83 getMatriceTempAMG8833(matriceGridEye);
villemejane 5:9663124717ae 84 DrawMatrice(&lcd);
villemejane 5:9663124717ae 85
villemejane 5:9663124717ae 86 /* Initialisation LCD */
villemejane 5:9663124717ae 87 lcd.Clear(LCD_COLOR_BLACK);
villemejane 5:9663124717ae 88 lcd.SetBackColor(LCD_COLOR_BLACK);
villemejane 5:9663124717ae 89 lcd.SetTextColor(LCD_COLOR_WHITE);
bcostm 0:b045ca817e2c 90
villemejane 5:9663124717ae 91 lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Grid EYE Sensor / I2C", CENTER_MODE);
bcostm 0:b045ca817e2c 92 wait(1);
villemejane 5:9663124717ae 93
villemejane 5:9663124717ae 94 lcd.Clear(LCD_COLOR_WHITE);
villemejane 5:9663124717ae 95 lcd.SetBackColor(LCD_COLOR_WHITE);
villemejane 5:9663124717ae 96 // DrawImage(my_logo, &lcd);
villemejane 5:9663124717ae 97 wait(1);
villemejane 5:9663124717ae 98
bcostm 0:b045ca817e2c 99 while(1)
bcostm 0:b045ca817e2c 100 {
villemejane 5:9663124717ae 101 getMatriceTempAMG8833(matriceGridEye);
villemejane 5:9663124717ae 102 DrawMatrice(&lcd);
villemejane 5:9663124717ae 103 for(int i = 1; i < 65; i++){
villemejane 5:9663124717ae 104 pc.printf("%d : %d //", i, matriceGridEye[i-1]);
villemejane 5:9663124717ae 105 if(i%8 == 0) pc.printf("\r\n");
villemejane 5:9663124717ae 106 }
villemejane 5:9663124717ae 107 pc.printf("\r\n");
villemejane 5:9663124717ae 108 wait(2);
bcostm 0:b045ca817e2c 109 }
bcostm 0:b045ca817e2c 110 }