Dependencies: BSP_DISCO_F746NG
main.cpp@5:9663124717ae, 2020-01-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |