School project.

Dependencies:   Timezone NTPClient BSP_DISCO_F746NG Grove_temperature

Revision:
3:02e7aac23ff9
Child:
4:1a12157689a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lcd_functions.h	Wed Jan 13 12:11:54 2021 +0000
@@ -0,0 +1,123 @@
+/**
+@file lcd_functions.h
+
+@brief This file contains functions for graphicall dividing screen and outputting specific information to the display.
+LCD size is (480, 272)
+Available font sizes Font8, Font12, Font16, Font20 or Font24
+
+@author Tu Tri Huynh
+
+@date 1/13/2021
+*/
+#include "stm32746g_discovery_lcd.h"
+
+// Initializes the LCD for use
+void lcd_initialize()
+{
+    BSP_LCD_Init();
+    BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); // Initialize LCD layers
+    BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); // Select the LCD Layer
+}
+
+// Runs the startup screen with name and project name
+void lcd_show_startup_screen()
+{    
+    // Startup screen
+    BSP_LCD_Clear(LCD_COLOR_BLACK);
+    BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
+    BSP_LCD_SetTextColor(LCD_COLOR_ORANGE);
+    BSP_LCD_DisplayStringAt(0, 100, (uint8_t *)"Light Control System", CENTER_MODE);
+    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
+    BSP_LCD_DisplayStringAt(0, 200, (uint8_t *)"by Tu Tri Huynh", CENTER_MODE);
+    HAL_Delay(3000);
+}
+
+/*
+Screen is divided into four parts equal in size
+*/
+
+// Sets up the upper left part of screen
+
+void lcd_upper_left()
+{
+    BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
+    BSP_LCD_FillRect(0, 0, 240, 136);
+}
+
+void lcd_upper_left_smiley()
+{
+    BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
+    BSP_LCD_FillRect(0, 0, 240, 136);
+    BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
+    // Create yellow circle in the middle of field
+    BSP_LCD_FillCircle(120, 68, 50);
+    BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
+    BSP_LCD_FillCircle(120, 90, 15);
+    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
+    BSP_LCD_FillCircle(100, 58, 10);
+    BSP_LCD_FillCircle(140, 58, 10);
+    BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
+    BSP_LCD_FillCircle(100, 58, 3);
+    BSP_LCD_FillCircle(140, 58, 3);    
+}
+
+// Sets up the upper right part of screen
+void lcd_upper_right()
+{
+    BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
+    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
+    BSP_LCD_FillRect(240, 0, 240, 136);
+}
+
+// Sets up the lower left part of screen
+void lcd_lower_left()
+{
+    BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
+    BSP_LCD_FillRect(0, 136, 240, 136);
+    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
+    // Set font to be smaller for this part
+    BSP_LCD_SetFont(&Font12);
+    BSP_LCD_DisplayStringAt(5, 160, (uint8_t *)"Tu Tri Huynh", LEFT_MODE);
+    BSP_LCD_DisplayStringAt(5, 180, (uint8_t *)"Embedded Programming", LEFT_MODE);
+    BSP_LCD_DisplayStringAt(5, 200, (uint8_t *)"Light Control System", LEFT_MODE);
+    // Reset fontsize
+    BSP_LCD_SetFont(&Font16);
+}
+
+// Sets up the upper right part of screen
+void lcd_lower_right()
+{
+    BSP_LCD_SetTextColor(LCD_COLOR_CYAN);
+    BSP_LCD_FillRect(240, 136, 240, 136);
+}
+
+// Shows the main screen
+void lcd_show_main_screen()
+{
+    BSP_LCD_Clear(LCD_COLOR_DARKBLUE); // Clear with color
+    lcd_upper_left();
+    lcd_lower_left();
+    lcd_upper_right();
+    lcd_lower_right();
+    
+    
+    /******** DEMO CODE EXAMPLE *****/
+    /*
+    BSP_LCD_Clear(LCD_COLOR_DARKBLUE); // Clear and set color
+    BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
+    BSP_LCD_DrawRect(10, 20, 50, 50);
+    BSP_LCD_SetTextColor(LCD_COLOR_BROWN);
+    BSP_LCD_FillCircle(80, 80, 50);
+    BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
+    BSP_LCD_DrawEllipse(150, 150, 50, 100);
+    BSP_LCD_SetTextColor(LCD_COLOR_RED);
+    BSP_LCD_FillCircle(200, 200, 40);
+    HAL_Delay(2000);
+    
+    
+    BSP_LCD_SetBackColor(LCD_COLOR_DARKBLUE);
+    BSP_LCD_SetTextColor(LCD_COLOR_ORANGE);
+    //BSP_LCD_DisplayStringAt(0, 6, (uint8_t *)output, RIGHT_MODE);
+    //HAL_Delay(2000);
+    */
+}
\ No newline at end of file