Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BSP_DISCO_F746NG
Diff: main.cpp
- 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);
}
}