School project.

Dependencies:   Timezone NTPClient BSP_DISCO_F746NG Grove_temperature

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?

UserRevisionLine numberNew 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 }