Programme detection distance Hugo BERARD

Dependencies:   mbed SRF02 BSP_DISCO_F746NG

Committer:
berard_hugo
Date:
Tue Jun 22 13:43:49 2021 +0000
Revision:
0:d19398bb9ba3
Programme detection distance

Who changed what in which revision?

UserRevisionLine numberNew contents of line
berard_hugo 0:d19398bb9ba3 1 #include "mbed.h"
berard_hugo 0:d19398bb9ba3 2 #include "SRF02.h"
berard_hugo 0:d19398bb9ba3 3 #include "stm32746g_discovery_lcd.h"
berard_hugo 0:d19398bb9ba3 4 #include "stm32746g_discovery_ts.h"
berard_hugo 0:d19398bb9ba3 5
berard_hugo 0:d19398bb9ba3 6 SRF02 sensor (0xE0, PB_9, PB_8);
berard_hugo 0:d19398bb9ba3 7 Serial LCD(USBTX, USBRX);
berard_hugo 0:d19398bb9ba3 8
berard_hugo 0:d19398bb9ba3 9 int main() {
berard_hugo 0:d19398bb9ba3 10 LCD.baud(115200);
berard_hugo 0:d19398bb9ba3 11 int distance = sensor.GetCentimeters();
berard_hugo 0:d19398bb9ba3 12 LCD.printf("Distance = %d cm\n",distance);
berard_hugo 0:d19398bb9ba3 13 wait(1);
berard_hugo 0:d19398bb9ba3 14
berard_hugo 0:d19398bb9ba3 15 TS_StateTypeDef TS_State;
berard_hugo 0:d19398bb9ba3 16 uint16_t x, y;
berard_hugo 0:d19398bb9ba3 17 uint8_t text[30];
berard_hugo 0:d19398bb9ba3 18 uint8_t status;
berard_hugo 0:d19398bb9ba3 19 uint8_t idx;
berard_hugo 0:d19398bb9ba3 20 uint8_t cleared;
berard_hugo 0:d19398bb9ba3 21 uint8_t prev_nb_touches = 1;
berard_hugo 0:d19398bb9ba3 22
berard_hugo 0:d19398bb9ba3 23 int old_val=0;
berard_hugo 0:d19398bb9ba3 24 int new_val=0;
berard_hugo 0:d19398bb9ba3 25
berard_hugo 0:d19398bb9ba3 26 // Initialisation du LCD intégrée dans le STM32F746G
berard_hugo 0:d19398bb9ba3 27 BSP_LCD_Init();
berard_hugo 0:d19398bb9ba3 28 BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
berard_hugo 0:d19398bb9ba3 29 BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
berard_hugo 0:d19398bb9ba3 30 BSP_LCD_Clear(LCD_COLOR_BLACK);
berard_hugo 0:d19398bb9ba3 31 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
berard_hugo 0:d19398bb9ba3 32 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
berard_hugo 0:d19398bb9ba3 33 BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
berard_hugo 0:d19398bb9ba3 34 BSP_LCD_DisplayStringAt(0, 1, (uint8_t *)"Capteur SRF02 distance", CENTER_MODE);
berard_hugo 0:d19398bb9ba3 35 BSP_LCD_SetTextColor(LCD_COLOR_RED);
berard_hugo 0:d19398bb9ba3 36 BSP_LCD_DisplayStringAt(0, 65, (uint8_t *)"en centimetre", CENTER_MODE);
berard_hugo 0:d19398bb9ba3 37 BSP_LCD_SetTextColor(LCD_COLOR_RED);
berard_hugo 0:d19398bb9ba3 38 BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"Avec obstacle", CENTER_MODE);
berard_hugo 0:d19398bb9ba3 39
berard_hugo 0:d19398bb9ba3 40 HAL_Delay(1000);
berard_hugo 0:d19398bb9ba3 41
berard_hugo 0:d19398bb9ba3 42 status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
berard_hugo 0:d19398bb9ba3 43 if (status != TS_OK) {
berard_hugo 0:d19398bb9ba3 44 BSP_LCD_Clear(LCD_COLOR_BLACK);
berard_hugo 0:d19398bb9ba3 45 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
berard_hugo 0:d19398bb9ba3 46 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
berard_hugo 0:d19398bb9ba3 47 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)"ALARM NON ACTIVE", CENTER_MODE);
berard_hugo 0:d19398bb9ba3 48 }
berard_hugo 0:d19398bb9ba3 49
berard_hugo 0:d19398bb9ba3 50 else {
berard_hugo 0:d19398bb9ba3 51 BSP_LCD_Clear(LCD_COLOR_BLUE);
berard_hugo 0:d19398bb9ba3 52 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
berard_hugo 0:d19398bb9ba3 53 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
berard_hugo 0:d19398bb9ba3 54 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)"ALARM ACTIVE", CENTER_MODE);
berard_hugo 0:d19398bb9ba3 55 }
berard_hugo 0:d19398bb9ba3 56
berard_hugo 0:d19398bb9ba3 57 HAL_Delay(1000);
berard_hugo 0:d19398bb9ba3 58
berard_hugo 0:d19398bb9ba3 59
berard_hugo 0:d19398bb9ba3 60 while(1) {
berard_hugo 0:d19398bb9ba3 61 BSP_LCD_Clear(LCD_COLOR_BLUE);
berard_hugo 0:d19398bb9ba3 62 int distance = sensor.GetCentimeters();
berard_hugo 0:d19398bb9ba3 63 old_val = new_val;
berard_hugo 0:d19398bb9ba3 64 new_val = distance;
berard_hugo 0:d19398bb9ba3 65
berard_hugo 0:d19398bb9ba3 66 if(new_val - old_val >= 5) BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)"Detecte", CENTER_MODE);
berard_hugo 0:d19398bb9ba3 67 sprintf((char*)text, "distance %d cm", distance);
berard_hugo 0:d19398bb9ba3 68 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
berard_hugo 0:d19398bb9ba3 69 BSP_LCD_DrawRect( distance*2, 100, 30,50);
berard_hugo 0:d19398bb9ba3 70 BSP_LCD_FillRect( distance*2, 100, 30,50);
berard_hugo 0:d19398bb9ba3 71 HAL_Delay(5000);
berard_hugo 0:d19398bb9ba3 72 }
berard_hugo 0:d19398bb9ba3 73 }
berard_hugo 0:d19398bb9ba3 74
berard_hugo 0:d19398bb9ba3 75
berard_hugo 0:d19398bb9ba3 76