Basic example showing how to drive the LCD.

Dependencies:   BSP_DISCO_F746NG

Revision:
5:9663124717ae
Parent:
0:b045ca817e2c
--- a/main.cpp	Thu Jun 08 13:47:01 2017 +0000
+++ b/main.cpp	Tue Jan 14 09:07:37 2020 +0000
@@ -1,46 +1,110 @@
 #include "mbed.h"
 #include "LCD_DISCO_F746NG.h"
+#include "IOGS_LEnsE_GUI.hpp"
 
 LCD_DISCO_F746NG lcd;
 
-DigitalOut led1(LED1);
+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()
-{  
-    led1 = 1;
+{
+    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 *)"MBED EXAMPLE", CENTER_MODE);
+    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)
     {
-      lcd.Clear(LCD_COLOR_BLUE);
-      lcd.SetBackColor(LCD_COLOR_BLUE);
-      lcd.SetTextColor(LCD_COLOR_WHITE);
-      wait(0.3);
-      lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"DISCOVERY STM32F746NG", CENTER_MODE);
-      wait(1);
-
-      lcd.Clear(LCD_COLOR_GREEN);
-      
-      lcd.SetTextColor(LCD_COLOR_BLUE);
-      lcd.DrawRect(10, 20, 50, 50);
-      wait(0.1);
-      lcd.SetTextColor(LCD_COLOR_BROWN);
-      lcd.DrawCircle(80, 80, 50);
-      wait(0.1);
-      lcd.SetTextColor(LCD_COLOR_YELLOW);
-      lcd.DrawEllipse(150, 150, 50, 100);
-      wait(0.1);
-      lcd.SetTextColor(LCD_COLOR_RED);
-      lcd.FillCircle(200, 200, 40);
-      wait(1);
-
-      lcd.SetBackColor(LCD_COLOR_ORANGE);
-      lcd.SetTextColor(LCD_COLOR_CYAN);
-      lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"HAVE FUN !!!", CENTER_MODE);
-      wait(1);
-
-      led1 = !led1;
+        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);
     }
 }