School project.

Dependencies:   Timezone NTPClient BSP_DISCO_F746NG Grove_temperature

Committer:
tuxx0046
Date:
Fri Jan 15 09:27:26 2021 +0000
Revision:
10:137cf2c92871
Parent:
6:aecab8e3acad
Child:
13:41debc0b9063
Add serial communication service functions.; Major changes to comments.; Minor fixes to code to clear buffer in console when typing etc.;

Who changed what in which revision?

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