School project.
Dependencies: Timezone NTPClient BSP_DISCO_F746NG Grove_temperature
lcd_functions.h@4:1a12157689a7, 2021-01-13 (annotated)
- Committer:
- tuxx0046
- Date:
- Wed Jan 13 13:53:02 2021 +0000
- Revision:
- 4:1a12157689a7
- Parent:
- 3:02e7aac23ff9
- Child:
- 6:aecab8e3acad
Visual feedback on display added to the serial communication setup part.; Can now see the inputted building and room on display after setup.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tuxx0046 | 3:02e7aac23ff9 | 1 | /** |
tuxx0046 | 3:02e7aac23ff9 | 2 | @file lcd_functions.h |
tuxx0046 | 3:02e7aac23ff9 | 3 | |
tuxx0046 | 3:02e7aac23ff9 | 4 | @brief This file contains functions for graphicall dividing screen and outputting specific information to the display. |
tuxx0046 | 3:02e7aac23ff9 | 5 | LCD size is (480, 272) |
tuxx0046 | 3:02e7aac23ff9 | 6 | Available font sizes Font8, Font12, Font16, Font20 or Font24 |
tuxx0046 | 3:02e7aac23ff9 | 7 | |
tuxx0046 | 3:02e7aac23ff9 | 8 | @author Tu Tri Huynh |
tuxx0046 | 3:02e7aac23ff9 | 9 | |
tuxx0046 | 3:02e7aac23ff9 | 10 | @date 1/13/2021 |
tuxx0046 | 3:02e7aac23ff9 | 11 | */ |
tuxx0046 | 3:02e7aac23ff9 | 12 | #include "stm32746g_discovery_lcd.h" |
tuxx0046 | 3:02e7aac23ff9 | 13 | |
tuxx0046 | 4:1a12157689a7 | 14 | /** |
tuxx0046 | 4:1a12157689a7 | 15 | This function will initialize the LCD for use |
tuxx0046 | 4:1a12157689a7 | 16 | @date 1/13/2021 |
tuxx0046 | 4:1a12157689a7 | 17 | */ |
tuxx0046 | 3:02e7aac23ff9 | 18 | void lcd_initialize() |
tuxx0046 | 3:02e7aac23ff9 | 19 | { |
tuxx0046 | 3:02e7aac23ff9 | 20 | BSP_LCD_Init(); |
tuxx0046 | 4:1a12157689a7 | 21 | BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); |
tuxx0046 | 4:1a12157689a7 | 22 | BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); |
tuxx0046 | 4:1a12157689a7 | 23 | } |
tuxx0046 | 4:1a12157689a7 | 24 | |
tuxx0046 | 4:1a12157689a7 | 25 | /** |
tuxx0046 | 4:1a12157689a7 | 26 | This function will print LCD size in console terminal |
tuxx0046 | 4:1a12157689a7 | 27 | */ |
tuxx0046 | 4:1a12157689a7 | 28 | void lcd_get_screen_size() |
tuxx0046 | 4:1a12157689a7 | 29 | { |
tuxx0046 | 4:1a12157689a7 | 30 | printf("LCD X size : %zu\n\r",BSP_LCD_GetXSize()); //result: 480 |
tuxx0046 | 4:1a12157689a7 | 31 | printf("LCD Y size : %zu\n\r",BSP_LCD_GetYSize()); //result: 272 |
tuxx0046 | 3:02e7aac23ff9 | 32 | } |
tuxx0046 | 3:02e7aac23ff9 | 33 | |
tuxx0046 | 4:1a12157689a7 | 34 | /** |
tuxx0046 | 4:1a12157689a7 | 35 | This function will run a screen that tells user to input building and room for the unit |
tuxx0046 | 4:1a12157689a7 | 36 | @date 1/13/2021 |
tuxx0046 | 4:1a12157689a7 | 37 | */ |
tuxx0046 | 4:1a12157689a7 | 38 | void lcd_show_setup_screen() |
tuxx0046 | 4:1a12157689a7 | 39 | { |
tuxx0046 | 4:1a12157689a7 | 40 | /// Clears the LCD with specified color |
tuxx0046 | 4:1a12157689a7 | 41 | BSP_LCD_Clear(LCD_COLOR_BLACK); |
tuxx0046 | 4:1a12157689a7 | 42 | BSP_LCD_SetBackColor(LCD_COLOR_BLACK); |
tuxx0046 | 4:1a12157689a7 | 43 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
tuxx0046 | 4:1a12157689a7 | 44 | BSP_LCD_SetFont(&Font24); |
tuxx0046 | 4:1a12157689a7 | 45 | BSP_LCD_DisplayStringAt(0, 50, (uint8_t *)"SETUP", CENTER_MODE); |
tuxx0046 | 4:1a12157689a7 | 46 | BSP_LCD_SetFont(&Font16); |
tuxx0046 | 4:1a12157689a7 | 47 | BSP_LCD_DisplayStringAt(0, 200, (uint8_t *)"Please set the building and room", CENTER_MODE); |
tuxx0046 | 4:1a12157689a7 | 48 | } |
tuxx0046 | 4:1a12157689a7 | 49 | |
tuxx0046 | 4:1a12157689a7 | 50 | /** |
tuxx0046 | 4:1a12157689a7 | 51 | This function will runs the startup screen with project- and developer-name |
tuxx0046 | 4:1a12157689a7 | 52 | @date 1/13/2021 |
tuxx0046 | 4:1a12157689a7 | 53 | */ |
tuxx0046 | 3:02e7aac23ff9 | 54 | void lcd_show_startup_screen() |
tuxx0046 | 3:02e7aac23ff9 | 55 | { |
tuxx0046 | 3:02e7aac23ff9 | 56 | BSP_LCD_Clear(LCD_COLOR_BLACK); |
tuxx0046 | 3:02e7aac23ff9 | 57 | BSP_LCD_SetBackColor(LCD_COLOR_BLACK); |
tuxx0046 | 3:02e7aac23ff9 | 58 | BSP_LCD_SetTextColor(LCD_COLOR_ORANGE); |
tuxx0046 | 3:02e7aac23ff9 | 59 | BSP_LCD_DisplayStringAt(0, 100, (uint8_t *)"Light Control System", CENTER_MODE); |
tuxx0046 | 3:02e7aac23ff9 | 60 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
tuxx0046 | 3:02e7aac23ff9 | 61 | BSP_LCD_DisplayStringAt(0, 200, (uint8_t *)"by Tu Tri Huynh", CENTER_MODE); |
tuxx0046 | 3:02e7aac23ff9 | 62 | HAL_Delay(3000); |
tuxx0046 | 3:02e7aac23ff9 | 63 | } |
tuxx0046 | 3:02e7aac23ff9 | 64 | |
tuxx0046 | 4:1a12157689a7 | 65 | /** |
tuxx0046 | 4:1a12157689a7 | 66 | Sets up the upper left part of screen |
tuxx0046 | 3:02e7aac23ff9 | 67 | */ |
tuxx0046 | 3:02e7aac23ff9 | 68 | void lcd_upper_left() |
tuxx0046 | 3:02e7aac23ff9 | 69 | { |
tuxx0046 | 3:02e7aac23ff9 | 70 | BSP_LCD_SetTextColor(LCD_COLOR_BLUE); |
tuxx0046 | 3:02e7aac23ff9 | 71 | BSP_LCD_FillRect(0, 0, 240, 136); |
tuxx0046 | 3:02e7aac23ff9 | 72 | } |
tuxx0046 | 3:02e7aac23ff9 | 73 | |
tuxx0046 | 3:02e7aac23ff9 | 74 | // Sets up the upper right part of screen |
tuxx0046 | 3:02e7aac23ff9 | 75 | void lcd_upper_right() |
tuxx0046 | 3:02e7aac23ff9 | 76 | { |
tuxx0046 | 3:02e7aac23ff9 | 77 | BSP_LCD_SetBackColor(LCD_COLOR_WHITE); |
tuxx0046 | 3:02e7aac23ff9 | 78 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
tuxx0046 | 3:02e7aac23ff9 | 79 | BSP_LCD_FillRect(240, 0, 240, 136); |
tuxx0046 | 3:02e7aac23ff9 | 80 | } |
tuxx0046 | 3:02e7aac23ff9 | 81 | |
tuxx0046 | 3:02e7aac23ff9 | 82 | // Sets up the lower left part of screen |
tuxx0046 | 4:1a12157689a7 | 83 | void lcd_lower_left(char building[], char room[]) |
tuxx0046 | 3:02e7aac23ff9 | 84 | { |
tuxx0046 | 4:1a12157689a7 | 85 | BSP_LCD_Clear(LCD_COLOR_DARKBLUE); |
tuxx0046 | 4:1a12157689a7 | 86 | |
tuxx0046 | 3:02e7aac23ff9 | 87 | BSP_LCD_SetTextColor(LCD_COLOR_BLACK); |
tuxx0046 | 3:02e7aac23ff9 | 88 | BSP_LCD_FillRect(0, 136, 240, 136); |
tuxx0046 | 3:02e7aac23ff9 | 89 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
tuxx0046 | 4:1a12157689a7 | 90 | BSP_LCD_SetFont(&Font16); |
tuxx0046 | 4:1a12157689a7 | 91 | BSP_LCD_DisplayStringAt(5, 160, (uint8_t *)"Current location", LEFT_MODE); |
tuxx0046 | 3:02e7aac23ff9 | 92 | BSP_LCD_SetFont(&Font12); |
tuxx0046 | 4:1a12157689a7 | 93 | BSP_LCD_DisplayStringAt(5, 200, (uint8_t *)building, LEFT_MODE); |
tuxx0046 | 4:1a12157689a7 | 94 | BSP_LCD_DisplayStringAt(5, 210, (uint8_t *)room, LEFT_MODE); |
tuxx0046 | 4:1a12157689a7 | 95 | //BSP_LCD_DisplayStringAt(5, 200, (uint8_t *)"Light Control System", LEFT_MODE); |
tuxx0046 | 3:02e7aac23ff9 | 96 | // Reset fontsize |
tuxx0046 | 3:02e7aac23ff9 | 97 | BSP_LCD_SetFont(&Font16); |
tuxx0046 | 3:02e7aac23ff9 | 98 | } |
tuxx0046 | 3:02e7aac23ff9 | 99 | |
tuxx0046 | 3:02e7aac23ff9 | 100 | // Sets up the upper right part of screen |
tuxx0046 | 3:02e7aac23ff9 | 101 | void lcd_lower_right() |
tuxx0046 | 3:02e7aac23ff9 | 102 | { |
tuxx0046 | 3:02e7aac23ff9 | 103 | BSP_LCD_SetTextColor(LCD_COLOR_CYAN); |
tuxx0046 | 3:02e7aac23ff9 | 104 | BSP_LCD_FillRect(240, 136, 240, 136); |
tuxx0046 | 3:02e7aac23ff9 | 105 | } |
tuxx0046 | 3:02e7aac23ff9 | 106 | |
tuxx0046 | 3:02e7aac23ff9 | 107 | // Shows the main screen |
tuxx0046 | 3:02e7aac23ff9 | 108 | void lcd_show_main_screen() |
tuxx0046 | 3:02e7aac23ff9 | 109 | { |
tuxx0046 | 3:02e7aac23ff9 | 110 | BSP_LCD_Clear(LCD_COLOR_DARKBLUE); // Clear with color |
tuxx0046 | 3:02e7aac23ff9 | 111 | lcd_upper_left(); |
tuxx0046 | 4:1a12157689a7 | 112 | //lcd_lower_left(); |
tuxx0046 | 3:02e7aac23ff9 | 113 | lcd_upper_right(); |
tuxx0046 | 3:02e7aac23ff9 | 114 | lcd_lower_right(); |
tuxx0046 | 3:02e7aac23ff9 | 115 | |
tuxx0046 | 3:02e7aac23ff9 | 116 | |
tuxx0046 | 3:02e7aac23ff9 | 117 | /******** DEMO CODE EXAMPLE *****/ |
tuxx0046 | 3:02e7aac23ff9 | 118 | /* |
tuxx0046 | 3:02e7aac23ff9 | 119 | BSP_LCD_Clear(LCD_COLOR_DARKBLUE); // Clear and set color |
tuxx0046 | 3:02e7aac23ff9 | 120 | BSP_LCD_SetTextColor(LCD_COLOR_BLUE); |
tuxx0046 | 3:02e7aac23ff9 | 121 | BSP_LCD_DrawRect(10, 20, 50, 50); |
tuxx0046 | 3:02e7aac23ff9 | 122 | BSP_LCD_SetTextColor(LCD_COLOR_BROWN); |
tuxx0046 | 3:02e7aac23ff9 | 123 | BSP_LCD_FillCircle(80, 80, 50); |
tuxx0046 | 3:02e7aac23ff9 | 124 | BSP_LCD_SetTextColor(LCD_COLOR_YELLOW); |
tuxx0046 | 3:02e7aac23ff9 | 125 | BSP_LCD_DrawEllipse(150, 150, 50, 100); |
tuxx0046 | 3:02e7aac23ff9 | 126 | BSP_LCD_SetTextColor(LCD_COLOR_RED); |
tuxx0046 | 3:02e7aac23ff9 | 127 | BSP_LCD_FillCircle(200, 200, 40); |
tuxx0046 | 3:02e7aac23ff9 | 128 | HAL_Delay(2000); |
tuxx0046 | 3:02e7aac23ff9 | 129 | |
tuxx0046 | 3:02e7aac23ff9 | 130 | |
tuxx0046 | 3:02e7aac23ff9 | 131 | BSP_LCD_SetBackColor(LCD_COLOR_DARKBLUE); |
tuxx0046 | 3:02e7aac23ff9 | 132 | BSP_LCD_SetTextColor(LCD_COLOR_ORANGE); |
tuxx0046 | 3:02e7aac23ff9 | 133 | //BSP_LCD_DisplayStringAt(0, 6, (uint8_t *)output, RIGHT_MODE); |
tuxx0046 | 3:02e7aac23ff9 | 134 | //HAL_Delay(2000); |
tuxx0046 | 3:02e7aac23ff9 | 135 | */ |
tuxx0046 | 3:02e7aac23ff9 | 136 | } |