From a46b9b0023ffe24d008e9b5d05848644762c6f3a Mon Sep 17 00:00:00 2001 From: Charlez Kwan Date: Thu, 16 Jan 2020 15:36:00 +0100 Subject: [PATCH] main: added functions for drawing different elements --- Src/main.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/Src/main.c b/Src/main.c index 30e4888..213ea04 100644 --- a/Src/main.c +++ b/Src/main.c @@ -76,6 +76,8 @@ UART_HandleTypeDef huart1; PAINT_TIME sPaint_time; RTC_TimeTypeDef sTime; +RTC_TimeTypeDef sSetStart[7] = {{1,2,3},{13,2,3},{21,2,3},{25,2,3},{1,2,3},{1,2,3},{1,2,3}}; +RTC_TimeTypeDef sSetEnd[7] = {{22,22,23},{23,2,23},{2,22,3},{25,22,3},{21,2,3},{21,2,3},{21,2,3}}; RTC_DateTypeDef sDate; const uint8_t WeekLetter[7][2]={ "Mo", @@ -86,7 +88,6 @@ const uint8_t WeekLetter[7][2]={ "Sa", "So" }; - //Create a new image cache UBYTE *BlackImage; UWORD Imagesize = ((EPD_WIDTH % 8 == 0) ? (EPD_WIDTH / 8) : (EPD_WIDTH / 8 + 1)) * EPD_HEIGHT; @@ -102,6 +103,9 @@ static void MX_USART1_UART_Init(void); static void MX_RTC_Init(void); /* USER CODE BEGIN PFP */ void Paint_DrawTimeArray(void); +void Paint_DrawWeekday(void); +void Paint_DrawCurrent(uint8_t weekday); +void Paint_DrawLoad(bool draw_yes); bool System_SecondHeartbeat(void); /* USER CODE END PFP */ @@ -182,6 +186,9 @@ int main(void) Paint_DrawTimeArray(); + Paint_DrawWeekday(); + Paint_DrawCurrent(0); + Paint_DrawLoad(System_SecondHeartbeat()); EPD_Display(BlackImage); DEV_Delay_ms(1000); //Analog clock 1s // printf("500ms..\r\n"); @@ -202,13 +209,43 @@ int main(void) } void Paint_DrawTimeArray(){ for(int i=0; i<7; i++){ + sPaint_time.Hour = sSetStart[i].Hours; + sPaint_time.Min = sSetStart[i].Minutes; + sPaint_time.Sec = sSetStart[i].Seconds; Paint_ClearWindows(5, i*20 + 5, 5 + Font20.Width * 7, i*20 + 5 + Font20.Height, WHITE); Paint_DrawTime(5, i*20 + 5, &sPaint_time, &Font20, WHITE, BLACK); + sPaint_time.Hour = sSetEnd[i].Hours; + sPaint_time.Min = sSetEnd[i].Minutes; + sPaint_time.Sec = sSetEnd[i].Seconds; Paint_ClearWindows(100, i*20 + 5, 100 + Font20.Width * 7, i*20 + 5 + Font20.Height, WHITE); Paint_DrawTime(100, i*20 + 5, &sPaint_time, &Font20, WHITE, BLACK); } } + +void Paint_DrawWeekday(){ + for(uint8_t i=0; i<7 ; i++){ + Paint_DrawChar(176,20*i+5,WeekLetter[i][0],&Font20,WHITE,BLACK); + Paint_DrawChar(187,20*i+5,WeekLetter[i][1],&Font20,WHITE,BLACK); + } + +} + +void Paint_DrawCurrent(uint8_t weekday){ + sPaint_time.Hour = sTime.Hours; + sPaint_time.Min = sTime.Minutes; + sPaint_time.Sec = sTime.Seconds; + Paint_ClearWindows(50, 150, 50 + Font24.Width * 7, 150 + Font24.Height, WHITE); + Paint_DrawTime(50,150, &sPaint_time, &Font24, WHITE, BLACK); + Paint_DrawChar(140,150,WeekLetter[weekday][0],&Font20,WHITE,BLACK); + Paint_DrawChar(152,150,WeekLetter[weekday][1],&Font20,WHITE,BLACK); +} + +void Paint_DrawLoad(bool draw_yes){ + Paint_ClearWindows(50, 180, 70, 200, WHITE); + Paint_DrawRectangle(50, 180, 70, 200, BLACK, draw_yes, DOT_PIXEL_1X1); +} + bool System_SecondHeartbeat(){ if(sTime.Seconds%2 == 0){ return true; @@ -274,6 +311,10 @@ static void MX_RTC_Init(void) /* USER CODE END RTC_Init 0 */ RTC_TimeTypeDef sTime = {0}; +// RTC_TimeTypeDef sSet[7] = {{1,2,3},{1,2,3},{1,2,3},{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; +// sSet[0].Hours=1; +// sSet[0].Minutes=2; +// sSet[0].Seconds=3; RTC_DateTypeDef DateToUpdate = {0}; /* USER CODE BEGIN RTC_Init 1 */